Implement ordering MVP domain layer per spec (issue #1)

Scaffolds the TanStack Start + Drizzle/Postgres + Better Auth app and
implements the core ordering domain: menu browsing, guest/account order
placement with online payment, per-Order-Item independent cooking and
cancellation, dynamic Machine-Tag pool assignment, and multi-step recipes
(see docs/adr/0001-0003). Adds a guest-access-token / session-based
ownership check on every read/mutation so an order can't be viewed,
cancelled, or picked up by anyone but its owner.

Covered by 14 tests running the domain layer directly against a real,
ephemeral Postgres (testcontainers) — createServerFn couldn't be called
outside a real request context, so tests exercise the domain functions the
server functions thinly wrap instead of the server functions themselves.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-09 18:46:58 +02:00
co-authored by Claude Sonnet 5
parent e532a95f0b
commit 456c3acda5
38 changed files with 13572 additions and 1 deletions
+25
View File
@@ -0,0 +1,25 @@
{
"projectName": "ghost-kitchen-scaffold",
"mode": "file-router",
"typescript": true,
"tailwind": true,
"packageManager": "npm",
"git": false,
"install": true,
"intent": true,
"addOnOptions": {
"drizzle": {
"database": "postgresql"
}
},
"projectPreset": "default",
"includeExamples": false,
"routerOnly": false,
"version": 1,
"framework": "react",
"chosenAddOns": [
"drizzle",
"better-auth",
"eslint"
]
}