# ROADMAP — Iðunn

Combined phases. **Phase 0–1** done. **Phase 2** is this guest (API + store + mock UI).

## Phase 0 — Concept freeze *(done)*

Vision, plate, guardrails, multi-user shape, inventory, profiles, host fit.

## Phase 1 — CT116 + Hello World + docs home *(done)*

- LXC 116 `idunn`, Debian 13, Docker, `onboot: 1`, `192.168.42.116`
- Hello World on port 8080
- Docs in `/opt/idunn/docs/`

## Phase 2 — Foundation: store, users, meter, constitution *(this box)*

- FastAPI + SQLite (boring store). `user_id` on eater rows. Not a fortress.
- Markdown projection under `/opt/idunn/data/md/users/<id>/`
- Usage meter table (empty — billing off, no AI calls yet)
- Constitution loaded at `/coach/system-prompt` for a later bot
- Prototype UI at `/app.html`
- No Telegram, no `XAI_API_KEY`, no NPM hostname yet

## Phase 3 — Telegram coach *(done — @IdunnFoodBot)*

- Bot + webhook on CT116 (not CT102)
- Confirm/correct loop
- Aliases
- “Ate portion of Saturday stew” already works against inventory
- Coach follows CONSTITUTION.md: not a doctor; user decides; research both directions

## Phase 4 — Kitchen, letters, profiles *(done)*

- Richer ratings, weekly/monthly letters, body metrics
- Resolver + food tables
- Nicer website than the mock

## Phase 4.5 — Bot polish *(done)*

- Telegram command menu
- Stance cadence (48h)
- Monday weekly letter to active eaters
- `/rate` after `/suggest`
- Apply pings to operators only

## Phase 5 — Coins *(done)* / public billing *(optional)*

In-app coins, not money. Operator grants +10/+50/+100 in `/admin`.
Costs: chat 1, vision 2, STT 1, letter 2.
Dry: still log (heuristic). `/balance` `/coach on|off`.
Catch-up of meals logged while dry: TBD.
Real-money billing still later if the household opens up.

## Out of scope until someone asks

Native apps, GPU/local LLM, merge with TestoTracker, CT102 PHP, calorie-religion barcode app.
