A web-based karaoke application that transforms any device into a karaoke system.
Important
This software is intended for personal, non-commercial use only. Users are responsible for ensuring compliance with applicable copyright laws and terms of service in their jurisdiction.**
My Way, Philippines' most deadly karaoke song, playing in PWA Karaoke.
- Use your phone or tablet as a controller and any web-capable device as a display
- Easy to use and slick user interface
- Search and queue songs video streaming platforms
- Supports multiple rooms with password protection
- Operate entirely within the browser
Coming soon. In the meantime, you may use the "Clone with Git" or "Download ZIP" methods below.
To download the application via git, simply clone it using git clone https://github.com/username/pwa-karaoke.git.
You can download the source code as a ZIP file by clicking "Code" → "Download ZIP" on the GitHub repository page.
- Minimum 2GB RAM, 1 vCPU
- Docker (if using Docker or Docker Compose)
See the manual setup prerequisites when running without Docker.
The recommended way to run PWA Karaoke is through Docker Compose. This method simplifies the setup process and ensures that all dependencies are correctly configured.
docker-compose up -dThis will start the backend and Caddy web server.
Visit http://localhost or http://$DOMAIN (where $DOMAIN is your configured domain) to access the application.
If you have a custom setup that doesn't use Docker Compose, you can run the backend and frontend services separately using Docker.
# Build the application
docker build -t pwa-karaoke .
# Run the container
docker run -d -p 8000:8000 --name pwa-karaoke pwa-karaokeVisit http://localhost:8000 to access the application.
A manual setup is also possible. This method requires more steps but allows for greater customization.
Ensure you have the following installed:
- Python 3.11+
- Node.js 20+
- Docker (optional, for containerized deployment)
To set up PWA Karaoke manually, follow the setup procedure below:
# Build frontend and bundle into backend
cd frontend
npm install
npm run build:prod
# Start the server
cd ../backend
pip install -r requirements.txt
python main.pyVisit http://localhost:8000 to access the application.
After starting the server, you will be prompted to create or join a room. Rooms allows multiple groups to create karaoke sessions independently.
You can either browse our list of publically available rooms or enter a room ID to join a private room.
Tip
You can also add passwords to public rooms to restrict access while still being listed.
When asked, you will be prompted with the following details:
- Room ID: You will be provided with a randomly generated room ID or you can set your own.
- Room Visibility: You can choose to make your room be shown in public listings or be private.
- Room Password: Optionally, you can set a password for your room to restrict access.
Once you create or join a room, you are prompted to enter the room in two modes:
- Display Mode: For TVs, projectors, or multiple screens to show the video playback and song queue. It supports playing to multiple displays in near real-time.
- Controller Mode: For phones or tablets to search for songs and control playback.
To contribute to PWA Karaoke, fork the repository and create a new branch for your changes. See the individual README files in the backend/ and frontend/ directories for setup instructions. After making your changes, submit a pull request with a clear description of what you've modified.
This project is licensed under the MIT License - see the LICENSE file for details.
Disclaimer: This software is provided "as is" without warranty of any kind. Use at your own risk and ensure compliance with all applicable laws and terms of service.
© 2025 Ned Palacios