个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证POS wireframe for UT
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A Ramen POS — Interactive Hi-Fi Wireframe
Interactive Hi-Fi wireframe for an A Ramen restaurant POS system. Dual-purpose: dev-handoff spec + stakeholder presentation artifact. Browser-based, no backend — all data is mock/in-memory or localStorage-persisted via Zustand.
Part of the FIP (Food Intelligent Platform) ecosystem.
Open http://localhost:3000 — login with any role using PIN 9999.查看完整 README ↗Interactive Hi-Fi wireframe for an A Ramen restaurant POS system. Dual-purpose: dev-handoff spec + stakeholder presentation artifact. Browser-based, no backend — all data is mock/in-memory or localStorage-persisted via Zustand.
Part of the FIP (Food Intelligent Platform) ecosystem.
npm install
npm run dev
Open http://localhost:3000 — login with any role using PIN 9999.
npm run dev # Start dev server (localhost:3000)
npm run build # Production build (catches type errors)
npm run lint # ESLint
@theme block in globals.csspersist middleware for cross-route state| Group | Path | Purpose |
|---|---|---|
(auth) | /login | Role selection + PIN entry |
(app) | /table-map, /orders, /order/*, /payment/*, /manager | Staff POS interface with AppShell |
(kds) | /kds | Kitchen Display System — full-screen, no shell |
Full-screen kitchen display at /kds for Kitchen and Manager roles.
| Action | Flow |
|---|---|
| Send single item | Click "ส่งออร์เดอร์" on card → card disappears → toast |
| Send all (by menu) | Sidebar ReplyAll → confirm dialog with affected tables → ยืนยัน |
| Send all (by table) | Table bar ReplyAll → confirm dialog → ยืนยัน |
| View table detail | Click table card → bottomsheet with all orders for that table |
| View menu detail | Click sidebar item → bottomsheet filtered by that menu item |
| Cancel order | POS cancels → card shows "ออร์เดอร์ถูกยกเลิก" overlay → click to update info |
Enable via settings gear dropdown:
The table bottomsheet has a built-in Design A/B toggle in its header:
| Component | File | Purpose |
|---|---|---|
KdsBoard | src/components/kds/KdsBoard.tsx | Main board layout with auto-registration |
KdsTicketCard | src/components/kds/KdsTicketCard.tsx | Single item card (normal + cancelled states) |
KdsItemRow | src/components/kds/KdsItemRow.tsx | Item with color-coded modifier icons |
KdsKpiBar | src/components/kds/KdsKpiBar.tsx | Top KPI stats bar |
KdsSummaryPanel | src/components/kds/KdsSummaryPanel.tsx | Right sidebar with time-grouped aggregation |
KdsTableBar | src/components/kds/KdsTableBar.tsx | Bottom table bar with per-table cards |
KdsTableBottomsheet | src/components/kds/KdsTableBottomsheet.tsx | Table/menu detail bottomsheet (A/B variants) |
KdsSendConfirmDialog | src/components/kds/KdsSendConfirmDialog.tsx | Menu-level send confirmation with table list |
KdsTableSendConfirmDialog | src/components/kds/KdsTableSendConfirmDialog.tsx | Table-level send confirmation |
KdsCancelInfoDialog | src/components/kds/KdsCancelInfoDialog.tsx | Cancel info form (stock deduct + notes) |
KDS store (src/stores/kds.store.ts) — not persisted:
tickets — Active KDS tickets keyed by ticketIdKdsTicket.sentLineIds — Tracks individually sent itemsKdsTicket.cancelledLineIds — Tracks items cancelled from POScompletedTableIds — Prevents re-registration of completed tables| Role | PIN | Access |
|---|---|---|
| Waiter | 9999 | POS app (orders, tables) |
| Cashier | 9999 | POS app (payments) |
| Manager | 9999 | POS app + KDS + manager tools |
| Kitchen | 9999 | KDS only |
npm run build
Deploy to Vercel or any Node.js hosting platform.