Level 8 digital menu
The guest menu is the surface. The staff admin behind it is the product.
Level 8 Rooftop Bar rotates cocktails seasonally and 86's items nightly, but reprinting menus is slow and QR menus built on PDFs are worse. I built the venue a real system: a fast React menu for guests, and the part that actually earns its keep, an admin where staff edit the menu themselves and see it live immediately.
Role
Personal project · all my own code
Timeline
Built while bartending at Level 8 · live today
Stack
- React
- TypeScript
- Vite
- AWS Amplify Gen 2
- Cognito
- S3
The problem
A bar menu is a living document. Cocktails rotate seasonally, kegs kick mid-shift, prices move, and specials appear on a Thursday. Print can't keep up, and a static QR menu is just print with extra steps. The venue needed the menu to be editable by the people running the floor, not by a developer.
The admin is the product
The core design decision: menu content lives as runtime JSON in S3, loaded by the app at request time. Editing that JSON happens through an admin interface gated behind AWS Cognito auth via Amplify Gen 2. A manager signs in, changes an item, a price, an availability flag, or a whole section, and every guest phone sees it on next load. No rebuild, no deploy, no developer in the loop.
That separation of content from code is why the site has survived unattended: the venue has been editing its own menu since the day it shipped.
Inside the admin


The guest surface
Guests hit the menu from a QR code, so it's tuned for phones first: fast load, search, and category filtering, with the same data driving the desktop view.
In production


Outcome
Shipped solo for the venue where I worked, and still in daily production use today. Small system, real business, zero babysitting.