- Real-time multiplayer music guessing game
- Websocket-based communication for instant updates
- Flexible scoring system with partial matching
- In-game commands for track management and hints
- Genre and year-based track selection
- PHP 8.2+
- Composer
- Node.js and npm
- SQLite
Sequentially
composer installinstalls PHP dependenciesnpm installinstalls NodeJS dependencies- Place your music in
storage/app/music(MP3 files) or use the demo track touch database/database.sqlitecreates an empty databasemv .env.example .envuse the default env filephp artisan migrate:freshrebuilds the databasephp artisan reverb:installregenerates reverb keys and config (Answer Yes)php artisan music:scanscans your music, extracts ID3 tags and inserts in the databasephp artisan key:generategenerates a crypto key
When you install this project, a demo track will be automatically copied to the music directory. This allows you to immediately start playing without having to add your own music files.
Run these commands in separate terminal windows:
php artisan serveruns the local webserverphp artisan reverb:startruns the websocketnpm run devruns the JS/CSS tools
Access the application at http://localhost:8000
/next [genre|year] [genre|year]Select a new random track/ffFast forward the current track/clueReveal 20% of the track info (reduces potential points)/giveupReveal track info and end the current round/resetReset all user scores to zero
Note that the genre/year is not saved.
Consider the following sequence :
- call
/next 2000 house - The next track will be of genre containing House in decade 2000-2009
- call
/next - The next track will be totally random
Matching is not case sensitive.
- Exact matches for name, remix, or artist: 1 point each (max 3 points per track)
- Partial word matches (for a little of
nwords):- Correct word, correct position:
1/npoint - Correct word, wrong position:
1/n/2point
- Correct word, correct position:
A minimum score of 0.33 is required for an answer to be accepted.
This application has no built-in authentication. It is intended for local network use only. To secure it for public deployment, consider implementing:
- HTTP Basic Authentication
- User registration and login system

