https://github.com/mholzi/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.
https://github.com/mholzi/beatify
alexa hacktoberfest hacs home-assistant home-assistant-custom-component home-automation music-assistant music-quiz music-trivia party-game python qr-code smart-home sonos trivia-game
Last synced: 13 days ago
JSON representation
๐ต 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.
- Host: GitHub
- URL: https://github.com/mholzi/beatify
- Owner: mholzi
- License: mit
- Created: 2025-12-18T11:14:54.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-05-13T18:29:02.000Z (25 days ago)
- Last Synced: 2026-05-13T19:32:32.192Z (25 days ago)
- Topics: alexa, hacktoberfest, hacs, home-assistant, home-assistant-custom-component, home-automation, music-assistant, music-quiz, music-trivia, party-game, python, qr-code, smart-home, sonos, trivia-game
- Language: Python
- Homepage: https://mholzi.github.io/beatify/
- Size: 13.3 MB
- Stars: 138
- Watchers: 1
- Forks: 7
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Beatify

### **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.
[](https://www.home-assistant.io/)
[](https://github.com/mholzi/beatify/releases)
[](LICENSE)
[**Get Started**](#setup-in-home-assistant) โข [**Supported Speakers**](#supported-speakers) โข [**See It In Action**](#the-experience)
---
## 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.
---
## 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](#supported-speakers) for details.
**Your Music, Your Vibe** โ Spotify, Apple Music, YouTube Music, Tidal, or Deezer 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.
---
## Setup In Home Assistant
### Step 1: Install
**Via HACS (Recommended)** โ One click to add the repository, then install:
[](https://my.home-assistant.io/redirect/hacs_repository/?owner=mholzi&repository=beatify&category=integration)
Or manually:
```
HACS โ โฎ Menu โ Custom Repositories
โ URL: https://github.com/mholzi/beatify
โ Category: Integration
โ Install "Beatify"
โ Restart Home Assistant
```
**Manual**
```bash
cd /config/custom_components
git clone https://github.com/mholzi/beatify.git beatify
# Restart Home Assistant
```
### Step 2: Configure
[](https://my.home-assistant.io/redirect/config_flow_start/?domain=beatify)
Or manually:
```
Settings โ Devices & Services โ Add Integration โ "Beatify"
```
That's it. Beatify is now installed.
---
## 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.
1. Open Home Assistant
2. Look for **Beatify** in the left sidebar
3. Click to open the launcher
4. 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
1. Open the HA Companion app
2. Tap the menu (โฐ) or swipe from left
3. Select **Beatify** from the sidebar
### Starting a Game
**First time?** Beatify drops you into a 5-step first-run wizard that walks you through the whole setup:
1. **Speakers** โ Only [supported speakers](#supported-speakers) appear
2. **Music service** โ Spotify, Apple Music, YouTube Music, Tidal, or Deezer (filtered by speaker)
3. **Playlist** โ Pick one or more curated packs
4. **Game mode** โ Difficulty, round timer, announcement language, Artist Challenge / Intro Mode / Closest Wins toggles
5. **Lights & Voice** (optional) โ Party Lights mode + WLED presets, TTS announcements (only shown if Home Assistant has the entities)
After finishing, you land on the **"Ready to host"** screen: big Beatify wordmark, glowing QR hero card, and a Start game CTA. Share the QR code with guests โ they appear as colored tiles as they scan. Hit **Start game** when everyone's in.
**Returning host?** You skip the wizard and land directly on "Ready to host" with your previous picks preselected. Tap **Edit setup** any time to change speaker, service, playlists, or game mode.

*Print it. Display it. Share it.*
---
## The Experience
### For Players

*Slide to guess. Tap to submit. Pray you're right.*
**Learn the Game in 20 Seconds**
Players who scan the QR code drop into a swipeable 4-card tour that teaches the core mechanics in order: guess the year, double-or-nothing bet, steal an answer, guess the artist. Skip/Next always visible, auto-advances after 4 seconds per card. By the time the host hits Start, everyone knows what to do.
**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.
### For Hosts

*First-run wizard walks you through setup. Every choice pre-selected when you land on Start Game.*
**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.
---
## Game Features

*The moment of truth. Every single round.*
### 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.
### Movie Quiz Bonus (Optional)
For soundtrack songs. Guess the movie a song is from for tiered bonus points: **5 / 3 / 1** by submission speed.
Enable in game setup; only triggers on songs with movie metadata.
### Steal Power-Up
Build a **3-answer streak** to unlock Steal. Once unlocked, tap a rival mid-round to copy their answer when they submit. One steal per game โ spend it wisely.
---
## The Finale

*Glory. Bragging rights. Maybe a rematch.*
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.
---
## Viewing & Selecting Playlists
Playlists are displayed on the main Beatify admin screen:
1. Open Beatify (see above)
2. Scroll to the **Playlists** section
3. Check the boxes next to playlists you want to use in your game
4. Selected playlists show their song count
### Included Playlists
Beatify comes with 2,481 songs across 24 curated playlists:
- ๐ธ **60s Classics** โ 44 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
- ๐ง **Gen Z Anthems** โ 30 tracks from TikTok to Good Luck, Babe! spanning 2009โ2024
- ๐ **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** โ 179 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](#creating-playlists) for the JSON format.
---
## Creating Playlists
Beatify uses simple JSON playlists stored in `config/beatify/playlists/`.
```json
{
"name": "80s Classics",
"songs": [
{
"year": 1983,
"uri": "spotify:track:4cOdK2wGLETKBW3PvgPWqT",
"fun_fact": "Spent 8 weeks at #1"
},
{
"year": 1985,
"uri": "spotify:track:2374M0fQpWi3dLnB54qaLX",
"fun_fact": "Written in just 10 minutes"
}
]
}
```
**Playlist Tips:**
- Mix decades for variety
- Include recognizable songs (obscure = frustrating)
- Add fun facts for the reveal screen
- 10-20 songs per playlist works great
Sample playlists are included to get you started immediately.
---
## Multi-Language Support
Beatify speaks your guests' language.
- **English** โ Full support
- **Deutsch** โ Vollstรคndige Unterstรผtzung
- **Espaรฑol** โ Soporte completo
- **Franรงais** โ Support complet
- **Nederlands** โ Volledige ondersteuning
Select during game setup. All players see the chosen language. Fun facts and awards are also translated!
---
## Supported Speakers
Beatify works with specific Home Assistant integrations that support music playback:
| Integration | Supported | Spotify | Apple Music | YouTube Music | Tidal | Deezer | How It Works |
|-------------|-----------|---------|-------------|---------------|-------|--------|--------------|
| **[Music Assistant](https://music-assistant.io/)** | โ
Yes | โ
| โ
| โ
| โ
| โ
| Direct URI playback to any connected speaker |
| **Sonos** | โ
Yes | โ
| โ | โ | โ | โ | Direct Spotify playback via Sonos integration |
| **Alexa Media Player** | โ
Yes | โ
| โ
| โ | โ | โ | Voice search playback ("Play [song] on Spotify") |
| **Cast (Chromecast/Nest/Google TV)** | โ No | โ | โ | โ | โ | โ | Use Music Assistant instead |
| **HomePod** | โ No | โ | โ | โ | โ | โ | Use Music Assistant instead |
### Why Some Speakers Don't Work Directly
**Cast devices** (Chromecast, Nest Audio, Nest Hub, Google TV) and **HomePod** don't support direct music playback from Home Assistant. They require a streaming source.
**The solution:** Install [Music Assistant](https://music-assistant.io/) and add your Cast/HomePod devices there. Music Assistant acts as the streaming source and works perfectly with Beatify.
### Quick Compatibility Check
In Beatify's admin screen:
- โ
**Supported players** show with a platform badge (Music Assistant, Sonos, Alexa)
- โ **Unsupported players** (Cast, etc.) are hidden with a hint to use Music Assistant
### Guest WiFi / Network Setup
Beatify runs entirely within Home Assistant's HTTP server โ **no extra ports or services needed**.
| Protocol | Port | Purpose |
|----------|------|---------|
| HTTP/HTTPS | 8123 (default) | Game UI, API, static assets |
| WebSocket | 8123 (same port) | Real-time game communication |
**If guests are on a separate WiFi/VLAN**, add a single firewall rule:
```
Guest VLAN โ HA IP : TCP 8123
```
That's it. No mDNS, no broadcast, no additional ports.
**Tips:**
- The QR code uses the HA URL as seen by the admin's browser โ make sure that URL is reachable from the guest network
- If using a reverse proxy (nginx/Caddy), ensure WebSocket upgrades are allowed for `/beatify/ws` (standard HA proxy configs already handle this)
- If using HTTPS with a self-signed cert, guests may need to accept it once
> **โ ๏ธ Fritzbox users:** The Fritzbox guest WiFi fully isolates clients from your home network โ this cannot be overridden with firewall rules. Players must join the main WiFi, or use a separate VLAN-capable router/access point to create a guest network with selective LAN access.
---
## Technical Details
### Requirements
- **Home Assistant** 2024.1+
- **Supported media player** (see [Supported Speakers](#supported-speakers) above)
- **A premium streaming subscription** โ Spotify, Apple Music, YouTube Music, Tidal or Deezer. On-demand single-track playback needs a paid plan; free/ad-supported tiers (e.g. Spotify Free) don't allow it.
- **HACS** (recommended) or manual installation
### How It Works
- Native Home Assistant integration
- WebSocket-based real-time sync
- Local processingโno cloud required
- Session persistence for reconnection
- Up to 20+ concurrent players
### Architecture
```
Home Assistant
โโโ Beatify Integration
โโโ Game State Manager
โโโ WebSocket Handler
โโโ Media Player Service
โโโ Web UI (Admin + Player)
```
---
## Built With AI Assistance
Beatify is built with substantial help from AI coding tools (Claude Code). That's not a confession โ it's a feature. Here's what that looks like in practice:
- **Test coverage**: 19 Python test files, JS tests via Vitest, integration tests for the WebSocket protocol โ every regression gets a test before the fix lands.
- **Architecture is documented in code**: see `custom_components/beatify/services/media_player.py` lines 111โ128 โ the comment block walks through *why* the provider-URI dispatch was rewritten, names the specific user (Levtos) whose bug report drove the change, and references the original GitHub issues (#768, #805, #808).
- **800+ closed issues with traceable root causes**, not just "fixed". URI-validation, playback-recovery, and import-flow security got dedicated sweeps in v3.3.x.
- **Real users, not vanity metrics**: 134 stars, 7 forks (forks = devs reading the code), 126 active HACS installs, top 22% HACS rank, MIT-licensed.
The AI is the typist. The decisions, the architecture, the bug triage, and the "ship it" call are all human. If something looks off in the code, [open an issue](https://github.com/mholzi/beatify/issues) โ that's how the documented bug-fix sweeps started in the first place.
---
## FAQ
How many players can join?
Tested with 20+ players. Your WiFi is the only real constraint.
Can someone join mid-game?
Yes! Late joiners inherit the average score so they can compete fairly.
What if the host disconnects?
Game pauses automatically. Reconnect and continue exactly where you left off.
What music services work?
Spotify, Apple Music, YouTube Music, Tidal, and Deezer. Support depends on your speaker platformโsee the Supported Speakers table for details.
Do I need a paid music subscription? Does Beatify work with free Spotify?
Yes, you need a premium plan on one of the supported services. Beatify plays a specific song on demand each round, and that requires a paid subscriptionโSpotify Free does not work (its free tier blocks on-demand single-track playback via Music Assistant / Spotify Connect). This is a streaming-service limitation, not a Beatify one. If you don't have Spotify Premium, just pick another service in the setup wizardโApple Music, YouTube Music, Tidal or Deezer. The curated playlists carry URIs for all of them.
Why don't my Chromecast/Nest speakers appear?
Cast devices (Chromecast, Nest Audio, Nest Hub, Google TV) don't support direct music playback from Home Assistant. Install Music Assistant and add your Cast devices thereโthey'll then appear in Beatify and work perfectly.
Do players need to be on the same network?
Yes, players need to access your Home Assistant instance. Works great on home WiFi.
Can I customize the theme?
The neon dark theme is built-in and looks stunning. Custom theming is on the roadmap.
---
## What's New
### v3.3.4 โ Cover Blur, Sharp Year Steps & Round-Show Audio ๐๏ธ
- **Round-show audio (TTS Phase 1)** โ Five new voice announcements wired into the round flow: round start, optional 3-2-1 countdown, time's up, correct-answer reveal, and a "nobody got it" line. Each is a separate toggle, works with any HA TTS engine
- **Album cover blurs during PLAYING, crisp at REVEAL** โ Cover artwork sometimes carries readable titles, years or artist names โ now blurred during the round so it can't leak the answer, crisp the moment REVEAL hits
- **Year ยฑ5 buttons next to ยฑ1, and both finally count properly on iOS** โ Decade-jump buttons added next to the existing ยฑ1, and the mobile quirk where each tap stepped 2/4/by-the-round-number is gone โ now exactly 1 per tap, every time. Long-press repeat still works after 500ms
- **German launcher, lobby and error toasts โ fully translated** โ Launcher subtitle, wizard summary labels (Speaker โ Lautsprecher etc.) and the "End current game first" alert all leaked through in English. Plugged. ES/FR/NL got the same treatment
- **247 broken music URIs repaired** โ Yacht-rock playlist (190 across all three providers โ Apple Music, Spotify, YouTube Music) plus Pure-Pop-Punk (52 cyclically scrambled), plus 5 maintenance fixes across one-hit-wonders, greatest-metal-songs, top-songs-der-60er
- **Quality-of-life polish** โ Playlist detail-sheet Add button respects iPhone home-indicator safe-area, admin lobby no longer drags freely on iOS, reveal cover falls back to no-artwork placeholder when MA artwork URL fails, points breakdown finally sums to total when a Double-or-Nothing bet is won
- 24 playlists, 2,481 songs, 5 music platforms, 5 languages
### v3.2.0 โ Onboarding, Redesigns & Design System ๐จ
- **First-Run Wizard** โ Five-step guided setup for new admins: Speakers โ Music service โ Playlist โ Game mode โ Lights/Voice. After finishing, every chip on the admin dashboard is pre-selected โ first thing you see is the Start Game button
- **Admin Home View** โ Branded "Ready to host" landing screen with Beatify wordmark, glowing QR hero card, and Jackbox-style player tiles that appear as guests join (host in pink with ๐, guests cycling cyan โ green โ orange in join order)
- **Player Onboarding Tour** โ Players who scan the QR drop into a swipeable 4-card tour that teaches year guess โ bet โ steal โ artist challenge before the lobby. Host sees LEARNING players as dashed tiles with a cyan TOUR badge plus a confirm modal before starting
- **Gameplay Redesigned Arcade-Style** โ 128px year number as the hero, neon timer circle that flips red and pulses at โค10s, 3D tile buttons for artist/movie challenges, Submit morphs into a "Waiting for others" ghost state after lock-in
- **Round Reveal as a Duel** โ Your guess ร gap-count ร correct year side-by-side. Full points breakdown and round analytics moved into tappable bottom-sheet popups
- **Vinyl Share Card** โ End-of-game share card rebuilt as a vinyl-record design (navy base, pink/cyan radial glows, pinkโcyan gradient label with your score, optional ๐ WINNER badge), previewed inline on the end screen
- Browser cache overhaul (no-cache HTML + conditional GETs), 90+ broken streaming URIs fixed, 14 game-logic fixes, Spotify playlist import removed (Nov 2024 API deprecation), admin session handoff rewrite
- 24 playlists, 2,481 songs, 5 music platforms, 5 languages
### v3.1.0 โ Admin Makeover & Stability ๐๏ธ
- **Admin Dashboard Overhaul** โ Rebuilt spectator view mirrors the player layout: large album cover, countdown timer, player-dot tracker with bet/steal badges, leaderboard with streaks and rank changes, and podium end screen
- **Admin Joins as Player โ Full Experience** โ Host redirect to the player page with all 18 game features plus a fixed admin control bar. No more degraded mini-UI
- **Wake Lock** โ Screen stays awake during gameplay on mobile devices
- **WebSocket Reconnect on Tab Return** โ Auto-reconnects when switching apps or returning from lock screen, with clear error messaging on connection loss
- **Intro Round for Non-Playing Admin** โ Admins who don't join as player can now confirm intro rounds
- 16 bug fixes, 6 security hardening fixes, 12 performance fixes, 15 broken streaming URIs replaced
- 24 playlists, 2,482 songs, 5 music platforms, 5 languages
### v3.0.0 โ Dynamic Lights, Balanced Playlists & Security Hardening ๐ก
- **Dynamic Light Effects & WLED Support** โ Lights pulse during playback and react to game events (gold flash for exact matches, green for off-by-one, orange for streaks). Three modes: Static, Dynamic (new default), and WLED with configurable presets
- **Balanced Playlist Selection** โ Multiple playlists now get equal weight instead of larger playlists dominating. Cross-playlist duplicates auto-deduplicated
- **+10s Seek Forward** โ New admin button to skip past silent intros
- **Admin Spectator Mode** โ Watch and control the game without being a player
- **Closest Wins Mode** โ Only the player with the closest guess scores each round
- **HA Sensor Entities** โ Live game state exposed as Home Assistant entities for automations and dashboards
- **TTS Announcements** โ Voice feedback for game start and winner reveal via any HA TTS entity
- **Gen Z Anthems playlist** โ 30 songs from TikTok to Good Luck, Babe! (2009โ2024)
- Security hardening, 20+ bug fixes, 268 broken streaming URIs replaced
- 24 playlists, 2,482 songs, 5 music platforms, 5 languages
### v2.9.1 โ Party Lights, Dutch & Stability ๐
- **Party Lights** โ Automated light control during games with intensity presets (Subtle/Medium/Party), admin light picker, and preview button. Subtle mode scales relative to your pre-game brightness: +0% lobby, +20% playing, +40% reveal and end
- **Dutch language support** โ Fifth language joins EN, DE, FR, ES. Full UI translations and Dutch fun facts and awards across all playlists
- **12 bugs fixed** โ 5 high-severity and 7 medium-severity findings from systematic code review, including admin claim guard, null song scoring, intro timer restart, MA playback timeout, and Dutch game state serialization
- **38% smaller assets** โ All CSS/JS minified and bundled via esbuild, 590KB โ 364KB
- **5 architecture refactors** โ ChallengeManager, PowerUpManager, PlayerRegistry, shared state serializer, WebSocket public API
- 39 dead streaming URIs replaced across greatest-hits-of-all-time and motown-soul-classics
- 23 playlists, 2,453 songs, 5 music platforms, 5 languages
### v2.8.0 โ Deezer, Smarter Intro Mode & Architecture Overhaul ๐ต
- **Deezer Support** โ Fifth streaming service joins Spotify, YouTube Music, Apple Music and Tidal. 2,000+ Deezer URIs across 19 playlists
- **Smarter Intro Mode** โ Intro rounds delayed until round 4, admin-confirmed splash screen explains rules before music plays, duration increased to 15 seconds
- **Music Assistant + YouTube Music Fix** โ Non-blocking playback with state polling for reliable MA+YTMusic support. By @Scribblerman
- **90s & 2000s Hip Hop Bangers** โ 40 tracks (1990โ2008) from 2Pac, Eminem, JAY-Z, Nas, Missy Elliott, Dr. Dre and more
- Refactored player.js into ES modules, split scoring god functions, added unit tests, rate limiting, XSS protection, 276 broken URIs fixed
- 23 playlists, 2,453 songs, 5 music platforms, 4 languages
### v2.7.0 โ UX Polish & Playlist Expansion ๐ต
- **PWA: Add to Homescreen** โ Beatify installs as a Progressive Web App via an install prompt on the admin screen or the explicit install button in the header
- **Share Your Results** โ End screen includes a Wordle-style emoji grid of your round results. Native share sheet on mobile, card download on desktop
- **Revanche (Rematch)** โ Players can challenge for a rematch directly from the end screen โ no QR re-scan needed
- **Greatest Metal Songs playlist** โ 52 legendary tracks across all major metal subgenres (1970โ2020), fully enriched with certifications, awards and streaming links
- **Dutch Top 100 enriched** โ *Top 100 Allertijden Nederlandstalig* now has fun facts in 4 languages and alternative artist suggestions for every track
- 22 playlists, 2,415 songs, 4 music platforms, 4 languages
### v2.6.0 โ Game Highlights Reel ๐ฌ
- **Game Highlights Reel** โ After every game, Beatify auto-generates a highlight reel of the Top 8 moments: exact year matches, best streaks, speed records, comebacks, bet wins, heartbreakers, and photo finishes
- 21 playlists, 2,363 songs, 4 music platforms, 4 languages
### v2.5.0 โ Intro Mode, Quick Rematch & Fullscreen Launcher
- **Intro Mode** โ Random rounds play only 10 seconds of the song, then silence. Fullscreen โก splash overlay, guaranteed every 4 rounds
- **Quick Rematch** โ Hit Rematch on the scoreboard to restart with the same settings and players
- **Fullscreen Launcher** โ Sidebar opens a launcher that pops the game into a clean new tab (no HA chrome)
- **Comeback King superlative** โ Awarded to the player who improves the most during a game
- **Film Buff superlative** โ Awarded for the most movie quiz bonus points
- **Faster round transitions** โ Preflight caching + timeout-bounded playback cuts dead time between rounds
- **Apple Music & Tidal fix** โ URIs correctly converted for Music Assistant playback
- **HA 2026.2 compatible** โ Eliminated blocking I/O warnings
- **3 new/expanded playlists** โ 100% en Espaรฑol (127 songs), 80s Hits expanded (208 songs), Top 100 Dutch Classics (100 songs)
- **All playlist names standardized to English** โ Consistent naming across all 21 playlists
- 21 playlists, 2,363 songs, 4 music platforms, 4 languages
### v2.4.0 โ Tidal & Movie Quiz
- **Tidal support** โ Fourth streaming provider (Spotify, Apple Music, YouTube Music, Tidal)
- **Movie Quiz Bonus** โ Guess the movie a soundtrack is from for tiered bonus points (5/3/1)
- **French language** โ Fourth UI language (EN, DE, ES, FR)
- **Film Buff superlative** โ New end-game award for movie quiz performance
- **2 new playlists** โ British Invasion & Britpop (100 songs), Summer Party Anthems (112 songs)
- All playlists enriched with Tidal URIs
### v2.3.2 โ Soul, Disco & Latin Expansion ๐ต
- **3 new playlists** โ Motown & Soul Classics (100 songs), Disco & Funk Classics (76 songs), Fiesta Latina 90s (50 songs)
- **Data quality pass** โ Added artist/title to Movies & Schlager (222 tracks), normalized Karneval chart data
- **Streaming URI enrichment** โ 82 new Apple Music and YouTube Music URIs across Movies and Power Ballads
- **Enrichment tooling** โ New `enrich_playlists.py` script for automated cross-platform URI lookup
### v2.3.0 โ Playlist Tags & Filter UI ๐ท๏ธ
- **Tag-based filtering** โ Filter playlists by decade, genre, region, and mood in the Admin UI
- **Pure Pop Punk playlist** โ 100 essential pop-punk tracks from the 2000s
- **Yacht Rock playlist** โ 100 smooth West Coast classics
- **Expanded 80er Hits** โ Grew from 100 to 125 tracks
- **New 90er Hits** โ 32 essential tracks from the decade
### v2.2.0 โ YouTube Music & Playlist Requests ๐ต
- **YouTube Music support** โ Use YouTube Music as your music provider alongside Spotify and Apple Music
- **Custom playlist requests** โ Users can request Spotify playlists directly from the Beatify interface
- **80er Hits playlist** โ 100 classic hits from Michael Jackson, Prince, Madonna, A-ha, and more
### v2.1.0 โ Smart Speaker Routing ๐
- **Multi-platform speaker support** โ Automatic detection for Music Assistant, Sonos, and Alexa
- **Dynamic music service selector** โ Shows only compatible services for your selected speaker
- **Cast device guidance** โ Helpful hints for Chromecast/Nest users to install Music Assistant
### v2.0.0 โ React & Reveal ๐ญโจ
- **Live emoji reactions** โ Send ๐ฅ ๐ ๐ฎ ๐ ๐ reactions during reveals that float across all screens
- **Artist Challenge mode** โ Guess the artist for +5 bonus points, with alternate name support
- **Early reveal** โ Round ends instantly when all players have guessed
- **Complete UI redesign** โ Collapsible admin sections, unified lobbies, compact reveal view
- **One-Hit Wonders playlist** โ 98 songs celebrating flash-in-the-pan hits
- **Kรถlner Karneval playlist** โ 291 songs of Cologne carnival tradition
### v1.5.0 โ Data & Speed ๐โก
- **Admin analytics dashboard** โ Track games played, popular playlists, player stats, and error rates
- **Mobile performance boost** โ 53% smaller bundles, lazy loading, adaptive animations
- **Music Assistant support** โ Native playback service for reliable MA integration
- **Styled confirmation dialogs** โ No more ugly browser popups
- **Game settings display** โ See rounds and difficulty in the player lobby
### v1.4.0 โ Fiesta Internacional ๐
- **Spanish language support** โ Full UI and playlist content in Spanish
- **German playlist content** โ Fun facts and awards translated for all 370 songs
- **TV Dashboard improvements** โ Easier to find, shows round stats and fun facts
- **Invite late joiners** โ QR popup during gameplay for latecomers
- **Admin lobby makeover** โ Dark theme, player list, real-time updates
- **Alexa fix** โ Spotify playback now works on Alexa devices
### v1.3.0 โ Steal the Show ๐ฅท
- **Steal power-up** โ Build a 3-streak, then copy another player's answer
- **End-game superlatives** โ Awards for Speed Demon, Hot Streak, Risk Taker, Clutch Player, and Close Calls
- **Song difficulty rating** โ 1-4 star ratings based on historical player accuracy
- **Reliability improvements** โ Pre-flight speaker checks, smart retry logic, graceful error handling
### v1.2.0 โ The Party Just Got Better ๐
- **Rich song information** โ Chart history, certifications, awards, and fun facts on every reveal
- **Game statistics** โ Track performance across games with all-time averages and "NEW RECORD!" moments
- **Confetti celebrations** โ Gold bursts for exact guesses, fireworks for winners, epic shows for perfect games
- **Mystery mode** โ Album covers blur during guessing (no more peeking!)
- **New playlist** โ Eurovision Winners (1956-2025) with 72 winning songs
### v1.1.0
- **Difficulty presets** โ Easy, Normal, or Hard scoring modes
- **Customizable round timer** โ Quick (15s), Normal (30s), or Relaxed (45s)
- **Round analytics** โ See guess distribution, accuracy stats, and speed champions
[View full changelog โ](https://github.com/mholzi/beatify/releases)
---
## Troubleshooting
**No speakers appearing in Beatify?**
- Only Music Assistant, Sonos, and Alexa Media Player speakers are supported
- Cast devices (Chromecast, Nest, Google TV) require [Music Assistant](https://music-assistant.io/)
- HomePod requires Music Assistant
- See [Supported Speakers](#supported-speakers) for the full compatibility table
**Players can't connect?**
- Verify Home Assistant is accessible on your network
- Try IP address instead of hostname
- Ensure port 8123 is reachable
- Guests on a separate WiFi/VLAN? See [Guest WiFi / Network Setup](#guest-wifi--network-setup) โ just open TCP 8123
**Music won't play?**
- Check media player is online in Home Assistant
- Verify playlist URIs are valid for your music service
- For Sonos: Only Spotify is supported (not Apple Music)
- For Alexa: Ensure your music service is linked in the Alexa app
- Check Home Assistant logs for errors
**QR code won't scan?**
- Improve lighting on the display
- Try the "Print QR" feature for a physical copy
- Use a dedicated QR scanner app
---
## Help & FAQ
Have a question? Check our [Discussions Q&A](https://github.com/mholzi/beatify/discussions/categories/q-a) for answers to common questions about installation, music services, gameplay, and troubleshooting.
๐ก **Got an idea?** Share it in [Ideas](https://github.com/mholzi/beatify/discussions/categories/ideas)
๐ **Found a bug?** Open an [Issue](https://github.com/mholzi/beatify/issues)
๐ต **Want a playlist?** Submit a request through the Admin UI
---
## Contributing
Contributions welcome! Whether it's a new playlist, a bug fix, or a translation โ check our [**CONTRIBUTING.md**](CONTRIBUTING.md) for the full guide.
Quick start: Fork โ Branch โ PR. See [good first issues](https://github.com/mholzi/beatify/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) for easy starting points.
---
## License
MIT License. See [LICENSE](LICENSE) for details.
---
## Ready to Host?
The next great party moment is one QR scan away.
[**Install Beatify Now**](#setup-in-home-assistant)
---
**The open-source music quiz for Home Assistant. Built for fun.**
[Report Bug](https://github.com/mholzi/beatify/issues) ยท [Request Feature](https://github.com/mholzi/beatify/issues) ยท [Discussions](https://github.com/mholzi/beatify/discussions)
Made with โค๏ธ for the Home Assistant community