77 lines
2.4 KiB
Markdown
77 lines
2.4 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
docker compose up -d --build
|
|
```
|
|
|
|
2) Create the database schema
|
|
|
|
```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
|
|
```
|
|
|
|
3) Promote an admin (to access Site Settings)
|
|
|
|
```bash
|
|
docker compose exec php php bin/console app:promote-admin you@example.com
|
|
```
|
|
|
|
4) 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`.
|
|
|
|
5) Visit `http://localhost:8000` to search for albums.
|
|
|
|
## 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.
|
|
- Requests pass through a throttle and 429 Retry-After backoff. GET responses are cached.
|
|
- Tunables (optional):
|
|
|
|
```bash
|
|
# seconds per window (default 30)
|
|
SPOTIFY_RATE_WINDOW_SECONDS=30
|
|
# max requests per window (default 50)
|
|
SPOTIFY_RATE_MAX_REQUESTS=50
|
|
# max requests for sensitive endpoints (default 20)
|
|
SPOTIFY_RATE_MAX_REQUESTS_SENSITIVE=20
|
|
```
|
|
|
|
## 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`
|
|
- Rate limits & caching: `docs/07-rate-limits-and-caching.md`
|
|
- Troubleshooting: `docs/08-troubleshooting.md`
|
|
|
|
## License
|
|
|
|
MIT
|
|
|