refactor: rename ManaDeck to Cards across entire monorepo

Rename the flashcard/deck management app from ManaDeck to Cards:
- Directory: apps/manadeck → apps/cards, packages/manadeck-database → packages/cards-database
- Packages: @manadeck/* → @cards/*, @manacore/manadeck-database → @manacore/cards-database
- Domain: manadeck.mana.how → cards.mana.how
- Storage: manadeck-storage → cards-storage
- Database: manadeck → cards
- All shared packages, infra configs, services, i18n, and docs updated
- 244 files changed, zero remaining manadeck references

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-01 11:45:21 +02:00
parent 29b77f22e4
commit 75a3ea2957
244 changed files with 907 additions and 924 deletions

View file

@ -46,7 +46,7 @@ injectUmamiAnalytics(html) → <script defer src="stats.mana.how/script.js" d
|-----|-------------|
| Chat | `UMAMI_WEBSITE_ID_CHAT_LANDING` |
| ManaCore | `UMAMI_WEBSITE_ID_MANACORE_LANDING` |
| ManaDeck | `UMAMI_WEBSITE_ID_MANADECK_LANDING` |
| Cards | `UMAMI_WEBSITE_ID_CARDS_LANDING` |
| Calendar | `UMAMI_WEBSITE_ID_CALENDAR_LANDING` |
| Clock | `UMAMI_WEBSITE_ID_CLOCK_LANDING` |
| Picture | `UMAMI_WEBSITE_ID_PICTURE_LANDING` |
@ -66,7 +66,7 @@ injectUmamiAnalytics(html) → <script defer src="stats.mana.how/script.js" d
| Clock | `UMAMI_WEBSITE_ID_CLOCK` |
| Contacts | `UMAMI_WEBSITE_ID_CONTACTS` |
| Picture | `UMAMI_WEBSITE_ID_PICTURE` |
| ManaDeck | `UMAMI_WEBSITE_ID_MANADECK` |
| Cards | `UMAMI_WEBSITE_ID_CARDS` |
| Planta | `UMAMI_WEBSITE_ID_PLANTA` |
| Mukke | `UMAMI_WEBSITE_ID_MUKKE` |
| Questions | `UMAMI_WEBSITE_ID_QUESTIONS` |
@ -312,16 +312,16 @@ ContactsEvents.tagCreated(); // tag_created
ContactsEvents.searchPerformed(); // search_performed
```
### ManaDeckEvents
### CardsEvents
```typescript
import { ManaDeckEvents } from '@manacore/shared-utils/analytics';
import { CardsEvents } from '@manacore/shared-utils/analytics';
ManaDeckEvents.deckCreated(); // deck_created
ManaDeckEvents.deckStudied(25); // deck_studied { cards: 25 }
ManaDeckEvents.cardCreated(); // card_created
ManaDeckEvents.cardReviewed(4); // card_reviewed { rating: 4 }
ManaDeckEvents.aiCardsGenerated(10); // ai_cards_generated { count: 10 }
CardsEvents.deckCreated(); // deck_created
CardsEvents.deckStudied(25); // deck_studied { cards: 25 }
CardsEvents.cardCreated(); // card_created
CardsEvents.cardReviewed(4); // card_reviewed { rating: 4 }
CardsEvents.aiCardsGenerated(10); // ai_cards_generated { count: 10 }
```
### SubscriptionEvents

View file

@ -79,7 +79,7 @@ In zwei intensiven Sessions wurde die gesamte ManaCore-Architektur von einem **A
| Calendar | 3003 | 119 | RRULE Expansion, ICS Import |
| Contacts | 3004 | 89 | Avatar Upload (S3), vCard Import |
| Picture | 3006 | 144 | Replicate Image Gen + S3 Upload |
| ManaDeck | 3009 | 130 | AI Deck/Card Generation |
| Cards | 3009 | 130 | AI Deck/Card Generation |
| Mukke | 3010 | 106 | S3 Upload/Download URLs |
| Questions | 3011 | 121 | Web Research (mana-search) |
| Storage | 3016 | 117 | File Upload/Download + Versions |
@ -322,7 +322,7 @@ mana-analytics (Hono, 475 LOC)
| 3 | Calendar | calendars, events | ✅ Komplett |
| 4 | Clock | alarms, timers, worldClocks | ✅ Komplett |
| 5 | Contacts | contacts | ✅ Komplett |
| 6 | ManaDeck | decks, cards | ✅ Komplett |
| 6 | Cards | decks, cards | ✅ Komplett |
| 7 | Presi | decks, slides | ✅ Komplett |
| 8 | Picture | images, boards, boardItems, tags, imageTags | ✅ Komplett |
| 9 | Inventar | collections, items, locations, categories | ✅ Komplett |
@ -484,7 +484,7 @@ Loesung: Explizites `AuthServiceInterface` mit allen 37 Methoden. Alle 5 Apps ha
| RN 0.76 / 0.81 / 0.83 Mix | **RN 0.83.2** |
| expo-router 4.x / 6.x / 55.x Mix | **expo-router ~55.0.5** |
Alle 7 Mobile-Apps (chat, context, manacore, manadeck, matrix, picture, traces) auf einheitlichem Expo SDK 55.
Alle 7 Mobile-Apps (chat, context, manacore, cards, matrix, picture, traces) auf einheitlichem Expo SDK 55.
---

View file

@ -1,8 +1,8 @@
# ManaDeck: Migration zu PostgreSQL + Drizzle ORM
# Cards: Migration zu PostgreSQL + Drizzle ORM
## Übersicht
Dieses Dokument beschreibt die Migration von ManaDeck von Supabase zu einer selbst-gehosteten PostgreSQL-Datenbank mit Drizzle ORM.
Dieses Dokument beschreibt die Migration von Cards von Supabase zu einer selbst-gehosteten PostgreSQL-Datenbank mit Drizzle ORM.
---
@ -10,14 +10,14 @@ Dieses Dokument beschreibt die Migration von ManaDeck von Supabase zu einer selb
```
┌─────────────────┐ ┌─────────────────┐
ManaDeck Web │ │ ManaDeck Mobile │
Cards Web │ │ Cards Mobile │
│ (SvelteKit) │ │ (Expo) │
└────────┬────────┘ └────────┬────────┘
│ │
└───────────┬───────────┘
┌───────────▼───────────┐
ManaDeck Backend │
Cards Backend │
│ (NestJS) │
└───────────┬───────────┘
@ -36,14 +36,14 @@ Dieses Dokument beschreibt die Migration von ManaDeck von Supabase zu einer selb
```
┌─────────────────┐ ┌─────────────────┐
ManaDeck Web │ │ ManaDeck Mobile │
Cards Web │ │ Cards Mobile │
│ (SvelteKit) │ │ (Expo) │
└────────┬────────┘ └────────┬────────┘
│ │
└───────────┬───────────┘
┌───────────▼───────────┐
ManaDeck Backend │
Cards Backend │
│ (NestJS + Drizzle) │
└───────────┬───────────┘
@ -214,7 +214,7 @@ CREATE TABLE user_stats (
### Dateistruktur
```
manadeck/
cards/
├── packages/
│ └── database/ # Neues shared database package
│ ├── src/
@ -355,10 +355,10 @@ export type Database = typeof db;
# Option B: Docker lokal
docker run -d \
--name manadeck-postgres \
-e POSTGRES_USER=manadeck \
--name cards-postgres \
-e POSTGRES_USER=cards \
-e POSTGRES_PASSWORD=secure_password \
-e POSTGRES_DB=manadeck \
-e POSTGRES_DB=cards \
-p 5432:5432 \
postgres:16-alpine
@ -370,8 +370,8 @@ docker run -d \
```bash
cd /Users/tillschneider/Documents/__00__Code/manacore-monorepo
mkdir -p packages/manadeck-database
cd packages/manadeck-database
mkdir -p packages/cards-database
cd packages/cards-database
pnpm init
```
@ -415,7 +415,7 @@ pg_dump -h db.your-project.supabase.co \
--table=deck_templates \
--table=ai_generations \
--table=user_stats \
> manadeck_data.sql
> cards_data.sql
```
### Phase 3: Backend Migration (Tag 3-5)
@ -424,8 +424,8 @@ pg_dump -h db.your-project.supabase.co \
```typescript
// repositories/deck.repository.ts
import { db } from '@manadeck/database';
import { decks, cards } from '@manadeck/database/schema';
import { db } from '@cards/database';
import { decks, cards } from '@cards/database/schema';
import { eq, and, or, desc } from 'drizzle-orm';
export class DeckRepository {
@ -663,8 +663,8 @@ export const deckStore = createDeckStore();
```typescript
// tests/deck.integration.test.ts
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import { db } from '@manadeck/database';
import { decks } from '@manadeck/database/schema';
import { db } from '@cards/database';
import { decks } from '@cards/database/schema';
import { DeckService } from '../services/deck.service';
describe('DeckService', () => {
@ -696,9 +696,9 @@ describe('DeckService', () => {
```typescript
// scripts/migrate-data.ts
import { db as newDb } from '@manadeck/database';
import { db as newDb } from '@cards/database';
import { createClient } from '@supabase/supabase-js';
import { decks, cards } from '@manadeck/database/schema';
import { decks, cards } from '@cards/database/schema';
const supabase = createClient(process.env.SUPABASE_URL!, process.env.SUPABASE_SERVICE_KEY!);

View file

@ -19,7 +19,7 @@ Für jede Domain: **CNAME Record hinzufügen** (oder bestehenden ändern), Proxi
| `it` | CNAME | `bb0ea86d-8253-4a54-838b-107bb7945be9.cfargotunnel.com` | **Neu erstellen** |
| `citycorners` | CNAME | `bb0ea86d-8253-4a54-838b-107bb7945be9.cfargotunnel.com` | **Neu erstellen** |
| `nutriphi` | CNAME | `bb0ea86d-8253-4a54-838b-107bb7945be9.cfargotunnel.com` | **Neu erstellen** |
| `manadeck` | CNAME | `bb0ea86d-8253-4a54-838b-107bb7945be9.cfargotunnel.com` | **Neu erstellen** |
| `cards` | CNAME | `bb0ea86d-8253-4a54-838b-107bb7945be9.cfargotunnel.com` | **Neu erstellen** |
| `docs` | CNAME | `bb0ea86d-8253-4a54-838b-107bb7945be9.cfargotunnel.com` | **Neu erstellen** |
**Für bestehende Landing-Domains (aktuell auf CF Pages):**
@ -41,7 +41,7 @@ Diese Domains zeigen noch auf Cloudflare Pages. Um sie auf Self-Hosted umzustell
### Reihenfolge
1. **Zuerst:** Neue Domains erstellen (`it`, `citycorners`, `nutriphi`, `manadeck`, `docs`)
1. **Zuerst:** Neue Domains erstellen (`it`, `citycorners`, `nutriphi`, `cards`, `docs`)
2. **Danach:** Bestehende Landing-Domains von Pages auf Tunnel migrieren (eine nach der anderen, testen)
3. **Zuletzt:** Alte CF Pages Projekte löschen (optional, kosten nichts)
@ -110,7 +110,7 @@ Cloudflare Tunnel (bb0ea86d...)
| `zitares.mana.how` | Zitare Landing | `/srv/landings/zitare` |
| `presis.mana.how` | Presi Landing | `/srv/landings/presi` |
| `clocks.mana.how` | Clock Landing | `/srv/landings/clock` |
| `manadeck.mana.how` | ManaDeck Landing | `/srv/landings/manadeck` |
| `cards.mana.how` | Cards Landing | `/srv/landings/cards` |
| `nutriphi.mana.how` | NutriPhi Landing | `/srv/landings/nutriphi` |
| `citycorners.mana.how` | CityCorners Landing | `/srv/landings/citycorners` |
| `docs.mana.how` | Dokumentation | `/srv/landings/docs` |

View file

@ -25,9 +25,9 @@ Diese Befehle starten alle Apps eines bestimmten Typs gleichzeitig:
| Befehl | Beschreibung | Apps |
| ------------------ | -------------------------- | ------------------------------------------ |
| `pnpm dev:web` | Startet alle Web-Apps | maerchenzauber, manacore, manadeck, memoro |
| `pnpm dev:landing` | Startet alle Landing Pages | maerchenzauber, manacore, manadeck, memoro |
| `pnpm dev:mobile` | Startet alle Mobile-Apps | maerchenzauber, manacore, manadeck, memoro |
| `pnpm dev:web` | Startet alle Web-Apps | maerchenzauber, manacore, cards, memoro |
| `pnpm dev:landing` | Startet alle Landing Pages | maerchenzauber, manacore, cards, memoro |
| `pnpm dev:mobile` | Startet alle Mobile-Apps | maerchenzauber, manacore, cards, memoro |
### Beispiel
@ -50,7 +50,7 @@ Diese Befehle starten ein komplettes Projekt mit allen zugehörigen Apps und Dep
| ------------------------- | ------------------------------------------------------ |
| `pnpm maerchenzauber:dev` | Startet Maerchenzauber (Backend, Web, Mobile, Landing) |
| `pnpm manacore:dev` | Startet Manacore (Web, Mobile, Landing) |
| `pnpm manadeck:dev` | Startet Manadeck (Web, Mobile, Landing) |
| `pnpm cards:dev` | Startet Cards (Web, Mobile, Landing) |
| `pnpm memoro:dev` | Startet Memoro (Web, Mobile, Landing) |
## Turbo Filter
@ -73,7 +73,7 @@ Da die Package-Namen im Monorepo unterschiedlich sind, hier eine Übersicht:
| -------------- | ------------------ | ---------------------- | --------------------- | ---------------------- |
| maerchenzauber | `@storyteller/web` | `@storyteller/landing` | `@storyteller/mobile` | `@storyteller/backend` |
| manacore | `manacore-web` | `manacore-landing` | `manacore` | - |
| manadeck | `web` | `landing` | `manadeck` | - |
| cards | `web` | `landing` | `cards` | - |
| memoro | `memoro-web` | `memoro-landing` | `memoro` | - |
### Filter-Syntax
@ -92,11 +92,11 @@ Wenn mehrere Apps gleichzeitig laufen, verwenden sie unterschiedliche Ports:
| ------- | -------------- | ------------- |
| Web | maerchenzauber | 5173 |
| Web | manacore | 5174 |
| Web | manadeck | 5175 |
| Web | cards | 5175 |
| Web | memoro | 5176 |
| Landing | maerchenzauber | 4321 |
| Landing | manacore | 4322 |
| Landing | manadeck | 4323 |
| Landing | cards | 4323 |
| Landing | memoro | 4324 |
| Backend | maerchenzauber | 3000 |

View file

@ -46,8 +46,8 @@ The generator reads `.env.development` and creates app-specific `.env` files wit
- `apps/chat/apps/web/.env`
- `apps/manacore/apps/mobile/.env`
- `apps/manacore/apps/web/.env`
- `apps/manadeck/apps/server/.env`
- `apps/manadeck/apps/web/.env`
- `apps/cards/apps/server/.env`
- `apps/cards/apps/web/.env`
- `apps/*/apps/server/.env` (all apps with compute servers)
- `apps/*/apps/web/.env` (all web apps)
- `apps/*/apps/mobile/.env` (all mobile apps)
@ -103,13 +103,13 @@ The generator reads `.env.development` and creates app-specific `.env` files wit
| `MANACORE_SUPABASE_URL` | Supabase project URL |
| `MANACORE_SUPABASE_ANON_KEY` | Supabase anonymous key |
### Manadeck Project
### Cards Project
| Variable | Description | Default |
|----------|-------------|---------|
| `MANADECK_BACKEND_PORT` | Backend service port | `3004` |
| `MANADECK_SUPABASE_URL` | Supabase project URL | - |
| `MANADECK_SUPABASE_ANON_KEY` | Supabase anonymous key | - |
| `CARDS_BACKEND_PORT` | Backend service port | `3004` |
| `CARDS_SUPABASE_URL` | Supabase project URL | - |
| `CARDS_SUPABASE_ANON_KEY` | Supabase anonymous key | - |
## Adding New Variables

View file

@ -6,7 +6,7 @@
|-----|----------|-------------|--------|--------|
| matrix | **55** | 0.83.2 | ~55.0.5 | Target version |
| manacore | 54 | 0.81.5 | ~6.0.15 | Needs upgrade |
| manadeck | 54 | 0.81.4 | ~6.0.10 | Needs upgrade |
| cards | 54 | 0.81.4 | ~6.0.10 | Needs upgrade |
| picture | 54 | 0.81.4 | ~6.0.10 | Needs upgrade |
| traces | 54 | 0.81.4 | ~6.0.0 | Needs upgrade |
| chat | **52** | 0.76.7 | ~4.0.6 | Needs upgrade (2 majors!) |
@ -59,7 +59,7 @@ npx expo start -c
## Recommended Upgrade Order
1. **traces** (simplest app, minimal deps)
2. **manadeck** (medium complexity)
2. **cards** (medium complexity)
3. **picture** (has image handling)
4. **manacore** (hub app, important)
5. **context** (SDK 52 → 55, bigger jump)

View file

@ -84,7 +84,7 @@ Legende: LOCAL = Self-hosted | CLOUD = Externer Dienst | FREE = Kostenlos
|--------|--------|-------|------------------|-------------------|
| **Replicate** | Picture | Bildgenerierung (Flux, SDXL, SD) | `PICTURE_REPLICATE_API_TOKEN` | €20-100/Monat |
| **OpenRouter** | Chat | Cloud LLMs (Claude, GPT, Llama, DeepSeek) | `OPENROUTER_API_KEY` | €10-50/Monat |
| **Google Gemini** | Planta, Nutriphi, ManaDeck | Vision & Text AI | `GEMINI_API_KEY`, `PLANTA_GEMINI_API_KEY` | €5-20/Monat |
| **Google Gemini** | Planta, Nutriphi, Cards | Vision & Text AI | `GEMINI_API_KEY`, `PLANTA_GEMINI_API_KEY` | €5-20/Monat |
| **Azure OpenAI** | Chat (Docker) | GPT-4o via Azure | `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_API_KEY` | Optional |
| **Anthropic** | Mana Games | Claude API | `MANA_GAMES_ANTHROPIC_API_KEY` | Optional |
| **Ollama** | Chat | Lokale LLMs (Gemma 3, Llama) | `OLLAMA_URL` | ✅ Bereits lokal |
@ -102,7 +102,7 @@ Legende: LOCAL = Self-hosted | CLOUD = Externer Dienst | FREE = Kostenlos
**Konfigurierte MinIO Buckets:**
- `picture-storage` - AI-generierte Bilder
- `chat-storage` - User-Uploads
- `manadeck-storage` - Card/Deck Assets
- `cards-storage` - Card/Deck Assets
- `planta-storage` - Pflanzenfotos
- `nutriphi-storage` - Mahlzeitenfotos
- `presi-storage` - Präsentationsfolien
@ -142,7 +142,7 @@ Legende: LOCAL = Self-hosted | CLOUD = Externer Dienst | FREE = Kostenlos
- `chat-landing.pages.dev`
- `picture-landing.pages.dev`
- `manacore-landing.pages.dev`
- `manadeck-landing.pages.dev`
- `cards-landing.pages.dev`
- `zitare-landing.pages.dev`
### 6. Monitoring
@ -477,7 +477,7 @@ PICTURE_REPLICATE_API_TOKEN=r8_xxx
# OpenRouter (Chat)
OPENROUTER_API_KEY=sk-or-v1-xxx
# Google Gemini (Planta, Nutriphi, ManaDeck)
# Google Gemini (Planta, Nutriphi, Cards)
GEMINI_API_KEY=AIza...
PLANTA_GEMINI_API_KEY=AIza...
NUTRIPHI_GEMINI_API_KEY=AIza...

View file

@ -8,7 +8,7 @@ Alle Web-Projekte im Monorepo verwenden **svelte-i18n** für die Internationalis
|---------|----------|---------|
| maerchenzauber | de, en, es, fr, it | de |
| manacore | de, en, es, fr, it | de |
| manadeck | de, en, es, fr, it | de |
| cards | de, en, es, fr, it | de |
| memoro | de, en, es, fr, it | de |
| picture | de, en | de |
| uload | de, en, es, fr, it | en |

View file

@ -49,7 +49,7 @@ These apps have server-side compute and support both `local` and `full` modes:
| Calendar | 3003 | 5179 | Yes | Yes |
| Contacts | 3004 | 5184 | Yes | Yes |
| Picture | 3006 | 5175 | Yes | Yes |
| ManaDeck | 3009 | 5176 | Yes | Yes |
| Cards | 3009 | 5176 | Yes | Yes |
| Mukke | 3010 | 5180 | Yes | Yes |
| Questions | 3011 | 5111 | Yes | Yes |
| Storage | 3016 | 5185 | Yes | Yes |

View file

@ -190,7 +190,7 @@ Ein User gilt als "verified" wenn MINDESTENS EINS zutrifft:
### Reward-Struktur
#### ManaDeck
#### Cards
| Metrik | Threshold | Credits | Max/Monat |
|--------|-----------|---------|-----------|
@ -566,7 +566,7 @@ CREATE TABLE community.bounty_pool (
- [ ] Create Admin endpoints für Manual Review Queue
- [ ] **Integration in Content Apps**
- [ ] ManaDeck: Track deck copies
- [ ] Cards: Track deck copies
- [ ] Zitare: Track quote submissions/views
- [ ] Presi: Track template usage

View file

@ -206,7 +206,7 @@ Die folgenden Services wurden aus den einzelnen Bots konsolidiert:
| Service | Vorher | Nachher | Migrierte Bots |
|---------|--------|---------|----------------|
| `SessionService` | 11x dupliziert | 1x in bot-services | picture, contacts, chat, zitare, skilltree, presi, questions, storage, planta, manadeck, nutriphi |
| `SessionService` | 11x dupliziert | 1x in bot-services | picture, contacts, chat, zitare, skilltree, presi, questions, storage, planta, cards, nutriphi |
| `TranscriptionService` | 6x dupliziert | 1x in bot-services | todo, clock, zitare, nutriphi, project-doc |
**Status: Vollständig migriert** - Alle 11 Bots mit SessionService und alle 5 Bots mit TranscriptionService nutzen jetzt die gemeinsamen Services aus `@manacore/bot-services`.
@ -494,7 +494,7 @@ async handleCall(roomId: string, userId: string, index: number) {
| **matrix-nutriphi-bot** | 3316 | nutriphi:3023 | Ernährungstracking |
| **matrix-zitare-bot** | 3321 | zitare:3019 | Tägliche Zitate |
| **matrix-questions-bot** | 3324 | questions:3011 | Q&A mit Web-Recherche |
| **matrix-manadeck-bot** | 3321 | manadeck:3009 | Kartendecks & Lernen |
| **matrix-cards-bot** | 3321 | cards:3009 | Kartendecks & Lernen |
| **matrix-planta-bot** | 3322 | planta:3022 | Pflanzenpflege |
| **matrix-skilltree-bot** | 3324 | skilltree:3024 | Skill Tree & XP |
| **matrix-presi-bot** | 3308 | presi:3008 | Präsentationen |

View file

@ -46,7 +46,7 @@
- **Warum:** Reise-Apps monetarisieren gut. AI-generierte City Guides sind unique. Saisonaler Peak (Urlaubszeit), aber wiederkehrende Nutzung bei Vielreisenden.
- **Empfehlung:** Free (Tracking unlimited, 1 Guide/Stadt), Premium (unlimited Guides + Offline-Download).
### 7. ManaDeck (Deck/Flashcard Management)
### 7. Cards (Deck/Flashcard Management)
- **Modell:** Credit-System vorhanden (10 Mana/Deck, 5/AI-Generation)
- **Warum:** Anki, Quizlet sind bewiesene Märkte. AI-Kartengeneration ist starker USP. Studenten zahlen für Lerntools (besonders vor Prüfungen).

View file

@ -39,7 +39,7 @@ All monitoring tools are publicly accessible - no login required (except GlitchT
| Planta | https://stats.mana.how/share/1e83a8a67fa84d3995455c21dedbe3a2/planta-webapp |
| Presi | https://stats.mana.how/share/a1eb8d1fa4d543e6b97ac41351fe1c6f/presi-webapp |
| Skilltree | https://stats.mana.how/share/5de13e0895ae4a69aa2a834f985be14d/skilltree-webapp |
| ManaDeck | https://stats.mana.how/share/1c1d54c4782943e58dde0a6db7c86ec6/manadeck-webapp |
| Cards | https://stats.mana.how/share/1c1d54c4782943e58dde0a6db7c86ec6/cards-webapp |
### GlitchTip Error Tracking

View file

@ -59,7 +59,7 @@ Pure CRUD apps use mana-sync directly.
| 3033 | contacts-server | Hono/Bun | Google Contacts, vCard import/export |
| 3034 | storage-server | Hono/Bun | S3 file ops, versioning, shares |
| 3035 | picture-server | Hono/Bun | Replicate AI, generation orchestration |
| 3036 | manadeck-server | Hono/Bun | AI card generation |
| 3036 | cards-server | Hono/Bun | AI card generation |
| 3037 | mukke-server | Hono/Bun | Audio processing, BPM, ID3 tags |
| 3038 | nutriphi-server | Hono/Bun | Gemini meal analysis |
| 3039 | planta-server | Hono/Bun | Gemini plant analysis |
@ -94,7 +94,7 @@ Pure CRUD apps use mana-sync directly.
| 5020 | skilltree-web | *(local-first only)* |
| 5021 | picture-web | 3035 picture-server |
| 5022 | citycorners-web | *(local-first only)* |
| 5023 | manadeck-web | 3036 manadeck-server |
| 5023 | cards-web | 3036 cards-server |
| 5024 | mukke-web | 3037 mukke-server |
| 5025 | inventar-web | *(local-first only)* |
| 5026 | context-web | *(local-first only)* |

View file

@ -8,7 +8,7 @@ Dieses Dokument bietet eine umfassende Übersicht über alle Projekte im Manacor
2. [Projekte](#projekte)
- [Maerchenzauber](#maerchenzauber)
- [Manacore](#manacore)
- [Manadeck](#manadeck)
- [Cards](#cards)
- [Memoro](#memoro)
- [Picture](#picture)
- [uLoad](#uload)
@ -46,7 +46,7 @@ pnpm run dev
# Einzelnes Projekt starten
pnpm run maerchenzauber:dev
pnpm run manacore:dev
pnpm run manadeck:dev
pnpm run cards:dev
pnpm run memoro:dev
pnpm run picture:dev
pnpm run uload:dev
@ -129,7 +129,7 @@ Manacore ist die zentrale Plattform für Organisations-Management, Team-Kollabor
#### Unterstützte Apps
- **Memoro** - Sprachaufnahmen und Memory-Management
- **ManaDeck** - KI-gestützte Lernkarten
- **Cards** - KI-gestützte Lernkarten
- **Storyteller** - Kreatives Schreiben mit KI
- **ManaCore** - Zentrale Account- und Organisationsverwaltung
@ -155,11 +155,11 @@ manacore/
---
### Manadeck
### Cards
**KI-gestütztes Lernkarten-System**
Manadeck ist ein Deck-Management-System mit KI-gestützter Kartenerstellung und dem integrierten Mana Credit-System.
Cards ist ein Deck-Management-System mit KI-gestützter Kartenerstellung und dem integrierten Mana Credit-System.
#### Features
@ -191,7 +191,7 @@ Manadeck ist ein Deck-Management-System mit KI-gestützter Kartenerstellung und
#### Projektstruktur
```
manadeck/
cards/
├── backend/ # NestJS API Server
├── apps/
│ ├── mobile/ # Expo React Native App
@ -489,7 +489,7 @@ Alle Projekte teilen gemeinsame Packages unter `packages/`:
| Package | Beschreibung |
| ------------------- | ------------------------- |
| `manadeck-database` | Manadeck Datenbank-Schema |
| `cards-database` | Cards Datenbank-Schema |
| `uload-database` | uLoad Datenbank-Schema |
### Verwendung
@ -601,7 +601,7 @@ Siehe die jeweiligen CLAUDE.md Dateien in den Projektverzeichnissen für detaill
- `maerchenzauber/CLAUDE.md`
- `manacore/CLAUDE.md`
- `manadeck/CLAUDE.md` (im Root)
- `cards/CLAUDE.md` (im Root)
- `memoro/CLAUDE.md`
- `uload/CLAUDE.md`
- `chat/apps/mobile/CLAUDE.md`
@ -615,7 +615,7 @@ Siehe die jeweiligen CLAUDE.md Dateien in den Projektverzeichnissen für detaill
- [i18n](./I18N.md) - Internationalisierungs-Guide
- [Self-Hosting Guide](./SELF-HOSTING-GUIDE.md) - Self-Hosting Anleitung
- [uLoad Deployment](./ULOAD-DEPLOYMENT.md) - uLoad Deployment Guide
- [Manadeck Postgres Migration](./MANADECK_POSTGRES_MIGRATION.md) - Datenbank-Migration
- [Cards Postgres Migration](./CARDS_POSTGRES_MIGRATION.md) - Datenbank-Migration
---
@ -639,7 +639,7 @@ Dieser Abschnitt enthält durchdachte Ideen für neue Anwendungen, die das Manac
- Kreatives Schreiben (Maerchenzauber)
- Sprachaufnahmen & Transkription (Memoro)
- Lernen & Wissensmanagement (Manadeck)
- Lernen & Wissensmanagement (Cards)
- Bildbearbeitung (Picture)
- Link-Management (uLoad)
- Kommunikation (Chat)
@ -664,7 +664,7 @@ Dieser Abschnitt enthält durchdachte Ideen für neue Anwendungen, die das Manac
**Synergien:**
- **Memoro-Integration:** Audio-Memos werden automatisch als Notizen importiert
- **Manadeck-Integration:** Aus Notizen Lernkarten generieren
- **Cards-Integration:** Aus Notizen Lernkarten generieren
- **Chat-Integration:** Chat-Verläufe als Notizen speichern
**Credit-Modell:**
@ -910,7 +910,7 @@ Dieser Abschnitt enthält durchdachte Ideen für neue Anwendungen, die das Manac
**Synergien:**
- **Manadeck-Integration:** Kursinhalte → Lernkarten
- **Cards-Integration:** Kursinhalte → Lernkarten
- **Memoro-Integration:** Vorlesungen aufnehmen und transkribieren
- **ManaNote-Integration:** Kurs-Notizen
- **ManaVideo-Integration:** Video-Lektionen
@ -943,7 +943,7 @@ Dieser Abschnitt enthält durchdachte Ideen für neue Anwendungen, die das Manac
**Synergien:**
- **Manadeck-Integration:** Highlights → Lernkarten
- **Cards-Integration:** Highlights → Lernkarten
- **ManaNote-Integration:** Exzerpte in Notizen überführen
- **ManaLearn-Integration:** Leselisten für Kurse
@ -1403,7 +1403,7 @@ Basierend auf Synergien mit bestehenden Apps, Marktpotenzial und technischer Mac
| ------------- | ------------------------------------------------- |
| **ManaNote** | Natürliche Erweiterung von Memoro, hohe Synergien |
| **ManaWrite** | Nutzt bestehende KI-Infrastruktur, klarer Markt |
| **ManaRead** | Ergänzt Manadeck perfekt, Bildungsmarkt |
| **ManaRead** | Ergänzt Cards perfekt, Bildungsmarkt |
| **ManaMeet** | Memoro-Technologie wiederverwendbar |
#### Mittlere Priorität (Strategisch wichtig)
@ -1414,7 +1414,7 @@ Basierend auf Synergien mit bestehenden Apps, Marktpotenzial und technischer Mac
| **ManaCalendar** | Verbindet alle Produktivitäts-Apps |
| **ManaPodcast** | Wachsender Markt, Memoro-Basis |
| **ManaDesign** | Picture erweitern, Marketing-Use-Cases |
| **ManaLearn** | Manadeck + Memoro + Video kombinieren |
| **ManaLearn** | Cards + Memoro + Video kombinieren |
#### Langfristig (Exploration)
@ -1456,9 +1456,9 @@ Basierend auf Synergien mit bestehenden Apps, Marktpotenzial und technischer Mac
### Fazit
Das Manacore-Ökosystem hat enormes Potenzial für Erweiterungen. Die bestehende Infrastruktur (Credits, Auth, Shared Packages, KI-Integration) ermöglicht schnelle Entwicklung neuer Apps. Der Fokus sollte zunächst auf Produktivitäts-Tools liegen, die starke Synergien mit Memoro und Manadeck haben.
Das Manacore-Ökosystem hat enormes Potenzial für Erweiterungen. Die bestehende Infrastruktur (Credits, Auth, Shared Packages, KI-Integration) ermöglicht schnelle Entwicklung neuer Apps. Der Fokus sollte zunächst auf Produktivitäts-Tools liegen, die starke Synergien mit Memoro und Cards haben.
Die Vision: **Ein zusammenhängendes Ökosystem, in dem Daten nahtlos zwischen Apps fließen** - von der Sprachaufnahme (Memoro) über Notizen (ManaNote) zu Lernkarten (Manadeck), mit KI-Unterstützung auf jedem Schritt.
Die Vision: **Ein zusammenhängendes Ökosystem, in dem Daten nahtlos zwischen Apps fließen** - von der Sprachaufnahme (Memoro) über Notizen (ManaNote) zu Lernkarten (Cards), mit KI-Unterstützung auf jedem Schritt.
---

