refactor: rename nutriphi module to food (Essen)

Complete rename across the entire monorepo pre-launch:
- Module, routes, API, i18n, standalone landing app directories
- All code identifiers, display names, logo component
- German user-facing label: "Essen" (English brand stays "Food")
- Dexie table nutriFavorites -> foodFavorites
- Infra configs (docker-compose, cloudflared, nginx, wrangler)

Zero residue of nutriphi remains. No data migration needed (pre-launch).

Follow-up: run pnpm install, update Cloudflare DNS
(food.mana.how), rename Cloudflare Pages project.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-14 15:30:07 +02:00
parent f5cb833b04
commit 53b3746b98
196 changed files with 863 additions and 719 deletions

View file

@ -1,11 +1,11 @@
# NutriPhi MVP-Plan
# Food MVP-Plan
> **Status:** Planung abgeschlossen
> **Letzte Aktualisierung:** 2026-01-24
## Vision
NutriPhi ist eine datenschutzorientierte, KI-gestützte Ernährungs-Tracking-Web-App für gesundheitsbewusste Menschen. Sie ermöglicht das Erfassen von Mahlzeiten per Foto oder Text und liefert vollständige Nährwertanalysen mit personalisierten Empfehlungen.
Food ist eine datenschutzorientierte, KI-gestützte Ernährungs-Tracking-Web-App für gesundheitsbewusste Menschen. Sie ermöglicht das Erfassen von Mahlzeiten per Foto oder Text und liefert vollständige Nährwertanalysen mit personalisierten Empfehlungen.
---
@ -113,7 +113,7 @@ NutriPhi ist eine datenschutzorientierte, KI-gestützte Ernährungs-Tracking-Web
### Projektstruktur
```
apps/nutriphi/
apps/food/
├── apps/
│ ├── web/ # SvelteKit (mobile-optimiert)
│ └── backend/ # NestJS API
@ -268,7 +268,7 @@ Output-Format: JSON mit strukturierten Nährwertdaten
```
┌─────────────────────────────┐
NutriPhi [+] [Profile] │
Food [+] [Profile] │
├─────────────────────────────┤
│ │
│ Heute: 1.450 / 2.000 kcal │
@ -378,7 +378,7 @@ Output-Format: JSON mit strukturierten Nährwertdaten
### Wiederverwendbare Shared Components
| Komponente | Verwendung in NutriPhi |
| Komponente | Verwendung in Food |
|------------|------------------------|
| `HeroSection` | "Fotografiere dein Essen, verstehe was du isst" |
| `FeatureSection` | KI-Analyse, Nährwerte, Tracking, Empfehlungen |
@ -392,14 +392,14 @@ Output-Format: JSON mit strukturierten Nährwertdaten
### Projektstruktur
```
apps/nutriphi/apps/landing/
apps/food/apps/landing/
├── src/
│ ├── pages/
│ │ └── index.astro
│ ├── layouts/
│ │ └── Layout.astro
│ ├── styles/
│ │ └── global.css # NutriPhi Theme (Grün)
│ │ └── global.css # Food Theme (Grün)
│ └── components/ # Custom falls nötig
├── astro.config.mjs
├── package.json
@ -409,7 +409,7 @@ apps/nutriphi/apps/landing/
### Farbschema (CSS Custom Properties)
```css
/* NutriPhi Theme - Gesundheit/Natur */
/* Food Theme - Gesundheit/Natur */
--color-primary: #22C55E; /* Green 500 */
--color-primary-hover: #16A34A; /* Green 600 */
--color-secondary: #F97316; /* Orange 500 */

View file

@ -1,8 +1,8 @@
# NutriPhi - App-Planung
# Food - App-Planung
## Vision
NutriPhi ist eine KI-gestützte Ernährungs-Tracking-App, die es Nutzern ermöglicht, ihre Mahlzeiten per Foto, Text oder Sprache zu erfassen und automatisch Nährwertinformationen zu erhalten.
Food ist eine KI-gestützte Ernährungs-Tracking-App, die es Nutzern ermöglicht, ihre Mahlzeiten per Foto, Text oder Sprache zu erfassen und automatisch Nährwertinformationen zu erhalten.
## Planungsdokumente

View file

