Orderhatch: online ordering and a kitchen display for a taqueria
A photo menu, card checkout and a live order status page, plus a kitchen board with ticket timers and sold-out toggles.
Agent specs
- Agent
- Claude Code, Opus 5.5 Medium
- Time
- 28 min
- Cost
- $9.45*
Agents work faster and more accurately on Elements.
* Cost at API rates, September 2026.
Run it yourself
Paste this prompt into your AI agent. You get the finished app on your own machine, ready to change however you like.
Install elements: curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH Create an Elements app from the elementscode/demo-orderhatch scaffold: cd ~/elements/projects elements create orderhatch -scaffold=elementscode/demo-orderhatch cd orderhatch Start the app.
How it's built
Orderhatch needed card checkout, a kitchen board that fills as orders are paid, a live status page for each customer, email receipts, and sold-out items that update on every screen. Each of those is a part of Elements, so the agent spent its 28 minutes on the taqueria app itself.
What Elements gave the app
- A live kitchen board. Orders are a LiveTable, so a paid order appears on the kitchen display the moment it lands, a tap moves the ticket between columns, and the customer's status page moves from received to preparing to ready with it.
- Live sold-out items. The menu is a LiveTable too. Kitchen staff mark an item sold out, it comes back at the end of the business day, and every customer's menu shows it at once.
- Card checkout. Placing an order is one
@rpccall that prices the cart on the server, holds the order off the board and sends the customer to Stripe. The order moves to the kitchen once whether the return page or Stripe's webhook arrives first. Without a Stripe key, a test checkout inside the app records the payment through the same function, and production registers its own webhook. - Email receipts. The payment and the receipt job are recorded in one transaction, and the job emails the receipt.
- Data from SQL files. Migrations define the app and seed the owner, a staff account, twenty items in five categories with photos and options, opening hours, and a lunch rush of seventeen orders timed from when the seed runs.
- Sessions and roles. Kitchen pages check for staff and the owner's pages check for the owner.
What the project server gave the agent
The project server runs alongside the agent and answers as soon as a file is saved: it type-checks the templates, TypeScript and SQL, applies migrations and reruns the tests, so every question came back right away and the agent kept building.
What shipped
The app type-checks with zero errors and all 29 tests pass. Every page works on desktop and phone. A real sandbox payment went through Stripe end to end.
The code
Build it from scratch
To watch your agent build this app from an empty project, use the prompt we used instead. It takes longer than starting from the finished app above.
Install elements: curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH Create an Elements app: cd ~/elements/projects elements create orderhatch cd orderhatch Start the app, then build this: Build an online ordering and kitchen display app named orderhatch for a neighborhood taqueria. CUSTOMER - Menu by category with photos, prices and options (protein, salsa, add-ons). - Cart, pickup time (ASAP or a time slot today), name and phone, pay by card. - An order status page that moves from received to preparing to ready. - An email receipt. KITCHEN (staff account) - Kitchen display: new orders as tickets in columns (new, preparing, ready), oldest first, with a timer on each ticket. Tap to move a ticket. - Mark an item sold out for the day. OWNER (admin account) - Edit the menu and hours. - Today's orders and revenue. Payments by Stripe. Seed the owner, one staff account, a menu of about twenty items in five categories, and a lunch rush of orders across statuses. Show the logins on the sign-in page. New orders, ticket moves and sold-out items update in real time on every screen.
Comments· 0