A responsive web application that allows users to search for tracks and add them to their Spotify playback queue. Built with Flask backend and vanilla JavaScript frontend, featuring a modern, mobile-first design optimized for both desktop and mobile devices.
Previously hosted at movik.tvei.to via AWS S3
- Real-time Track Search - Search Spotify's extensive music library with instant results
- Queue Management - Add tracks directly to your active Spotify playback queue
- Responsive Design - Optimized for both mobile and desktop with touch-friendly controls
- Current Track Display - View what's currently playing with album art and progress bar
- Queue Sidebar - See and manage upcoming tracks in your queue (desktop)
- Modern UI - Clean, Spotify-inspired interface with smooth animations
- Flask - Python web framework
- Spotify Web API - Integration with Spotify services
- OAuth 2.0 - Secure authentication flow
- python-dotenv - Environment variable management
- Vanilla JavaScript - No framework dependencies
- CSS3 - Modern styling with flexbox/grid layouts
- Responsive Design - Mobile-first approach with media queries
- UI improvements and responsive design generated by Claude (Anthropic)
- Features include: Sticky header/search, dynamic sizing, mobile-optimized buttons and text
- Python 3.7 or higher
- Spotify Premium account (required for playback control)
- Spotify Developer account and registered application
-
Clone the repository
git clone https://github.com/ThorTveito/spotify-queue-webapp.git cd spotify-queue-webapp -
Install dependencies
pip install flask requests python-dotenv
-
Set up Spotify Developer Application
- Go to Spotify Developer Dashboard
- Create a new application
- Add
http://localhost:5000/callbackto Redirect URIs - Note your Client ID and Client Secret
-
Configure environment variables
Create a
.envfile in the root directory:SPOTIFY_CLIENT_ID=your_client_id_here SPOTIFY_CLIENT_SECRET=your_client_secret_here SPOTIFY_REDIRECT_URI=http://localhost:5000/callback ENV_NAME=DEV
-
Start the Flask server
python backend/app.py
-
Open your browser
Navigate to
http://localhost:5000 -
Authenticate with Spotify
- Click the login/authorize button
- Grant the necessary permissions
- Start searching and queueing tracks!
spotify-queue-webapp/
├── backend/
│ └── app.py # Flask application and API endpoints
├── static/
│ ├── styles.css # Responsive CSS styling
│ └── images/
│ ├── Bakgrunnsbilde.png
│ ├── file.svg
│ └── Screenshot_20250803_123619_Brave.jpg
├── templates/
│ └── index.html # Main application template
├── .env # Environment variables (create this)
├── .gitignore
├── LICENSE
└── README.md
- Sticky Header & Search - Always accessible while scrolling
- Large Touch Targets - Buttons and controls optimized for touch
- Enhanced Readability - Larger text and spacing on mobile devices
- Smooth Animations - Transitions and visual feedback
- Compact Layout - Efficient use of screen space
- Sidebar Queue - Slide-out panel showing upcoming tracks
- Hover Effects - Visual feedback on interactive elements
- Keyboard Navigation - Full keyboard support
- Debounced search input for performance
- Album artwork thumbnails
- Track, artist, and album information display
- One-click add to queue functionality
- Real-time queue updates
- Current track display with album art
- Progress bar with elapsed/total time
- Play/pause status indicator
- Queue toggle button
GET /- Main application pageGET /callback- OAuth callback handlerGET /search- Search Spotify tracksPOST /queue- Add track to playback queueGET /current-track- Get currently playing trackGET /queue-status- Get current queue status
The application requires the following Spotify API scope:
user-modify-playback-state- Add tracks to playback queue
- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
- Mobile browsers (iOS Safari, Chrome Mobile)
export FLASK_ENV=development
python backend/app.pyUI improvements and responsive design features were generated by Claude (Anthropic AI), including:
- Sticky header and search bar positioning
- Mobile-optimized button sizes and text scaling
- Responsive layout with dynamic sizing
- Z-index layering for proper element stacking
This application was previously hosted at movik.tvei.to using AWS S3 static hosting.
For production deployment:
- Update
SPOTIFY_REDIRECT_URIin your Spotify app settings - Configure production environment variables
- Use a production WSGI server (Gunicorn, uWSGI)
- Set up HTTPS/SSL certificates
- Configure CORS settings as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Spotify Web API for music data and playback control
- Flask framework for backend infrastructure
- Claude (Anthropic) for UI/UX improvements and responsive design
Contributions are welcome! Please feel free to submit a Pull Request.
For issues or questions, please open an issue on the GitHub repository.
Note: This application requires an active Spotify Premium subscription to control playback and add tracks to the queue.
