docs: update local-first migration plan and CLAUDE.md to reflect 19/19 completion

- Migration plan Phase 3: updated from 8/8 to 19/19 with full app table
- Added server-side logic column showing what remains per app
- Listed 3 apps not migrated (ManaCore, Matrix, Playground) with reasons
- CLAUDE.md: clarified 19/22 count and added "not migrated" note

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-27 21:36:02 +01:00
parent 16e0d99c5a
commit 97ef728eca
2 changed files with 37 additions and 20 deletions

View file

@ -1,6 +1,6 @@
# Local-First Architektur & Stack-Migration # Local-First Architektur & Stack-Migration
> **Status**: 🟢 In Umsetzung (Phase 1-3 abgeschlossen) > **Status**: 🟢 Phase 3 vollständig abgeschlossen (19/19 Apps migriert)
> **Erstellt**: 2026-03-26 > **Erstellt**: 2026-03-26
> **Zuletzt aktualisiert**: 2026-03-27 > **Zuletzt aktualisiert**: 2026-03-27
> **Autor**: Claude Code + Till Schneider > **Autor**: Claude Code + Till Schneider
@ -313,28 +313,43 @@ apps/todo/apps/backend/ # Oder: services/todo/ (umstrukturieren?)
--- ---
## Phase 3: Rollout auf alle Apps (4-6 Wochen) — 8/8 DONE 2026-03-27 ## Phase 3: Rollout auf alle Apps — 19/19 DONE 2026-03-27
Reihenfolge nach Komplexität: Alle Web-Apps mit CRUD-Datenmodell wurden auf Local-First migriert:
| App | Komplexität | Verbleibende Server-Logik | | App | Collections | Server-Logik verbleibt |
|---|---|---| |---|---|---|
| **Zitare** | Niedrig | Nur Sync | | **Todo** | tasks, projects, labels, taskLabels, reminders | RRULE, Reminders (Hono/Bun) |
| **Calendar** | Mittel | RRULE, Google Calendar OAuth | | **Zitare** | favorites, lists | Nur Sync |
| **Clock** | Niedrig | Nur Sync (Timer-State) | | **Calendar** | calendars, events | RRULE, Google Calendar OAuth |
| **ManaDeck** | Mittel | Spaced Repetition Algorithmus, LLM-Integration | | **Clock** | alarms, timers, worldClocks | Nur Sync |
| **Contacts** | Hoch | Google OAuth Import, vCard/CSV Parser, Foto-Upload | | **ManaDeck** | decks, cards | Spaced Repetition, LLM |
| **Chat** | Hoch | LLM Streaming, Document Processing | | **Contacts** | contacts | Google Import, vCard/CSV, Foto-Upload |
| **Picture** | Hoch | Replicate API, Webhooks, Bild-Upload | | **Picture** | images, boards, boardItems, tags, imageTags | Replicate API, Upload, Explore |
| **Presi** | Mittel | Nur Sync + Export | | **Presi** | decks, slides | Share-Links |
| **Inventar** | collections, items, locations, categories | Nur Sync |
| **NutriPhi** | 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 |
| **Questions** | collections, questions, answers | Research (mana-search) |
| **Mukke** | songs, playlists, playlistSongs, projects, markers | Audio-Upload/Streaming |
| **Context** | spaces, documents | AI-Generierung (Azure/Gemini), Tokens |
| **Photos** | albums, albumItems, favorites, tags, photoTags | Fotos via mana-media |
| **SkilltTree** | skills, activities, achievements | Nur Sync |
| **CityCorners** | locations, favorites | Web-Lookup (mana-search) |
Pro App: **Nicht migriert (kein CRUD-Datenmodell):**
1. `createLocalCollection()` für jede Tabelle definieren - **ManaCore** — Hub/Settings-App, aggregiert andere Apps
2. Stores von API-Calls auf lokale Queries umbauen - **Matrix** — Protocol-Client, kein eigenes Datenmodell
3. Guest-Seed-Daten erstellen - **Playground** — Stateless LLM-Chat
4. NestJS-Endpoints identifizieren die Server-seitig bleiben
5. Diese nach Hono/Bun migrieren Pro App wurde implementiert:
6. Alten NestJS-Backend entfernen 1. `local-store.ts` mit `createLocalStore()` und typisierten Collections
2. `guest-seed.ts` mit Onboarding-Daten für Guest-Mode
3. Layout mit `AuthGate allowGuest={true}` + `handleAuthReady()` (initialize + startSync)
4. `GuestWelcomeModal` für Erst-Besuch-Erfahrung
5. `@manacore/local-store` als Dependency
--- ---

View file

@ -522,7 +522,7 @@ Logged in: App → IndexedDB → UI → SyncEngine → mana-sync (Go) → Postg
← WebSocket push ← ← WebSocket push ←
``` ```
### Migrated Apps ### Migrated Apps (19/22)
| App | Collections | Status | | App | Collections | Status |
|-----|------------|--------| |-----|------------|--------|
@ -546,6 +546,8 @@ Logged in: App → IndexedDB → UI → SyncEngine → mana-sync (Go) → Postg
| SkilltTree | skills, activities, achievements | Done | | SkilltTree | skills, activities, achievements | Done |
| CityCorners | locations, favorites | Done | | CityCorners | locations, favorites | Done |
**Not migrated (no CRUD data model):** ManaCore (hub), Matrix (protocol client), Playground (stateless)
### Dev Commands (Local-First Stack) ### Dev Commands (Local-First Stack)
```bash ```bash