All projects

Beans n Beats

An order and pickup queue for a charity coffee booth. We made it for the pitch of an event expecting over 40,000 visitors.

The Beans and Beats Queue home page, listing the order screen, barista queue, pickup scanner, ready board and other screens.
The home page, which links to each screen.
Status
Built for the pitch
When
Oct to Nov 2026
Role
Ready board, pickup scanner and day reset
Team
Five people
Made with
Next.js, React, TypeScript, Supabase, IndexedDB

What it is

Beans n Beats runs a charity coffee booth at a year-end event at Marina Bay Sands. We were a team of five, and we made its order system for the event’s pitch.

The way it works is pretty simple. The counter staff key in an order and show the guest a QR code. The baristas move the order from queued to ready, and the guest can follow their drink on their own phone without installing an app or making an account. There is also a public board that shows which pickup numbers are ready. If the Wi-Fi drops, it keeps working and catches up later.

My part

I set up the project scaffold, and I was one of the two people who reviewed and merged pull requests. The parts I was responsible for were the ready board, the pickup scanner, the reset between event days, and the rules on how we handle guests’ personal data. I also edited the demo video. My teammates made the barista queue, guest tracking, menu controls, sales report and offline sync.

Most of the code was written by AI coding agents working from the specs we wrote, and a person reviewed every change.

Limits

  • We made it for a pitch and it has not run at a live event, so there are no usage numbers to show.

Decisions

These go from the first to the latest. For each one, what I saw and what I did about it.

  1. Five of us, plus a few AI coding agents, were all about to work in the same repository.

    We went with one branch per feature, and nothing gets into main without a review and passing checks

  2. Payment was going to happen on the organiser's own till and not in our app.

    We dropped the payment step. Staff take payment, press Submit, and the order goes to the baristas

  3. You could still order a drink that had already sold out.

    Stock is now checked on every item, and Submit is disabled if anything is unavailable

  4. Two of our features each needed a staff login.

    We made one staff session on the server that every staff page uses

  5. We knew a manual Start new day button would get forgotten, and it would miss any screen that was offline at midnight.

    A new day now starts by itself at midnight, Singapore time

  6. The organisers asked for a pickup scanner, and we were expecting the Wi-Fi in the hall to be patchy.

    The QR code guests use to track their order is also the pickup code, and the scanner works offline

  7. When we ran through all our tests, we realised there was no way to cancel an order.

    We added Cancel with a confirmation. Cancelled orders stay in the export but not in the totals