Liszt’n Up! is a web-based party game designed for classical music enthusiasts. Inspired by mechanics from board games like Hitster, players compete to guess composers, works, and eras, or place tracks on a timeline.
The game is built on a massive dataset of more than 10,500 works from over 900 composers sourced from MusicBrainz, totaling 27,000+ tracks (each work may contribute multiple movements/parts). Rather than manual curation, the system filters works based on the number of available recordings. Predefined tracklists are generated automatically, with only the Beginner tracklist being manually curated. Users can also create custom tracklists from the entire library.
Designed as a modern web app, Liszt’n Up! is optimized for tablet usage (ideal for placing in the center of a table during a game night) and includes a custom audio engine that performs real-time volume normalization for a consistent listening experience.
- Framework: SvelteKit (Svelte 5 with Runes) + Cloudflare Pages & D1 (Analytics)
- Language: TypeScript
- Styling: Tailwind CSS 4
- State Management: Svelte Stores & LocalStorage persistence
- Audio: Web Audio API (with custom LUFS normalization implementation)
- Icons: Lucide Svelte
- I18n:
svelte-i18n
Important
This project relies on the Deezer API for audio previews. Usage is subject to Deezer's Terms of Service. Commercial use of this application is prohibited without explicit permission from rightsholders.
To get a local copy up and running, follow these steps.
- Node.js (Latest LTS recommended)
- pnpm
-
Clone the repository:
git clone https://github.com/jacbz/lisztnup.git cd lisztnup -
Install dependencies:
pnpm install
-
Start the development server:
pnpm dev
-
Open http://localhost:5173 in your browser.
Note
Browser Compatibility: To bypass Web Audio API autoplay restrictions on WebKit, the game automatically falls back to standard HTML5 Audio on Safari.
Unlike many trivia games with manually curated lists, Liszt’n Up! uses an algorithmic approach to generate its library, with only little manual tweaking. You can inspect the generation logic in the /data directory. The build process compiles this into a compressed lisztnup.json file served to the client.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request



