# Tonehaus — Music Ratings (Symfony 7) Discover albums via Spotify, write and manage reviews, and administer your site. Built with Symfony 7, Twig, Doctrine, and Bootstrap. ## Quick start (Docker Compose) 1) Start the stack ```bash docker compose up -d --build ``` 2) Open the app - App URL: `http://localhost:8085` - Health: `http://localhost:8085/healthz` 3) Create your first admin - Sign Up through Tonehaus ```bash docker compose exec tonehaus php bin/console app:promote-admin you@example.com ``` 4) Configure Spotify - Go to `http://localhost:8085/admin/settings` and enter your Spotify Client ID/Secret, or - Set env vars in `.env`: `SPOTIFY_CLIENT_ID`, `SPOTIFY_CLIENT_SECRET` 5) (Optional) Seed demo data ```bash docker compose exec tonehaus php bin/console app:seed-demo-users --count=50 docker compose exec tonehaus php bin/console app:seed-demo-albums --count=40 --attach-users docker compose exec tonehaus php bin/console app:seed-demo-reviews --cover-percent=70 --max-per-album=8 ``` Notes: - The packaged image uses SQLite by default and runs Doctrine migrations on start (idempotent). - To switch to Postgres, set `DATABASE_DRIVER=postgres` and provide `DATABASE_URL`. ## Features - Spotify search with advanced filters (album, artist, year range) and per‑album aggregates (avg/count) - Album page with details, tracklist, reviews list, and inline new review (logged-in) - Auth modal (Login/Sign up) with remember‑me; no separate pages - Role-based access: authors manage their own reviews; moderators/admins can moderate content - Admin Site Settings: manage Spotify credentials and public registration toggle - User Dashboard: profile updates and password change - Light/Dark theme toggle (cookie-backed) ## Documentation - Setup and configuration: `docs/setup.md` - Feature overview: `docs/features.md` - Authentication and users: `docs/auth-and-users.md` - Spotify integration: `docs/spotify-integration.md` - Reviews and albums: `docs/reviews-and-albums.md` - Admin & site settings: `docs/admin-and-settings.md` - Troubleshooting: `docs/troubleshooting.md` - Architecture: `docs/architecture.md` - Deployment: `docs/deployment.md` ## Environment overview - `APP_ENV` (dev|prod), `APP_SECRET` (required) - `SPOTIFY_CLIENT_ID`, `SPOTIFY_CLIENT_SECRET` - `APP_ALLOW_REGISTRATION` (1|0) — DB setting can be overridden by env - `DATABASE_DRIVER` (sqlite|postgres), `DATABASE_URL` (when using Postgres) - `DATABASE_SQLITE_PATH` (optional, defaults to `var/data/database.sqlite`) - `RUN_MIGRATIONS_ON_START` (1|0, defaults to 1) ## License MIT