Replace the hello-world shell with the elevated design system, bilingual screens, recipe/extras data, and the interactive Mein Teller view. Co-authored-by: Cursor <cursoragent@cursor.com>
44 lines
2.7 KiB
Markdown
44 lines
2.7 KiB
Markdown
# Pocket Pascal
|
|
|
|
Nutrition coach app for Steffi + David, built on Pascal Wirth's Ernährungsbaukasten (building-block nutrition system). Decision aid for "what do I eat right now" — not a tracker, not chat-first. See `/docs/CONCEPT.md` for the full spec.
|
|
|
|
## Before touching this repo
|
|
|
|
Read `/docs/CONCEPT.md` in full. It is the source of truth for:
|
|
- Vision, non-goals, and the "app should make itself obsolete" success criterion
|
|
- The plate/building-block rules (protein, fat, carbs, veg/fruit) and portion sizes
|
|
- The module list and which phase each belongs to
|
|
- The decision log (section 8) — settled calls, do not re-litigate without a documented reason
|
|
- Open questions (section 7) — several are marked as UX calls Steffi owns; don't decide those unilaterally
|
|
|
|
## Platform
|
|
|
|
Web/PWA. **Not** a native iOS app. Decided 2026-08-03 (see decision log) — only 2 users, no App Store needed, and the existing vanilla JS data model/logic carries over directly.
|
|
|
|
Target stack: React + shadcn/ui + Tailwind, hosted on Vercel or GitHub Pages (exact host still an open question — see concept doc §7).
|
|
|
|
## Data model
|
|
|
|
`/data/foods.json` and `/data/steps.json` are extracted from the working prototype. Structured records, not display strings:
|
|
|
|
```json
|
|
{ "id": "chicken_breast", "cat": "protein",
|
|
"name": { "de": "Hühnerbrust", "en": "Chicken breast" },
|
|
"v": { "de": "111 kcal · 24 g", "en": "111 kcal · 24 g" },
|
|
"f": "pick" }
|
|
```
|
|
|
|
`f` is `"pick"` (especially recommended), `"caution"` (enjoy mindfully), or absent. `v` is currently a display string per item — **not yet normalized to a common basis**. Pantry items are mostly per-100g; snack items are per-serving. Normalizing everything to per-100g is a prerequisite before quantities/calorie math can be added (see concept doc, Teller-Builder — Analyse-Layer module).
|
|
|
|
DE is the primary working language (Steffi edits it directly), EN is the general template — every user-facing string needs both. UI chrome strings (not food data) live in a separate dictionary, not duplicated HTML.
|
|
|
|
## What's already built (reference only — not authoritative, rebuild in the new stack)
|
|
|
|
`/reference/kueche_app.html` — working single-file prototype (Claude Artifact). Has: plate rule view, pantry/knowledge base with search, Teller-Builder (multi-select plate builder with pick/caution scoring), settings with language switch. Useful for behavior reference, not for copy-pasting into the new stack as-is.
|
|
|
|
## Working conventions
|
|
|
|
- Bilingual: every content change ships both `de` and `en` in the same commit.
|
|
- Curated, not exhaustive — see non-goals in the concept doc. Don't add a food-database API integration without checking §7 first.
|
|
- UX/UI decisions are Steffi's call (she's the UX designer on this project). Flag them, don't just decide.
|