mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 19:21:10 +02:00
- Add avatar upload to EditProfileModal with presigned URL flow - Create onboarding wizard with 5 steps: Welcome, Profile, Apps, Credits, Complete - Add onboarding store with localStorage persistence - Integrate wizard into app layout (shows for new users) - Update MANACORE-TODOS.md to mark completed tasks
424 lines
14 KiB
Markdown
424 lines
14 KiB
Markdown
# Manacore App - Entwicklungs-Roadmap
|
|
|
|
> Erstellt am: 2024-12-05
|
|
> Status: Aktive Entwicklung
|
|
|
|
## Inhaltsverzeichnis
|
|
|
|
- [Aktueller Stand](#aktueller-stand)
|
|
- [Kritische TODOs](#kritische-todos-hohe-priorität)
|
|
- [Mittlere Priorität](#mittlere-priorität)
|
|
- [Nice-to-have](#niedrige-priorität-nice-to-have)
|
|
- [Empfohlene Reihenfolge](#empfohlene-reihenfolge)
|
|
|
|
---
|
|
|
|
## Aktueller Stand
|
|
|
|
### Vorhandene Features
|
|
|
|
| Feature | Status | Beschreibung |
|
|
| -------------- | ------ | --------------------------------------------- |
|
|
| Dashboard | ✅ | Anpassbare Widgets, Drag & Drop |
|
|
| Credits-System | ✅ | Übersicht, Transaktionen, Pakete, Stripe-Kauf |
|
|
| Teams | ✅ | Team-Verwaltung |
|
|
| Organizations | ✅ | Organisations-Verwaltung |
|
|
| Settings | ✅ | Benutzereinstellungen |
|
|
| Themes | ✅ | Theme-Auswahl |
|
|
| Feedback | ✅ | Feedback-Formular |
|
|
| Profil | ✅ | Basis-Profil-Ansicht |
|
|
| i18n | ✅ | 5 Sprachen (DE, EN, ES, FR, IT) |
|
|
| Apps-Übersicht | ✅ | Alle Mana-Apps anzeigen |
|
|
|
|
### Dashboard-Widgets (6 Typen)
|
|
|
|
| Widget | Status |
|
|
| ------------------ | ------ |
|
|
| Credits | ✅ |
|
|
| Tasks Today | ✅ |
|
|
| Calendar Events | ✅ |
|
|
| Quick Actions | ✅ |
|
|
| Chat Recent | ✅ |
|
|
| Contacts Favorites | ✅ |
|
|
|
|
### API-Integrationen
|
|
|
|
| Service | Status | Datei |
|
|
| -------- | ------ | ------------------------------ |
|
|
| Calendar | ✅ | `lib/api/services/calendar.ts` |
|
|
| Chat | ✅ | `lib/api/services/chat.ts` |
|
|
| Contacts | ✅ | `lib/api/services/contacts.ts` |
|
|
| Todo | ✅ | `lib/api/services/todo.ts` |
|
|
| Zitare | ✅ | `lib/api/services/zitare.ts` |
|
|
| Credits | ✅ | `lib/api/credits.ts` |
|
|
|
|
---
|
|
|
|
## Kritische TODOs (Hohe Priorität)
|
|
|
|
### 1. ✅ Stripe-Integration für Credit-Kauf (ERLEDIGT)
|
|
|
|
**Status:** Abgeschlossen am 2026-02-13
|
|
|
|
**Implementiert:**
|
|
|
|
- [x] Stripe SDK integrieren (`@stripe/mcp` v17.5.0)
|
|
- [x] `StripeService` für PaymentIntent-Erstellung
|
|
- [x] `POST /credits/purchase` Endpoint
|
|
- [x] Webhook-Handler für `payment_intent.succeeded`/`payment_intent.payment_failed`
|
|
- [x] Credit-Gutschrift nach erfolgreicher Zahlung (idempotent)
|
|
- [x] Stripe MCP Server eingerichtet (OAuth-basiert)
|
|
- [x] Test-Pakete angelegt (Starter, Basic, Pro, Ultra)
|
|
|
|
**Credit-Pakete:**
|
|
|
|
| Paket | Credits | Preis | Hinweis |
|
|
| ------- | ------- | ------ | ----------------------- |
|
|
| Starter | 100 | €1,00 | 1 Mana = 1 Cent (immer) |
|
|
| Basic | 500 | €5,00 | Kein Mengenrabatt |
|
|
| Pro | 1.500 | €15,00 | Kein Mengenrabatt |
|
|
| Ultra | 5.000 | €50,00 | Kein Mengenrabatt |
|
|
|
|
> **Preisregel:** 1 Mana = 1 Cent. Keine Rabatte für größere Pakete.
|
|
|
|
**Dateien:**
|
|
|
|
- `services/mana-core-auth/src/stripe/` - Stripe-Module
|
|
- `services/mana-core-auth/src/credits/credits.service.ts` - Purchase-Methoden
|
|
|
|
**Frontend (Implementiert 2026-02-13):**
|
|
|
|
- [x] Credits-Seite: Stripe Checkout Integration
|
|
- [x] Loading-States und Toast-Benachrichtigungen
|
|
|
|
**Rechnungs-PDFs:**
|
|
|
|
- [x] Stripe Invoice PDFs werden automatisch über Webhooks synchronisiert (`invoicePdfUrl`)
|
|
|
|
---
|
|
|
|
### 2. ✅ App-Config aktualisieren (ERLEDIGT)
|
|
|
|
**Status:** Bereits vollständig implementiert
|
|
|
|
**Datei:** `apps/manacore/apps/web/src/lib/config/apps.ts`
|
|
|
|
**Alle Apps konfiguriert:**
|
|
|
|
| Kategorie | Apps |
|
|
| ------------ | ------------------------------------------- |
|
|
| Core | manacore |
|
|
| AI-Powered | chat, picture, presi, mail |
|
|
| Productivity | manadeck, todo, calendar, contacts, finance |
|
|
| Utility | clock, zitare, storage, moodlit |
|
|
|
|
Archivierte Apps (memoro, storyteller) wurden bereits entfernt.
|
|
|
|
---
|
|
|
|
### 3. ✅ Dashboard-Widgets erweitern (GRÖSSTENTEILS ERLEDIGT)
|
|
|
|
**Status:** 14 von 16 Widgets implementiert (Finance + Mail fehlen)
|
|
|
|
**Existierende Widgets (14 Typen):**
|
|
|
|
| Widget | App | Status |
|
|
| ----------------------- | -------------- | ------ |
|
|
| CreditsWidget | mana-core-auth | ✅ |
|
|
| TransactionsWidget | mana-core-auth | ✅ |
|
|
| ReferralWidget | mana-core-auth | ✅ |
|
|
| QuickActionsWidget | core | ✅ |
|
|
| TasksTodayWidget | todo | ✅ |
|
|
| TasksUpcomingWidget | todo | ✅ |
|
|
| CalendarEventsWidget | calendar | ✅ |
|
|
| ChatRecentWidget | chat | ✅ |
|
|
| ContactsFavoritesWidget | contacts | ✅ |
|
|
| ZitareQuoteWidget | zitare | ✅ |
|
|
| PictureRecentWidget | picture | ✅ |
|
|
| ManadeckProgressWidget | manadeck | ✅ |
|
|
| ClockTimersWidget | clock | ✅ |
|
|
| StorageUsageWidget | storage | ✅ |
|
|
|
|
**Neue Widgets (2026-02-13):**
|
|
|
|
- [x] StorageUsageWidget - Speichernutzung und letzte Dateien
|
|
|
|
**Noch offen (Backend fehlt noch):**
|
|
|
|
- [ ] FinanceBalanceWidget (finance Backend nötig)
|
|
- [ ] MailInboxWidget (mail Backend nötig)
|
|
|
|
---
|
|
|
|
### 4. ✅ Profil-Features vervollständigen (Backend ERLEDIGT)
|
|
|
|
**Status:** Backend implementiert am 2026-02-13
|
|
|
|
**Implementierte Backend-Endpoints:**
|
|
|
|
| Endpoint | Methode | Beschreibung |
|
|
| ----------------------- | ------- | ---------------------------------------------------- |
|
|
| `/auth/profile` | GET | Profil-Daten abrufen |
|
|
| `/auth/profile` | POST | Profil aktualisieren (Name, Bild) |
|
|
| `/auth/change-password` | POST | Passwort ändern (mit aktuellem Passwort) |
|
|
| `/auth/account` | DELETE | Konto löschen (Soft-Delete mit Passwort-Bestätigung) |
|
|
|
|
**Feature-Status:**
|
|
|
|
| Feature | Backend | Frontend | Priorität |
|
|
| ----------------- | ------- | -------- | --------- |
|
|
| Profil bearbeiten | ✅ | ✅ | Hoch |
|
|
| Passwort ändern | ✅ | ✅ | Hoch |
|
|
| Konto löschen | ✅ | ✅ | Mittel |
|
|
| Avatar hochladen | ✅ | ✅ | Niedrig |
|
|
| 2FA aktivieren | ❌ | ❌ | Niedrig |
|
|
|
|
**Dateien:**
|
|
|
|
- `services/mana-core-auth/src/auth/auth.controller.ts` - Endpoints
|
|
- `services/mana-core-auth/src/auth/services/better-auth.service.ts` - Service-Methoden
|
|
- `services/mana-core-auth/src/auth/dto/update-profile.dto.ts` - Profil-Update DTO
|
|
- `services/mana-core-auth/src/auth/dto/change-password.dto.ts` - Passwort-Ändern DTO
|
|
- `services/mana-core-auth/src/auth/dto/delete-account.dto.ts` - Konto-Löschen DTO
|
|
|
|
**Frontend (Implementiert 2026-02-13):**
|
|
|
|
- [x] Profil-Edit Modal erstellt (`EditProfileModal.svelte`)
|
|
- [x] Passwort-Ändern Dialog erstellt (`ChangePasswordModal.svelte`)
|
|
- [x] Konto-Löschung mit Bestätigung (`DeleteAccountModal.svelte`)
|
|
|
|
**Avatar-Upload (Implementiert 2026-02-13):**
|
|
|
|
- [x] Storage-Modul für S3/MinIO (`services/mana-core-auth/src/storage/`)
|
|
- [x] Presigned URL Endpoint: `POST /api/v1/storage/avatar/upload-url`
|
|
- [x] Direct Upload Endpoint: `POST /api/v1/storage/avatar`
|
|
- [x] `manacore-storage` Bucket konfiguriert
|
|
- [x] Frontend-Integration (EditProfileModal mit Avatar-Picker und Presigned-URL-Upload)
|
|
|
|
---
|
|
|
|
## Mittlere Priorität
|
|
|
|
### 5. Benachrichtigungen/Notifications
|
|
|
|
**Beschreibung:** Zentrales Benachrichtigungssystem für alle Apps
|
|
|
|
**Use Cases:**
|
|
|
|
- Kalender-Erinnerungen (15 min vor Termin)
|
|
- Todo-Deadlines (Heute fällig)
|
|
- Credit-Warnungen (< 10 Credits)
|
|
- Neue Chat-Nachrichten
|
|
- Manadeck (Karten zum Lernen)
|
|
|
|
**Aufgaben:**
|
|
|
|
- [ ] Notification-Service erstellen
|
|
- [ ] Push-Notification Setup (Web Push API)
|
|
- [ ] Notification-Center UI
|
|
- [ ] Einstellungen pro Notification-Typ
|
|
- [ ] Backend: Notification-Queue
|
|
|
|
**Geschätzter Aufwand:** 3-5 Tage
|
|
|
|
---
|
|
|
|
### 6. ✅ Subscription/Plan-Management (Backend ERLEDIGT)
|
|
|
|
**Status:** Backend implementiert am 2026-02-13
|
|
|
|
**Implementiert:**
|
|
|
|
- [x] DB-Schema: `subscriptions.plans`, `subscriptions.subscriptions`, `subscriptions.invoices`
|
|
- [x] `SubscriptionsService` mit Checkout, Portal, Cancel, Reactivate
|
|
- [x] `SubscriptionsController` mit REST-Endpoints
|
|
- [x] Stripe Checkout Session für Subscriptions
|
|
- [x] Stripe Customer Portal Integration (Self-Service Billing)
|
|
- [x] Webhook-Handler für Subscription/Invoice Events
|
|
- [x] Pläne angelegt (Free, Pro, Enterprise)
|
|
|
|
**Subscription-Pläne:**
|
|
|
|
| Plan | Mana/Monat | Monatlich | Jährlich | Features |
|
|
| ---------- | ---------- | --------- | -------- | --------------------------------------- |
|
|
| Free | 150 | €0 | €0 | Basis-Features, Community Support |
|
|
| Pro | 1.500 | €9,99 | €99,90 | Alle Features, Priority Support, API |
|
|
| Enterprise | 10.000 | €49,99 | €499,90 | SSO, Audit Logs, SLA, Dedicated Support |
|
|
|
|
**API-Endpoints:**
|
|
|
|
```
|
|
GET /api/v1/subscriptions/plans # Alle Pläne
|
|
GET /api/v1/subscriptions/current # Aktuelles Abo
|
|
POST /api/v1/subscriptions/checkout # Stripe Checkout starten
|
|
POST /api/v1/subscriptions/portal # Billing Portal öffnen
|
|
POST /api/v1/subscriptions/cancel # Kündigen
|
|
POST /api/v1/subscriptions/reactivate # Reaktivieren
|
|
GET /api/v1/subscriptions/invoices # Rechnungen
|
|
```
|
|
|
|
**Frontend (Implementiert 2026-02-13):**
|
|
|
|
- [x] Plan-Übersicht Seite im Frontend (`/subscription`)
|
|
- [x] Plan-Vergleichs-UI mit monatlich/jährlich Toggle
|
|
- [x] Stripe Checkout Integration für Subscriptions
|
|
- [x] Billing Portal Integration
|
|
- [x] Rechnungsübersicht
|
|
- [x] Subscription-Plans Seed-Script erstellt (`pnpm db:seed:plans`)
|
|
- [ ] Stripe Products/Prices erstellen und ENV-Variablen setzen
|
|
|
|
---
|
|
|
|
### 7. API-Keys Verwaltung
|
|
|
|
**Beschreibung:** Für Entwickler/Power-User API-Zugang ermöglichen
|
|
|
|
**Features:**
|
|
|
|
- API-Key generieren
|
|
- Key-Liste mit Berechtigungen
|
|
- Key widerrufen
|
|
- Usage-Statistiken pro Key
|
|
|
|
**Aufgaben:**
|
|
|
|
- [ ] API-Keys Seite erstellen
|
|
- [ ] Backend: Key-Generation
|
|
- [ ] Scopes/Berechtigungen definieren
|
|
- [ ] Rate-Limiting pro Key
|
|
|
|
**Geschätzter Aufwand:** 2-3 Tage
|
|
|
|
---
|
|
|
|
### 8. ✅ Onboarding-Flow (ERLEDIGT)
|
|
|
|
**Status:** Implementiert am 2026-02-13
|
|
|
|
**Beschreibung:** Welcome-Wizard für neue Benutzer
|
|
|
|
**Implementierte Schritte:**
|
|
|
|
1. Willkommen & Kurze Einführung (WelcomeStep)
|
|
2. Profil vervollständigen - Name, Avatar (ProfileStep)
|
|
3. Apps-Übersicht - alle Mana-Apps zeigen (AppsStep)
|
|
4. Credits-System erklären (CreditsStep)
|
|
5. Fertig - Quick Actions zum Start (CompleteStep)
|
|
|
|
**Aufgaben:**
|
|
|
|
- [x] Onboarding-Store (`lib/stores/onboarding.svelte.ts`)
|
|
- [x] OnboardingWizard Komponente mit Step-Navigation
|
|
- [x] 5 Step-Komponenten (Welcome, Profile, Apps, Credits, Complete)
|
|
- [x] Progress-Tracking (LocalStorage-basiert)
|
|
- [x] Skip-Option
|
|
- [x] Integration in App-Layout (zeigt Wizard für neue User)
|
|
|
|
**Dateien:**
|
|
|
|
- `apps/manacore/apps/web/src/lib/stores/onboarding.svelte.ts`
|
|
- `apps/manacore/apps/web/src/lib/components/onboarding/OnboardingWizard.svelte`
|
|
- `apps/manacore/apps/web/src/lib/components/onboarding/steps/*.svelte`
|
|
|
|
---
|
|
|
|
## Niedrige Priorität (Nice-to-have)
|
|
|
|
### 9. Mobile App aktivieren
|
|
|
|
**Beschreibung:** Die Mobile App (`apps/mobile`) existiert, aber scheint nicht aktiv genutzt
|
|
|
|
**Status:** Expo-Projekt vorhanden, aber möglicherweise veraltet
|
|
|
|
**Aufgaben:**
|
|
|
|
- [ ] Dependencies aktualisieren
|
|
- [ ] Funktionalität mit Web-App abgleichen
|
|
- [ ] Auth-Flow testen
|
|
- [ ] App Store Submission vorbereiten
|
|
|
|
---
|
|
|
|
### 10. DSGVO-konformer Daten-Export
|
|
|
|
**Beschreibung:** Benutzer können alle ihre Daten exportieren
|
|
|
|
**Features:**
|
|
|
|
- "Meine Daten exportieren" Button
|
|
- ZIP mit allen Daten (JSON/CSV)
|
|
- Inkl. aller App-Daten
|
|
- Account-Migration zu anderer Instanz
|
|
|
|
**Aufgaben:**
|
|
|
|
- [ ] Export-Job Backend
|
|
- [ ] Download-Link per E-Mail
|
|
- [ ] Fortschrittsanzeige
|
|
|
|
---
|
|
|
|
### 11. Aktivitäts-Feed
|
|
|
|
**Beschreibung:** Übergreifende Timeline aller Aktivitäten
|
|
|
|
**Features:**
|
|
|
|
- "Was habe ich heute gemacht?"
|
|
- Filter nach App
|
|
- Zeitraum-Auswahl
|
|
- Export als Report
|
|
|
|
---
|
|
|
|
### 12. Keyboard Shortcuts
|
|
|
|
**Beschreibung:** Power-User Shortcuts
|
|
|
|
**Shortcuts:**
|
|
|
|
- `Cmd/Ctrl + K` - Quick Search/Command Palette
|
|
- `Cmd/Ctrl + 1-9` - Schnellzugriff auf Apps
|
|
- `Cmd/Ctrl + N` - Neue Aktion (kontextabhängig)
|
|
|
|
---
|
|
|
|
## Empfohlene Reihenfolge
|
|
|
|
| # | Task | Aufwand | Impact | Status |
|
|
| --- | --------------------------- | -------- | -------- | ----------- |
|
|
| 1 | App-Config aktualisieren | 2-4h | Hoch | ✅ Erledigt |
|
|
| 2 | Stripe-Integration | 2-3 Tage | Kritisch | ✅ Erledigt |
|
|
| 3 | Dashboard-Widgets erweitern | 1-2 Tage | Hoch | ✅ Erledigt |
|
|
| 4 | Profil-Features | 1-2 Tage | Mittel | ✅ Erledigt |
|
|
| 5 | Notifications | 3-5 Tage | Hoch | ⏳ Offen |
|
|
| 6 | Onboarding | 2-3 Tage | Mittel | ✅ Erledigt |
|
|
| 7 | Subscription-Management | 2-3 Tage | Mittel | ✅ Erledigt |
|
|
| 8 | API-Keys | 2-3 Tage | Niedrig | ⏳ Offen |
|
|
|
|
---
|
|
|
|
## Quick Wins (< 1 Stunde)
|
|
|
|
Diese Tasks können schnell erledigt werden:
|
|
|
|
- [ ] Archivierte Apps aus `apps.ts` entfernen
|
|
- [ ] Deutsche Übersetzungen vervollständigen
|
|
- [ ] "Coming Soon" Badges für fehlende Features
|
|
- [ ] Loading-States verbessern
|
|
- [ ] Error-Handling mit Toast-Notifications
|
|
|
|
---
|
|
|
|
## Technische Schulden
|
|
|
|
| Issue | Priorität | Beschreibung |
|
|
| ------------------------- | --------- | ------------------------------ |
|
|
| Supabase → mana-core-auth | Hoch | Auth-Migration abschließen |
|
|
| Tests fehlen | Mittel | Unit/E2E Tests hinzufügen |
|
|
| TypeScript strict mode | Niedrig | Strikte Typisierung aktivieren |
|
|
| Bundle-Size | Niedrig | Tree-shaking optimieren |
|
|
|
|
---
|
|
|
|
_Zuletzt aktualisiert: 2026-02-13 (Avatar-Upload Frontend + Onboarding-Flow implementiert)_
|