# Setup ## Prerequisites - Docker + Docker Compose - Spotify Developer account (for a Client ID/Secret) ## Start services ```bash docker compose up -d --build ``` ## Database ```bash docker compose exec php php bin/console doctrine:database:create --if-not-exists docker compose exec php php bin/console doctrine:migrations:diff --no-interaction docker compose exec php php bin/console doctrine:migrations:migrate --no-interaction ``` ### Switching database drivers - `DATABASE_DRIVER=postgres` (default) continues to use the Postgres 16 service from `docker-compose.yml` and reads credentials from `DATABASE_URL`. - `DATABASE_DRIVER=sqlite` runs Doctrine against a local SQLite file at `var/data/database.sqlite`. `DATABASE_URL` is ignored; override the SQLite file path with `DATABASE_SQLITE_PATH` if desired. ## Admin user ```bash docker compose exec php php bin/console app:promote-admin you@example.com ``` ## Moderator (optional) ```bash docker compose exec php php bin/console app:promote-moderator mod@example.com ``` ## Spotify credentials - Prefer admin UI: open `/admin/settings` and enter Client ID/Secret. (Stored in DB) - Fallback to env vars: ```bash export SPOTIFY_CLIENT_ID=your_client_id export SPOTIFY_CLIENT_SECRET=your_client_secret ``` ## Optional feature flags - Disable public registration by setting an env variable before starting Symfony: ```bash export APP_ALLOW_REGISTRATION=0 # set to 1 (default) to re-enable ```