- Entered
- 2026-09-29
- First commit
- 2026-08-08
Taverla
App · party games · live
Party games on every phone in the room, on the same instant.
A shelf of party games sharing one room, one QR code and one set of screens. One screen runs the game, everyone else plays on whatever they have to hand, and the first to know it takes the round.
- TypeScript
- React
- Hono
- WebSocket
- Zod
- Playwright
Shipped29 · IX · 2026
- Entered
- 2026-09-29Shipped
- First commit
- 2026-08-08Bootstrap the blind test monorepo
- Commits
- 347on main, read 2026-10-02
- Coverage
- 88%lines run by the server and game-rule tests, read 2026-10-02
- House packages
- 11 of 11installed from npm
What shipped
- Three games on one shelf: blind test, buzzer and quiz.
- One room, one QR code: everyone joins from the phone they already hold.
- The server stamps every buzz, so the fastest hand wins, not the fastest clock.
- Tested end to end: real sockets against a real server, Playwright journeys across two screens.
- English and French, light and dark, on a phone or a laptop.
How it works
one server, a socket to every screen
History
Straight from the git log, abridged: 13 of 347 commits, newest first.
- Count page views with analytics
- Take the router provider from @adrienlcp/react-router
- Serve a wall: the room's own screen, paired by the host's device
- Let a Result succeed with nothing, rather than succeed with undefined
- Turn a held floor's buzzer into its dial, and take BUZZ off a dead circle
- Freeze the round on the server, not only on the phone
- Offer the room back to the device holding its key
- Hide the QR code from a reader who cannot point a camera at it
- Let a room hold two consoles without losing its round
- Make the bare buzzer a game rather than a source of questions
- Give Taverla a front door, and the blind test its own
- Make the blind test playable end to end
- Bootstrap the blind test monorepoFirst commit
Installs
11 of the 11 house packages, from npm, down to the compiler and linter settings.
- @adrienlcp/react-routerThe router provider every app takes.0.1.1
- @adrienlcp/i18nTranslates, and knows at compile time what each message asks for.0.3.0
- @adrienlcp/theme-preferenceKeeps the chosen theme from flashing, down to the phone’s toolbar.0.3.0
- @adrienlcp/browserCopies to the clipboard even over plain HTTP, where the Clipboard API does not exist.0.1.1
- @adrienlcp/reactThe context helpers every React app starts from.0.3.0
- @adrienlcp/react-ariaThe focus ring and class composition over react-aria-components.0.1.0
- @adrienlcp/stylesThe reset and shared styles every project starts from.0.5.0
- @adrienlcp/resultSays whether something worked, without throwing and without null.0.1.0
- @adrienlcp/safe-storageTakes the throw out of localStorage and returns a Result instead.0.1.0
- @adrienlcp/tsconfigThe compiler settings every project extends.0.1.0
- @adrienlcp/biome-configThe linter and formatter settings every project extends.0.1.0