尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
RESTAURANT APP THAT LETS USERS INPUT THEIR FAVOURITE BURGER
翻译准备中
正在加载完整 README。
查看完整 README ↗A craving list and tasting journal. Write down the burgers you want, then devour them with a 1–5 rating and a note. Every day, 今日汉堡 (today's burger) picks one for you from what it has learned about your taste.
Originally a 2019 bootcamp assignment (Express, MySQL, Handlebars and a hand-made ORM), rebuilt in 2026.
The original taught the basic CRUD loop: form → route → SQL → HTML. This version keeps that loop and uses it to teach three things the other projects in this set don't:
How the card is made, in three steps you can read in src/taste/:
bacon +1, salty −1. A keyword tagger (English and Chinese) runs instantly; if a model is connected it re-reads the text in the background and its validated tags replace the keyword ones.count + 2 keeps a tag near zero until it has a few examples (the idea behind ridge regularisation). Weights like smoky +0.8, salty −0.9 are the whole model.The card is written to feel good, using four small ideas from psychology:
| On the card | Example | Why it works |
|---|---|---|
| A memory, in your own words | 💭 You gave Smoked brisket smash 5/5 "great char". This one is smoky too. | Being remembered feels personal; a generic "you might like" does not. |
| A sensory preview | Picture it: crispy, lacy edges, cheese melting over the side and a deep smoky char. | Imagining the first bite is part of the pleasure (anticipation, or savouring). |
| One new thing | ✨ Something new for you: your first plant-based pick. | Novelty inside something familiar is exciting rather than risky. |
| A promise | 👌 Easy on the salt: you've said "too salty" twice. | Removing a known worry beats warning about it. |
A model, if configured, only rewrites the sensory preview. Until it answers, or if it fails, a template preview stands in, and the card says which wrote it.
| No JavaScript at all | An AI agent logs a burger |
|---|---|
Plain <form>s and redirects, so it works everywhere. htmx only makes it smoother. | Real MCP calls against a local server, then the same journal in the browser. |
corepack enable
pnpm install
pnpm dev # http://localhost:8787, with a local D1 database
| Command | What it does |
|---|---|
pnpm test | Worker tests inside the real Workers runtime (workerd) with a local D1, once without a model and once with a scripted fake model |
pnpm e2e | Playwright: desktop and phone, JavaScript on and off, axe accessibility scans in both themes |
pnpm validate | Lint, types, tests, build, e2e, knip |
pnpm gifs | Re-records the GIFs above from the live app (needs ffmpeg) |
flowchart LR
B[Browser<br/>forms + htmx] -->|POST /burgers ...| H
A[AI agent<br/>MCP client] -->|POST /mcp/key| H
subgraph Worker
H[Hono routes] --> V[Zod rules<br/>domain.ts]
V --> Q[SQL<br/>db.ts]
end
Q --> D[(D1<br/>burgers)]
Read the code in this order; it is about 600 lines in total:
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