Beatify
๐ต Music year-guessing party game for Home Assistant โ scan a QR code, hear a song, guess the year. Runs on Music Assistant, Sonos & Alexa speakers.
Install / Use
/learn @mholzi/BeatifyREADME
Beatify
<img src="images/beatify-logo.png" alt="Beatify Logo" width="400">Multiplayer Music Trivia Quiz Game for Home Assistant
Turn any gathering into an unforgettable music trivia experience. Guests scan, songs play, everyone competes. It's that simple.
Get Started โข Supported Speakers โข See It In Action
</div> <br>
What Is Beatify?
Beatify is an open-source music quiz game for Home Assistant โ a multiplayer music trivia party game that turns your smart speakers into a game show.
A song plays through your Sonos, Alexa, or Music Assistant speakers. Everyone races to guess the release year. Points fly. Streaks build. Champions emerge.
No apps to download. No accounts to create. Just scan a QR code and play.
<br>
Why Parties Are Better With Beatify
Zero Friction Entry โ Guests scan a QR code. That's it. No apps. No accounts. No WiFi password drama. 10 seconds from scan to playing.
Uses Your Existing Smart Speakers โ Works with Music Assistant, Sonos, and Alexa speakers you already have. See Supported Speakers for details.
Your Music, Your Vibe โ Spotify, Apple Music, YouTube Music, or Tidal playlists. Curated song packs included. Create your own.
Runs Locally โ No cloud. No subscription. No data leaves your network. Fast, private, reliable.
Everyone Competes โ Points, streaks, power-ups, and a dramatic finale with podium and stats. Real competition, real laughs.
<br>
Setup In Home Assistant
Step 1: Install
Via HACS (Recommended) โ One click to add the repository, then install:
Or manually:
HACS โ โฎ Menu โ Custom Repositories
โ URL: https://github.com/mholzi/beatify
โ Category: Integration
โ Install "Beatify"
โ Restart Home Assistant
Manual
cd /config/custom_components
git clone https://github.com/mholzi/beatify.git beatify
# Restart Home Assistant
Step 2: Configure
Or manually:
Settings โ Devices & Services โ Add Integration โ "Beatify"
That's it. Beatify is now installed.
<br>
Opening Beatify (Admin)
After installation, access Beatify to start a game:
Option 1: HA Sidebar (Recommended)
Beatify automatically adds itself to your Home Assistant sidebar.
- Open Home Assistant
- Look for Beatify in the left sidebar
- Click to open the launcher
- Hit "Open Beatify" โ the game opens in a fullscreen new tab (no HA chrome)
Tip: If you don't see Beatify in the sidebar, restart Home Assistant.
Option 2: Direct URL
http://YOUR-HA-IP:8123/beatify/admin
Option 3: HA Companion App
- Open the HA Companion app
- Tap the menu (โฐ) or swipe from left
- Select Beatify from the sidebar
Starting a Game
- Select a speaker โ Only supported speakers appear
- Choose your music service โ Spotify or Apple Music (depends on speaker)
- Pick playlists โ Select one or more
- Adjust settings โ Language, timer, difficulty
- Start Game โ Share the QR code with guests
Print it. Display it. Share it.
</div><br>
The Experience
<div align="center">For Players
<!-- SCREENSHOT: Player's phone showing the year slider and album art --> <img src="images/player-gameplay.png" alt="Player guessing screen" width="350">Slide to guess. Tap to submit. Pray you're right.
</div>The Rush A song starts playing. The clock is ticking. You know this song... but was it '85 or '87?
The Strategy Answer fast for bonus points. Hit a streak for multipliers. Feeling confident? Bet double-or-nothing.
The Reveal The year drops. The room erupts. Someone nailed it. Someone was way off. Everyone's laughing.
Gold confetti bursts for exact guesses. Chart positions and fun facts appear. You just learned that song spent 22 weeks at #1.
<br> <div align="center">For Hosts
<!-- SCREENSHOT: Admin setup screen with media player and playlist selection --> <img src="images/admin-setup.png" alt="Admin setup screen" width="700">Select speakers. Pick playlists. Start the party.
</div>Full Control Skip tracks. Adjust volume. Pause the game. End early if needed. All from your phone.
Customize the Challenge Set round timers (15s/30s/45s) and difficulty levels (Easy/Normal/Hard) to match your group.
Print the QR Physical QR code printout for the coffee table. Guests join themselves.
Play Along Join as a player with admin controls. Compete and manage simultaneously.
<br>
Game Features
<div align="center"> <!-- SCREENSHOT: Reveal screen showing correct year, fun fact, and scores --> <img src="images/reveal-screen.png" alt="Round reveal with scores" width="600">The moment of truth. Every single round.
</div>Scoring That Creates Drama
Choose your difficultyโeach changes how points are awarded:
| Difficulty | Exact | Close | Near | The Vibe | |------------|-------|-------|------|----------| | ๐ Easy | 10 pts | ยฑ7 yrs = 5 pts | ยฑ10 yrs = 1 pt | Forgiving | | ๐ฏ Normal | 10 pts | ยฑ3 yrs = 5 pts | ยฑ5 yrs = 1 pt | Balanced | | ๐ฅ Hard | 10 pts | ยฑ2 yrs = 3 pts | โ | Punishing |
Speed Bonus
Submit instantly: 2x multiplier Submit at deadline: 1x multiplier Linear scale in between. Hesitation costs points.
Streak Milestones
- 3 in a row: +20 bonus points
- 5 in a row: +50 bonus points
- 10 in a row: +100 bonus points
- 15 in a row: +150 bonus points
- 20 in a row: +250 bonus points
- 25 in a row: +400 bonus points
Miss one? Streak resets. The pressure is real.
Double or Nothing
Feeling confident? Toggle the bet before submitting. Score points: Double them. Score zero: Lose it all.
Artist Challenge (Optional)
Know your artists? Enable this mode in game setup. Guess the artist after the song: +5 bonus points. Alternate names acceptedโ"Prince" or "The Artist" both count.
<br>
The Finale
<div align="center"> <!-- SCREENSHOT: End game podium showing top 3 players with medals --> <img src="images/podium-screen.png" alt="Winner podium" width="500">Glory. Bragging rights. Maybe a rematch.
</div>Fireworks explode for the winner. Full podium with medals. Personal stats. Best streaks. Bets won.
See how your game compared to all-time averages. Set a new record? Rainbow confetti and a "NEW RECORD!" badge.
Everything you need to demand a rematch.
<br>
Viewing & Selecting Playlists
Playlists are displayed on the main Beatify admin screen:
- Open Beatify (see above)
- Scroll to the Playlists section
- Check the boxes next to playlists you want to use in your game
- Selected playlists show their song count
Included Playlists
Beatify comes with 2,453 songs across 23 curated playlists:
- ๐ธ 60s Classics โ 45 tracks from the golden age of rock & roll
- ๐น 80s Hits โ 208 classic hits from the decade of synths and MTV
- ๐ต 90s Hits โ 32 essential tracks from the decade
- ๐ต 2000s Pop Anthems โ 150 essential pop hits from the 2000s
- ๐ค 90s & 2000s Hip-Hop Bangers โ 40 tracks from 2Pac, Eminem, JAY-Z, Nas, Dr. Dre and more
- ๐ช๐ธ 100% en Espaรฑol โ 127 Latin & Spanish classics
- ๐ฌ 100 Greatest Movie Themes โ 162 iconic film soundtracks
- โ๏ธ 100 Summer Anthems โ 112 feel-good tracks from 1957-2020
- ๐ฌ๐ง British Invasion & Britpop โ 100 tracks from The Beatles to Blur
- ๐ญ Cologne Carnival โ 290 German carnival favorites
- ๐บ Disco & Funk Classics โ 76 essential disco and funk tracks from the 70s and 80s
- ๐ฅ Eurodance 90s โ 100 party songs from the eurodance era
- ๐ Eurovision Winners (1956-2025) โ 72 winning songs
- ๐ Fiesta Latina 90s โ 50 Latin party anthems from Shakira, Ricky Martin, Manรก
- ๐ค Greatest Metal Songs โ 52 legendary tracks across all major metal subgenres
- ๐ฏ Greatest Hits of All Time โ 180 chart-toppers across four decades
- ๐ต Motown & Soul Classics โ 100 iconic soul tracks from Diana Ross, Marvin Gaye, The Temptations
- ๐ค One-Hit Wonders โ 98 flash-in-the-pan classics
- ๐ Power Ballads โ 99 epic rock ballads from the 80s and 90s
- ๐ธ Pure Pop Punk โ 100 essential pop-punk tracks from the 2000s
- ๐ฉ๐ช Schlager Classics โ 60 German schlager classics
- ๐ณ๐ฑ Top 100 Dutch Classics โ 100 Nederlandstalig tracks
- โต Yacht Rock โ 100 smooth West Coast classics from the 70s and 80s
Adding Custom Playlists
Custom playlists are stored in: config/beatify/playlists/
See Creating Playlists for the JSON format.
<br>
Creating Playlists
Beatify uses simple JSON playlists stored in config/beatify/playlists/.
{
"name": "80s Classics",
"songs": [
{
"year": 1983,
"uri": "spotify:track:4cOdK2wGLETKBW3PvgPWqT",
"fun_fact": "Spent 8 weeks at #1"
},
{
"y
Related Skills
node-connect
341.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
84.4kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
84.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
341.0kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
