Nutty's Junkyard Grill
nuttysjunkyardgrill.com(opens in a new tab)Online ordering and a staff back office for a roadside grill.
Problem
Every order came in over the phone, and every menu or price change had to go through a developer. There was no way to sell online, and no way for the people who actually run the kitchen to change anything themselves.
What I built
A marketing site with online ordering in front, and a staff dashboard behind it that owns the menu, add-on groups, daily specials, the live order queue and incoming job applications.
Decisions & trade-offs
- Settled order state from Stripe webhooks rather than the browser redirect, so a closed tab or a dropped connection can never leave a paid order unrecorded.
- Persisted the cart to local storage, because a half-built order is the most expensive thing a restaurant site can lose.
- Modelled add-ons as their own groups instead of fields on a menu item, so staff can build new combinations without a schema migration.
- Enforced access in Postgres with row-level security rather than in application code, so the rules still hold when a route handler is wrong.
- Covered pricing and cart arithmetic with Vitest, because those are the two places where a bug costs the client real money.
Outcome
Customers order and pay online, and staff run the menu and the order queue without a developer in the loop.