View file

@ -874,7 +874,7 @@ Diese Apps existieren bereits im Monorepo, sind aber noch nicht auf dem Server:
|-----|--------------|--------|-----------|
| **Zitare** | Tägliche Inspirations-Zitate | Backend + Web fertig | Hoch |
| **Picture** | AI-Bildgenerierung | Braucht GPU/API | Mittel |
| **ManaDeck** | Kartenspiel/Deckbuilding | Backend + Web fertig | Niedrig |
| **Cards** | Kartenspiel/Deckbuilding | Backend + Web fertig | Niedrig |
| **Planta** | Pflanzenpflege-Tracker | In Entwicklung | Niedrig |
### Telegram Bots (nicht deployed)

View file

@ -411,7 +411,7 @@ manacore-web:
| 3002 | chat-backend |
| 3006 | picture-backend |
| 3007 | zitare-backend |
| 3009 | manadeck-backend |
| 3009 | cards-backend |
| 3015 | contacts-backend |
| 3016 | calendar-backend |
| 3017 | clock-backend |

View file

@ -30,7 +30,7 @@ All web apps now use the shared packages consistently:
**Logo Components** - Migrated to `@manacore/shared-branding`:
- `memoro/apps/web/src/lib/components/MemoroLogo.svelte` → uses `AppLogo`
- `manadeck/apps/web/src/lib/components/ManaDeckLogo.svelte` → uses `AppLogo`
- `cards/apps/web/src/lib/components/CardsLogo.svelte` → uses `AppLogo`
- `manacore/apps/web/src/lib/components/ManaCoreLogo.svelte` → uses `AppLogo`
- `maerchenzauber/apps/web/src/lib/components/StorytellerLogo.svelte` → uses `AppLogo`
@ -69,7 +69,7 @@ All web apps now use the shared packages consistently:
- ManaCore Web
- Memoro Web
- Maerchenzauber Web
- ManaDeck Web
- Cards Web
---
@ -127,7 +127,7 @@ packages/shared-tailwind/
- Memoro Web (full migration with theme.css + components.css)
- ManaCore Web (preset only, keeps local colors)
- ManaDeck Web (colors import, HSL-based system)
- Cards Web (colors import, HSL-based system)
- Maerchenzauber Web (dependency added)
---

