Web apps · React
Restaurant reservations
Take bookings by date and time, track covers for the night, and mark no-shows.

What you get
A reservations book for an independent restaurant: each booking with date, time, party size and notes, moved from requested to seated on a board, with confirmed covers totalled at the top. The bookings and statuses live in src/app.ts.
Files
Exactly what is copied into a new project: 12 files, nothing generated.
Explorer 12
import type { AppSpec } from "./types"; /** Everything this app shows. Edit freely. */export const app: AppSpec = { "brand": "Osteria Lume", "icon": "cup", "storageKey": "osteria-lume-bookings-v1", "entity": { "singular": "Booking", "plural": "Bookings" }, "title": "Reservations", "subtitle": "Dinner service, Tuesday to Saturday, 17:30 to 22:00", "titleKey": "guest", "statusKey": "status", "tones": { "Requested": "neutral", "Confirmed": "accent", "Seated": "good", "No-show": "bad", "Cancelled": "warn" }, "views": [ "table", "board" ], "fields": [ { "key": "guest", "label": "Guest", "type": "text", "required": true }, { "key": "phone", "label": "Phone", "type": "text" }, { "key": "date", "label": "Date", "type": "date" }, { "key": "time", "label": "Time", "type": "select", "options": [ "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00" ] }, { "key": "covers", "label": "Covers", "type": "number" }, { "key": "status", "label": "Status", "type": "select", "options": [ "Requested", "Confirmed", "Seated", "No-show", "Cancelled" ] }, { "key": "notes", "label": "Notes", "type": "longtext", "hideInTable": true } ], "summary": [ { "label": "Bookings", "kind": "count" }, { "label": "Confirmed covers", "kind": "sum", "field": "covers", "status": "Confirmed" }, { "label": "Seated", "kind": "count", "status": "Seated" }, { "label": "No-shows", "kind": "count", "status": "No-show" } ], "seed": [ { "guest": "Giulia Romano", "phone": "(415) 555-0142", "date": "2026-10-30", "time": "19:30", "covers": 4, "status": "Confirmed", "notes": "Anniversary. Window table if possible." }, { "guest": "Mark Henderson", "phone": "(415) 555-0187", "date": "2026-10-30", "time": "18:00", "covers": 2, "status": "Confirmed", "notes": "" }, { "guest": "Leila Haddad", "phone": "(415) 555-0119", "date": "2026-10-31", "time": "20:00", "covers": 6, "status": "Requested", "notes": "One guest is coeliac." }, { "guest": "Peter Lund", "phone": "(415) 555-0163", "date": "2026-10-28", "time": "19:00", "covers": 3, "status": "Seated", "notes": "" }, { "guest": "Hiro Sato", "phone": "(415) 555-0108", "date": "2026-10-28", "time": "20:30", "covers": 2, "status": "Seated", "notes": "Regular, likes the Barolo." }, { "guest": "Dana Whitfield", "phone": "(415) 555-0174", "date": "2026-10-25", "time": "18:30", "covers": 5, "status": "No-show", "notes": "Called twice, no answer." }, { "guest": "Francesca Bell", "phone": "(415) 555-0135", "date": "2026-10-31", "time": "17:30", "covers": 2, "status": "Confirmed", "notes": "High chair needed." }, { "guest": "Omar Siddiqui", "phone": "(415) 555-0191", "date": "2026-11-01", "time": "21:00", "covers": 8, "status": "Cancelled", "notes": "Moved to a private event next month." } ]};Remix
Remix this template
Describe what to change and the agent starts from Restaurant reservations's files. The box is already started for you: finish “Start from Restaurant reservations and …”
Dependencies
Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.
- react^19.1.0
- react-dom^19.1.0
- vite^6.3.0
- @vitejs/plugin-react^4.4.0
- tailwindcss^4.1.0
- @tailwindcss/vite^4.1.0
- typescript^5.8.0
How it runs
- Framework
- Vite + React + TypeScript
- Dev command
- npm run dev
- Build command
- npm run build
- Output directory
- dist
- Port
- 5173
- Entry route
- /
Projects run in an isolated sandbox with a live preview. Read the projects documentation for settings, snapshots and deployment.
Keep browsing
All templates
React starter
A clean React + TypeScript + Tailwind single-page app. The default target for AI generation.

Sales leads CRM
A lean CRM for a small sales team: leads, deal values, next follow-ups and a pipeline board.

Wedding guest list
Keep the guest list, RSVPs, meal choices and table plan for the big day in one place.
Build on Restaurant reservations
Create a free account, start from this template, and ask the AI agent to turn it into your app.