- 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 install
installs PHP dependenciesnpm install
installs NodeJS dependencies- Place your music in
storage/app/music
(MP3 files) touch database/database.sqlite
creates an empty databasemv .env.example .env
use the default env filephp artisan migrate:fresh
rebuilds the databasephp artisan reverb:install
regenerates reverb keys and config (Answer Yes)php artisan music:scan
scans your music, extracts ID3 tags and inserts in the databasephp artisan key:generate
generates a crypto key
Run these commands in separate terminal windows:
php artisan serve
runs the local webserverphp artisan reverb:start
runs the websocketnpm run dev
runs the JS/CSS tools
Access the application at http://localhost:8000
/next [genre|year] [genre|year]
Select a new random track/ff
Fast forward the current track/clue
Reveal 20% of the track info (reduces potential points)/giveup
Reveal track info and end the current round/reset
Reset 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
n
words):- Correct word, correct position:
1/n
point - Correct word, wrong position:
1/n/2
point
- 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