@ -22,7 +22,7 @@
| 7 | **Presi** | decks, slides | Ja (Store + Pages umgeschrieben) |
| 8 | **Picture** | images, boards, boardItems, tags, imageTags | Ja (Gallery + Boards umgeschrieben) |
| 9 | **Inventar** | collections, items, locations, categories | Nein (local-store angelegt, Stores nutzen noch localStorage) |
| 10 | **NutriPhi** | meals, goals, favorites | Nein (local-store angelegt, Stores nutzen noch API) |
| 10 | **Food** | meals, goals, favorites | Nein (local-store angelegt, Stores nutzen noch API) |
| 11 | **Planta** | plants, plantPhotos, wateringSchedules, wateringLogs | Nein (local-store angelegt, Stores nutzen noch API) |
| 12 | **Storage** | files, folders, tags, fileTags | Nein (local-store angelegt, Stores nutzen noch API) |
| 13 | **Chat** | conversations, messages, templates | Nein (local-store angelegt, Stores nutzen noch API) |
@ -108,7 +108,7 @@ Fertige Endpoints: Better Auth nativ, Auth (Register/Login/Logout/Validate), Gui
```
# Local-First (Phase 3)
ce51fd5f feat(apps): migrate Presi, Picture, Inventar, NutriPhi, Planta, Storage
ce51fd5f feat(apps): migrate Presi, Picture, Inventar, Food, Planta, Storage
8d880f1f feat(apps): migrate Chat, Questions, Mukke, Context, Photos
a31ccc6c feat(apps): add local-store to SkilltTree and CityCorners
7754cf6e refactor(skilltree): replace custom idb → @manacore/local-store

View file

@ -333,7 +333,7 @@ Alle Web-Apps mit CRUD-Datenmodell wurden auf Local-First migriert:
| **Picture** | images, boards, boardItems, tags, imageTags | Replicate API, Upload, Explore |
| **Presi** | decks, slides | Share-Links |
| **Inventar** | collections, items, locations, categories | Nur Sync |
| **NutriPhi** | meals, goals, favorites | AI-Analyse (Gemini), Recommendations |
| **Food** | meals, goals, favorites | AI-Analyse (Gemini), Recommendations |
| **Planta** | plants, plantPhotos, wateringSchedules, wateringLogs | Foto-Upload, AI-Analyse (Gemini) |
| **Storage** | files, folders, tags, fileTags | Datei-Upload/Download, Shares, Versionen |
| **Chat** | conversations, messages, templates | LLM Streaming |

View file

@ -46,7 +46,7 @@ manacore-monorepo/
│ │ │ └── landing/
│ │ └── packages/
│ │
│ ├── nutriphi/
│ ├── food/
│ │ ├── apps/
│ │ │ ├── backend/
│ │ │ ├── mobile/
@ -134,7 +134,7 @@ mkdir -p services
| `cards/` | `apps/cards/` |
| `memoro/` | `apps/memoro/` |
| `picture/` | `apps/picture/` |
| `nutriphi/` | `apps/nutriphi/` |
| `food/` | `apps/food/` |
| `uload/` | `apps/uload/` |
| `news/` | `apps/news/` |
| `manacore/` | `apps/manacore/` |
@ -146,7 +146,7 @@ git mv maerchenzauber apps/maerchenzauber
git mv cards apps/cards
git mv memoro apps/memoro
git mv picture apps/picture
git mv nutriphi apps/nutriphi
git mv food apps/food
git mv uload apps/uload
git mv news apps/news
git mv manacore apps/manacore
@ -160,7 +160,7 @@ Projects with backends at root level need restructuring:
| ------------------------ | ----------------------------- |
| `apps/chat/backend/` | `apps/chat/apps/backend/` |
| `apps/cards/backend/` | `apps/cards/apps/backend/` |
| `apps/nutriphi/backend/` | `apps/nutriphi/apps/backend/` |
| `apps/food/backend/` | `apps/food/apps/backend/` |
```bash
# Chat: move backend into apps/
@ -171,9 +171,9 @@ git mv apps/chat/backend apps/chat/apps/backend
mkdir -p apps/cards/apps
git mv apps/cards/backend apps/cards/apps/backend
# Nutriphi: move backend into apps/
mkdir -p apps/nutriphi/apps
git mv apps/nutriphi/backend apps/nutriphi/apps/backend
# Food: move backend into apps/
mkdir -p apps/food/apps
git mv apps/food/backend apps/food/apps/backend
```
### 2.3 Move mana-core-auth to services/
@ -231,7 +231,7 @@ No changes needed - turbo.json uses task definitions, not paths.
"picture:dev": "turbo run dev --filter=@picture/*...",
"uload:dev": "turbo run dev --filter=@uload/*...",
"chat:dev": "turbo run dev --filter=@chat/*...",
"nutriphi:dev": "turbo run dev --filter=@nutriphi/*...",
"food:dev": "turbo run dev --filter=@food/*...",
"news:dev": "turbo run dev --filter=@news/*...",
"dev:maerchenzauber:web": "pnpm --filter @maerchenzauber/web dev",
@ -266,11 +266,11 @@ No changes needed - turbo.json uses task definitions, not paths.
"dev:chat:backend": "pnpm --filter @chat/backend start:dev",
"dev:chat:app": "turbo run dev --filter=@chat/web --filter=@chat/backend",
"dev:nutriphi:mobile": "pnpm --filter @nutriphi/mobile dev",
"dev:nutriphi:web": "pnpm --filter @nutriphi/web dev",
"dev:nutriphi:landing": "pnpm --filter @nutriphi/landing dev",
"dev:nutriphi:backend": "pnpm --filter @nutriphi/backend start:dev",
"dev:nutriphi:app": "turbo run dev --filter=@nutriphi/web --filter=@nutriphi/backend",
"dev:food:mobile": "pnpm --filter @food/mobile dev",
"dev:food:web": "pnpm --filter @food/web dev",
"dev:food:landing": "pnpm --filter @food/landing dev",
"dev:food:backend": "pnpm --filter @food/backend start:dev",
"dev:food:app": "turbo run dev --filter=@food/web --filter=@food/backend",
"dev:news:mobile": "pnpm --filter @news/mobile dev",
"dev:news:web": "pnpm --filter @news/web dev",

View file

@ -29,7 +29,7 @@
| 12 | **uload** | queries (umfangreich), types | 3 routes (dashboard, links, analytics) | **Done** |
| 13 | **context** | queries, types | 5 routes (dashboard, spaces, documents) | **Done** |
| 14 | **questions** | queries, types | 4 routes (list, collections, new, detail) | **Done** |
| 15 | **nutriphi** | queries, types, constants | 4 routes (dashboard, add, history, goals) | **Done** |
| 15 | **food** | queries, types, constants | 4 routes (dashboard, add, history, goals) | **Done** |
| 16 | **storage** | stores (2), queries, types | 7 routes (files, folders, favorites, search, trash) | **Done** |
| 17 | **cards** | stores (2), components (2), queries | 6 routes (decks, study, explore, progress) | **Done** |
| 18 | **contacts** | stores (3), queries, types | 3 routes (list, detail/edit) | **Done** |
@ -109,7 +109,7 @@ Alle Apps die zum ManaCore-Ökosystem gehören und von Shared IndexedDB, Dashboa
| **times** | Zeiterfassung, Dashboard-Widget |
| **context** | Dokument-Workspace |
| **questions** | Research-Assistant |
| **nutriphi** | Ernährung |
| **food** | Ernährung |
| **planta** | Pflanzenpflege |
| **uload** | URL-Shortener, Links |
| **calc** | Rechner |
@ -259,7 +259,7 @@ src/lib/modules/
├── times/
├── context/
├── questions/
├── nutriphi/
├── food/
├── planta/
├── uload/
├── calc/
@ -367,7 +367,7 @@ src/routes/
│ ├── times/+page.svelte
│ ├── context/+page.svelte
│ ├── questions/+page.svelte
│ ├── nutriphi/+page.svelte
│ ├── food/+page.svelte
│ ├── planta/+page.svelte
│ ├── uload/+page.svelte
│ ├── calc/+page.svelte
@ -475,7 +475,7 @@ import { CITYCORNERS_COLLECTIONS } from '$lib/modules/citycorners/collections';
import { TIMES_COLLECTIONS } from '$lib/modules/times/collections';
import { CONTEXT_COLLECTIONS } from '$lib/modules/context/collections';
import { QUESTIONS_COLLECTIONS } from '$lib/modules/questions/collections';
import { NUTRIPHI_COLLECTIONS } from '$lib/modules/nutriphi/collections';
import { FOOD_COLLECTIONS } from '$lib/modules/food/collections';
import { PLANTA_COLLECTIONS } from '$lib/modules/planta/collections';
import { ULOAD_COLLECTIONS } from '$lib/modules/uload/collections';
import { CALC_COLLECTIONS } from '$lib/modules/calc/collections';
@ -521,7 +521,7 @@ db.version(1).stores({
...TIMES_COLLECTIONS,
...CONTEXT_COLLECTIONS,
...QUESTIONS_COLLECTIONS,
...NUTRIPHI_COLLECTIONS,
...FOOD_COLLECTIONS,
...PLANTA_COLLECTIONS,
...ULOAD_COLLECTIONS,
...CALC_COLLECTIONS,
@ -578,7 +578,7 @@ export const SYNC_APP_MAP: Record<string, string[]> = {
times: ['clients', 'tProjects', 'timeEntries', 'tTags', 'tTemplates', 'tSettings'],
context: ['spaces', 'documents'],
questions: ['qCollections', 'questions', 'answers'],
nutriphi: ['meals', 'goals', 'nFavorites'],
food: ['meals', 'goals', 'nFavorites'],
planta: ['plants', 'plantPhotos', 'wateringSchedules', 'wateringLogs'],
uload: ['links', 'uTags', 'uFolders', 'linkTags'],
calc: ['calculations', 'savedFormulas'],
@ -769,7 +769,7 @@ Nach Komplexität sortiert — einfachste zuerst, um den Prozess einzuüben:
| 12 | **uload** | 12 | 10 | Mittel | Hat Backend-Server |
| 13 | **context** | 10 | 15 | Mittel | Mittlere Komplexität |
| 14 | **questions** | 10 | 14 | Mittel | Hat Backend-API |
| 15 | **nutriphi** | 12 | 10 | Mittel | Hat Backend-Server |
| 15 | **food** | 12 | 10 | Mittel | Hat Backend-Server |
| 16 | **storage** | 12 | 15 | Mittel | Hat Backend + MinIO |
| 17 | **cards** | 12 | 18 | Mittel | Hat Backend-Server |
| 18 | **contacts** | 23 | 39 | Komplex | Backend + Import/Export |