Jamable is a real-time music synchronization application that allows you to listen to music with friends simultaneously. It supports various sources including YouTube, SoundCloud, and Spotify.
The application is configured using a single .env file in the root directory. This file controls both the frontend build variables and backend runtime configuration.
Copy the example configuration file:
cp .env.example .envOpen .env and adjust the settings according to your environment.
These settings are critical for correct routing and CORS configuration.
DOMAIN_NAME: The main domain where the frontend will be accessible (e.g.,localhostorjamable.space).API_DOMAIN: The domain (and port) where the backend API is accessible (e.g.,localhost:8000orapi.jamable.space).PROTOCOL:httporhttps.
Example for Local Development:
DOMAIN_NAME=localhost
API_DOMAIN=localhost:8000
PROTOCOL=httpExample for Production (with custom domains):
DOMAIN_NAME=jamable.space
API_DOMAIN=api.jamable.space
PROTOCOL=httpsALLOWED_ORIGINS: Comma-separated list of allowed origins for CORS (e.g.,https://jamable.spaceor*).SPOTIPY_CLIENT_ID&SPOTIPY_CLIENT_SECRET: (Optional) Required for better Spotify support. Get credentials from Spotify Dashboard.PROXY_URL: (Optional) Proxy for media fetching if needed.
To build and start the application:
docker compose up -d --buildThis command will:
- Build the Frontend (React/Vite) with the
VITE_API_URLinjected from your.env. - Build the Backend (FastAPI).
- Start Redis, Backend, and Frontend containers.
- Frontend: http://localhost:3000 (or the port defined in docker-compose)
- Backend API: http://localhost:8000
If you change the DOMAIN_NAME or API_DOMAIN in .env, you must rebuild the frontend container for changes to take effect:
docker compose up -d --build frontendfrontend/: React application (Vite, TypeScript, TailwindCSS).backend/: Python application (FastAPI, Socket.IO, yt-dlp).docker-compose.yml: Orchestration for services.