View file

@ -124,7 +124,7 @@ Da bereits **mana-sync (Go)** als zentraler Sync-Server existiert und **local-fi
- Schwer (~50 MB node_modules pro Backend)
- Viel Boilerplate (Module, Controller, Service, DTO fuer jede Entity)
- Overkill fuer simple CRUD-Operationen
- NestJS Version-Drift: 18 Backends auf ^10.4.x, ManaDeck auf ^11.0.1
- NestJS Version-Drift: 18 Backends auf ^10.4.x, Cards auf ^11.0.1
### Empfehlung
@ -185,7 +185,7 @@ Mischt nicht beides halbfertig. Die angefangenen Go-Rewrites (api-gateway-go, se
| App | Expo SDK | React Native | NativeWind |
|-----|----------|-------------|------------|
| context, chat | **52** | 0.76 | ^3.4.0 |
| picture, manadeck, manacore | **54** | 0.81 | ^4.2.1 |
| picture, cards, manacore | **54** | 0.81 | ^4.2.1 |
| matrix | **55** | 0.83 | latest |
### Empfehlung
@ -379,7 +379,7 @@ Zu granulare Packages (Konsolidierungskandidaten):
| shared-help-content, shared-help-mobile, shared-help-types, shared-help-ui | `@manacore/help` |
| shared-subscription-types, shared-subscription-ui | `@manacore/subscriptions` |
| shared-nestjs-health, shared-nestjs-metrics, shared-nestjs-setup | `@manacore/nestjs-bootstrap` |
| manadeck-database, nutriphi-database, spiral-db | Zurueck in die jeweiligen Apps |
| cards-database, nutriphi-database, spiral-db | Zurueck in die jeweiligen Apps |
### Ziel: ~25-30 Packages statt 55
@ -558,7 +558,7 @@ Diese Technologie-Entscheidungen sind gut und sollten beibehalten werden:
### Apps (24)
calendar, chat, citycorners, clock, contacts, context, docs, inventar, manacore, manadeck, matrix, mukke, nutriphi, photos, picture, planta, playground, presi, questions, skilltree, storage, todo, traces, zitare
calendar, chat, citycorners, clock, contacts, context, docs, inventar, manacore, cards, matrix, mukke, nutriphi, photos, picture, planta, playground, presi, questions, skilltree, storage, todo, traces, zitare
### Services (17)
@ -566,7 +566,7 @@ it-landing, mana-api-gateway, mana-api-gateway-go, mana-core-auth, mana-crawler,
### Shared Packages (55)
credit-operations, eslint-config, local-store, mana-core-nestjs-integration, manadeck-database, notify-client, nutriphi-database, qr-export, shared-api-client, shared-app-onboarding, shared-auth, shared-auth-stores, shared-auth-ui, shared-branding, shared-config, shared-credit-service, shared-credit-ui, shared-drizzle-config, shared-error-tracking, shared-errors, shared-feedback-service, shared-feedback-types, shared-feedback-ui, shared-gpu, shared-help-content, shared-help-mobile, shared-help-types, shared-help-ui, shared-i18n, shared-icons, shared-landing-ui, shared-llm, shared-logger, shared-nestjs-auth, shared-nestjs-health, shared-nestjs-metrics, shared-nestjs-setup, shared-profile-ui, shared-pwa, shared-splitscreen, shared-storage, shared-stores, shared-subscription-types, shared-subscription-ui, shared-tags, shared-tailwind, shared-theme, shared-theme-ui, shared-tsconfig, shared-types, shared-ui, shared-utils, shared-vite-config, spiral-db, test-config, wallpaper-generator
credit-operations, eslint-config, local-store, mana-core-nestjs-integration, cards-database, notify-client, nutriphi-database, qr-export, shared-api-client, shared-app-onboarding, shared-auth, shared-auth-stores, shared-auth-ui, shared-branding, shared-config, shared-credit-service, shared-credit-ui, shared-drizzle-config, shared-error-tracking, shared-errors, shared-feedback-service, shared-feedback-types, shared-feedback-ui, shared-gpu, shared-help-content, shared-help-mobile, shared-help-types, shared-help-ui, shared-i18n, shared-icons, shared-landing-ui, shared-llm, shared-logger, shared-nestjs-auth, shared-nestjs-health, shared-nestjs-metrics, shared-nestjs-setup, shared-profile-ui, shared-pwa, shared-splitscreen, shared-storage, shared-stores, shared-subscription-types, shared-subscription-ui, shared-tags, shared-tailwind, shared-theme, shared-theme-ui, shared-tsconfig, shared-types, shared-ui, shared-utils, shared-vite-config, spiral-db, test-config, wallpaper-generator
### Games (3)

View file

@ -97,10 +97,10 @@ Brevo ist SPOF für alle Transaktions-Emails (Verifizierung, Passwort-Reset).
**Status: ✅ ERLEDIGT** (2026-03-24)
Alle 9 Backends nutzen jetzt `@manacore/shared-llm``mana-llm` Gateway:
- Auth, Chat, Context, NutriPhi, Planta, Traces, ManaDeck, Bot Services, Matrix Bots
- Auth, Chat, Context, NutriPhi, Planta, Traces, Cards, Bot Services, Matrix Bots
- Google Gemini als automatischer Fallback wenn Ollama überlastet
- OpenAI SDK komplett entfernt (Project Doc Bot)
- Google Gemini SDK entfernt (ManaDeck)
- Google Gemini SDK entfernt (Cards)
#### 2.2 PostgreSQL Backup stärken
@ -219,7 +219,7 @@ NutriPhi und Planta nutzen Google Gemini Vision. Alternativen via Ollama:
- ✅ Prio 1: Picture App nutzt lokales `mana-image-gen` (FLUX.2 klein) als Default
- ✅ Prio 2: Project Doc Bot: OpenAI SDK komplett entfernt, nutzt mana-llm + mana-stt
- ✅ Prio 3: Alle LLM-Calls über `mana-llm` geroutet (10 Backends, `@manacore/shared-llm`)
- ✅ Prio 3: Google Gemini Fallback in mana-llm + ManaDeck Gemini SDK entfernt
- ✅ Prio 3: Google Gemini Fallback in mana-llm + Cards Gemini SDK entfernt
- ✅ Prio 4: PostgreSQL Backup mit stündlichen Dumps + täglichen Base-Backups
- ✅ Prio 6: Landing Pages self-hosted via Nginx (10 Domains, kein Cloudflare Pages mehr)
- ✅ Prio 8: Cloudflare-Fallback Plan dokumentiert (WireGuard + Caddy)

View file

@ -324,7 +324,7 @@ Folgende Apps nutzen bereits die zentralen User Settings:
- Chat (`chat`)
- Contacts (`contacts`)
- ManaCore (`manacore`)
- ManaDeck (`manadeck`)
- Cards (`cards`)
- Picture (`picture`)
- Presi (`presi`)
- Storage (`storage`)

View file

@ -36,7 +36,7 @@ All apps follow `MAJOR.MINOR.PATCH`:
| Zitare | 0.2.0 | Beta |
| Clock | 0.2.0 | Beta |
| Nutriphi | 0.2.0 | Beta |
| ManaDeck | 0.2.0 | Beta |
| Cards | 0.2.0 | Beta |
| ManaCore | 0.2.0 | Beta |
| Matrix | 0.2.0 | Beta |
| Photos | 0.2.0 | Beta |