boris dae8f3d999
All checks were successful
CI - Build Tonehaus Docker image / tonehaus-ci-build (push) Successful in 2m0s
wtf
2025-11-28 02:00:11 +00:00
2025-10-31 22:17:43 +00:00
wtf
2025-11-28 02:00:11 +00:00
2025-11-01 00:28:29 +00:00
wtf
2025-11-28 02:00:11 +00:00
wtf
2025-11-28 02:00:11 +00:00
wtf
2025-11-28 02:00:11 +00:00
wtf
2025-11-28 02:00:11 +00:00
wtf
2025-11-28 02:00:11 +00:00
wtf
2025-11-28 02:00:11 +00:00
2025-11-27 23:42:17 +00:00
2025-11-27 23:42:17 +00:00
2025-11-27 23:42:17 +00:00
wtf
2025-11-28 02:00:11 +00:00
2025-10-31 21:45:09 +00:00
wtf
2025-11-28 02:00:11 +00:00

Tonehaus — Music Ratings

Discover albums from Spotify, read and write reviews, and manage your account. Built with Symfony 7, Twig, Doctrine, and Bootstrap.

Quick start

  1. Start the stack
docker compose up -d --build
  1. Create the database schema
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
  1. Promote an admin (to access Site Settings)
docker compose exec php php bin/console app:promote-admin you@example.com
  1. Configure Spotify API credentials (admin only)
  • Open http://localhost:8000/admin/settings and enter your Spotify Client ID/Secret.
  • Alternatively, set env vars for the PHP container: SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET.
  1. Visit http://localhost:8000 to search for albums.

  2. (Optional) Seed demo data

docker compose exec php php bin/console app:seed-demo-users --count=50
docker compose exec php php bin/console app:seed-demo-albums --count=40 --attach-users
docker compose exec php php bin/console app:seed-demo-reviews --cover-percent=70 --max-per-album=8

Database driver

  • Set DATABASE_DRIVER=postgres (default) to keep using the Postgres 16 container defined in docker-compose.yml.
  • Set DATABASE_DRIVER=sqlite to run against a self-contained SQLite file stored at var/data/database.sqlite.
  • When DATABASE_DRIVER=sqlite, the DATABASE_URL env var is ignored. Doctrine will automatically create and use the SQLite file; override the default location with DATABASE_SQLITE_PATH if needed.

Features

  • Spotify search with Advanced filters (album, artist, year range) and per-album aggregates (avg/count)
  • Album page with details, reviews list, and inline new review (logged in)
  • Auth modal (Login/Sign up) with remember-me cookie, no separate pages
  • Role-based access: authors manage their own reviews, admins can manage any
  • Admin Site Settings to manage Spotify credentials in DB
  • User Dashboard to update profile and change password (requires current password)
  • Light/Dark theme toggle in Settings (cookie-backed)
  • Bootstrap UI

Rate limiting & caching

  • Server-side Client Credentials; access tokens are cached.

Docs

See /docs for how-tos and deeper notes:

  • Setup and configuration: docs/01-setup.md
  • Features and UX: docs/02-features.md
  • Authentication and users: docs/03-auth-and-users.md
  • Spotify integration: docs/04-spotify-integration.md
  • Reviews and albums: docs/05-reviews-and-albums.md
  • Admin & site settings: docs/06-admin-and-settings.md
  • Troubleshooting: docs/07-troubleshooting.md

License

MIT

Description
A website for reviewing music albums using the Symfony PHP framework and related bundles.
https://tonehaus.dev.ntbx.io
Readme MIT 1.1 MiB
Languages
PHP 69.3%
Twig 25.8%
CSS 3.1%
Dockerfile 1.8%