diff --git a/CLAUDE.md b/CLAUDE.md
index 06fbe4b..c95eaee 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -96,19 +96,321 @@ mitai-jinkendo/
- ✅ Automatische SQLite→PostgreSQL Migration bei Container-Start
- ✅ **Modulare Backend-Architektur**: 14 Router-Module, main.py von 1878→75 Zeilen (-96%)
-### Was in v9c kommt:
-- 🔲 Selbst-Registrierung mit E-Mail-Bestätigung
-- 🔲 Freemium Tier-System (free/basic/premium/selfhosted)
-- 🔲 14-Tage Trial automatisch
-- 🔲 Einladungslinks für Beta-Nutzer
-- 🔲 Admin kann Tiers manuell setzen
+### Was in v9c kommt: Subscription & Coupon Management System
+**Core Features:**
+- 🔲 Selbst-Registrierung mit E-Mail-Verifizierung (Pflicht)
+- 🔲 Flexibles Tier-System (free/basic/premium/selfhosted) - Admin-editierbar
+- 🔲 Trial-System (Dauer konfigurierbar, auto-start nach E-Mail-Verifikation)
+- 🔲 **Coupon-System** (2 Typen):
+ - Single-Use Coupons (Geschenke, zeitlich begrenzt)
+ - Multi-Use Period Coupons (z.B. Wellpass, monatlich erneuerbar)
+- 🔲 Coupon-Stacking-Logik (Pause + Resume bei Wellpass-Override)
+- 🔲 Access-Grant-System (zeitlich begrenzte Zugriffe mit Quelle-Tracking)
+- 🔲 User-Activity-Log (Login, Password-Änderungen, Coupon-Einlösungen, etc.)
+- 🔲 User-Stats (Login-Streaks, Nutzungsstatistiken)
+- 🔲 Individuelle User-Restrictions (Admin kann Limits pro User setzen)
+- 🔲 App-Settings (globale Konfiguration durch Admin)
+- 🔲 Erweiterte Admin-User-Verwaltung (Activity-Log, Stats, Access-Historie)
+
+**E-Mail Templates (v9c):**
+- 🔲 Registrierung + E-Mail-Verifizierung
+- 🔲 Einladungslink
+- 🔲 Passwort-Reset (bereits vorhanden)
+
+**Spätere Features (v9d/v9e):**
+- 🔲 Bonus-System (Login-Streaks → Punkte → Geschenk-Coupons)
+- 🔲 Trial-Reminder-E-Mails (3 Tage vor Ablauf)
+- 🔲 Monatliches Nutzungs-Summary per E-Mail
+- 🔲 Self-Service Upgrade (Stripe-Integration)
+- 🔲 Partner-Verwaltung (Wellpass, Hansefit, etc.)
+- 🔲 Admin-Benachrichtigungen (neue Registrierungen, etc.)
### Was in v9d kommt:
+- 🔲 Bonus-System & Gamification (Streaks, Achievements)
+- 🔲 Stripe-Integration (Self-Service Upgrade, Subscriptions)
- 🔲 OAuth2-Grundgerüst für Fitness-Connectoren
- 🔲 Strava Connector
- 🔲 Withings Connector (Waage)
- 🔲 Garmin Connector
+---
+
+## v9c Architektur-Details: Subscription & Coupon System
+
+### Datenbank-Schema (Neue Tabellen)
+
+#### **app_settings** - Globale Konfiguration
+```sql
+key, value, value_type, description, updated_at, updated_by
+
+Beispiele:
+- trial_days: 14
+- trial_behavior: 'downgrade' | 'lock'
+- allow_registration: true/false
+- default_tier_trial: 'premium'
+- gift_coupons_per_month: 3
+```
+
+#### **tiers** - Tier-Konfiguration (Admin-editierbar)
+```sql
+id, slug, name, description, sort_order
+max_weight_entries, max_ai_calls_month, max_photos (NULL = unbegrenzt)
+allow_export, allow_activity_import, allow_nutrition_import
+allow_fitness_connectors, allow_gift_coupons
+
+Initial Tiers:
+- free: 30 Einträge, 0 KI, 5 Fotos, kein Export/Import
+- basic: unbegrenzt, 10 KI/Monat, 50 Fotos, Export/Import
+- premium: unbegrenzt, unbegrenzt KI, unbegrenzt Fotos, alle Features
+- selfhosted: unbegrenzt alles (für Lars)
+```
+
+#### **coupons** - Coupon-Verwaltung
+```sql
+code, type ('single_use' | 'multi_use_period' | 'gift')
+valid_from, valid_until, grants_tier, duration_days
+max_redemptions, current_redemptions
+created_by, created_for, notes, active
+
+Beispiel Single-Use:
+ Code: FRIEND-GIFT-XYZ, 30 Tage Premium, max 1x
+
+Beispiel Multi-Use Period:
+ Code: WELLPASS-2026-03, gültig 01.03-31.03, unbegrenzte Einlösungen
+```
+
+#### **coupon_redemptions** - Einlösungs-Historie
+```sql
+coupon_id, profile_id, redeemed_at, access_grant_id
+UNIQUE(coupon_id, profile_id) - User kann denselben Coupon nur 1x einlösen
+```
+
+#### **access_grants** - Zeitlich begrenzte Zugriffe
+```sql
+profile_id, granted_tier, valid_from, valid_until
+source ('coupon' | 'admin_grant' | 'trial')
+active (false wenn pausiert durch Wellpass-Override)
+paused_at, paused_by (access_grant_id das pausiert hat)
+
+Stacking-Logik:
+- Multi-Use Period Coupon (Wellpass): pausiert andere grants
+- Single-Use Coupon: stackt zeitlich (Resume nach Ablauf)
+```
+
+#### **user_activity_log** - Aktivitäts-Tracking
+```sql
+profile_id, activity_type, details (JSONB), ip_address, user_agent, created
+
+Activity Types:
+- login, password_change, email_change, coupon_redeemed
+- tier_change, export, ai_analysis, registration
+```
+
+#### **user_stats** - Aggregierte Statistiken
+```sql
+profile_id, first_login, last_login, total_logins
+current_streak_days, longest_streak_days, last_streak_date
+total_weight_entries, total_ai_analyses, total_exports
+bonus_points (später), gift_coupons_available (später)
+```
+
+#### **user_restrictions** - Individuelle Einschränkungen
+```sql
+profile_id, max_ai_calls_month, max_weight_entries, max_photos
+block_export, block_ai, block_import
+reason, set_by (admin_id)
+
+Überschreibt Tier-Limits für spezifische User
+```
+
+#### **profiles** - Erweiterte Spalten
+```sql
+tier, tier_locked (Admin kann Tier festnageln)
+trial_ends_at, email_verified, email_verify_token
+invited_by, contract_type, contract_valid_until
+stripe_customer_id (vorbereitet für v9d)
+```
+
+---
+
+### Backend-Erweiterungen
+
+#### Neue Router (v9c):
+```
+routers/tiers.py - Tier-Verwaltung (List, Edit, Create)
+routers/coupons.py - Coupon-System (Redeem, Admin CRUD)
+routers/access_grants.py - Zugriffs-Verwaltung (Current, Grant, Revoke)
+routers/user_admin.py - Erweiterte User-Verwaltung (Activity, Stats, Restrictions)
+routers/settings.py - App-Einstellungen (Admin)
+routers/registration.py - Registrierung + E-Mail-Verifizierung
+```
+
+#### Neue Middleware:
+```python
+require_tier(min_tier) - Feature-Gate basierend auf Tier
+check_feature_limit(feature, action) - Limit-Prüfung (z.B. max_weight_entries)
+log_activity(type, details) - Activity-Logging
+```
+
+#### Hintergrund-Tasks (Cron):
+```python
+check_expired_access() # Täglich 00:00 - Trial/Coupon-Ablauf prüfen
+reset_monthly_limits() # 1. jeden Monats - AI-Calls zurücksetzen
+update_user_streaks() # Täglich 23:59 - Login-Streaks aktualisieren
+```
+
+---
+
+### Zugriffs-Hierarchie
+
+```
+Effektiver Tier wird ermittelt durch (Priorität absteigend):
+1. Admin-Override (tier_locked=true) → nutzt profiles.tier
+2. Aktiver access_grant (nicht pausiert, valid_until > now)
+3. Trial (trial_ends_at > now)
+4. Base tier (profiles.tier)
+
+Wellpass-Override-Logik:
+- User hat Single-Use Coupon (20 Tage verbleibend)
+- User löst Wellpass-Coupon ein (gültig bis 31.03)
+- Single-Use access_grant wird pausiert (active=false, paused_by=wellpass_grant_id)
+- Nach Wellpass-Ablauf: Single-Use wird reaktiviert (noch 20 Tage)
+```
+
+---
+
+### Tier-Limits & Feature-Gates
+
+**Daten-Sichtbarkeit bei Downgrade:**
+- Frontend: Buttons/Features ausblenden (Export, KI, Import)
+- Backend: API limitiert Rückgabe (z.B. nur letzte 30 Gewichtseinträge bei free)
+- Daten bleiben erhalten, werden nur versteckt
+- Bei Upgrade wieder sichtbar
+
+**Feature-Checks:**
+```python
+# Beispiel: Gewicht-Eintrag erstellen
+@check_feature_limit('weight', 'create')
+def create_weight_entry():
+ # Prüft: Hat User max_weight_entries erreicht?
+ # Falls ja: HTTPException 403 "Limit erreicht - Upgrade erforderlich"
+```
+
+---
+
+### Frontend-Erweiterungen
+
+#### Neue Seiten:
+```
+RegisterPage.jsx - Registrierung (Name, E-Mail, Passwort)
+VerifyEmailPage.jsx - E-Mail-Verifizierung (Token aus URL)
+RedeemCouponPage.jsx - Coupon-Eingabe (oder Modal)
+AdminCouponsPage.jsx - Coupon-Verwaltung (Admin)
+AdminTiersPage.jsx - Tier-Konfiguration (Admin)
+AdminSettingsPage.jsx - App-Einstellungen (Admin)
+```
+
+#### Neue Komponenten:
+```jsx
+ // Tier-Anzeige mit Icon
+...> // Feature nur für Basic+ zeigen
+ // "Trial endet in 5 Tagen" Banner
+ // Coupon-Eingabefeld
+ // User-Activity-Log
+ // Login-Streak Anzeige (später)
+```
+
+#### Erweiterte Admin-Seiten:
+```
+AdminUsersPage.jsx erweitert um:
+- Activity-Log Button → zeigt user_activity_log
+- Stats Button → zeigt user_stats
+- Access-Grants Button → zeigt aktive/abgelaufene Zugriffe
+- Restrictions Button → individuelle Limits setzen
+- Grant Access Button → manuell Tier-Zugriff gewähren
+```
+
+---
+
+### E-Mail Templates (v9c)
+
+**1. Registrierung + E-Mail-Verifizierung:**
+```
+Betreff: Willkommen bei Mitai Jinkendo - E-Mail bestätigen
+
+Hallo {name},
+
+vielen Dank für deine Registrierung bei Mitai Jinkendo!
+
+Bitte bestätige deine E-Mail-Adresse:
+{app_url}/verify-email?token={token}
+
+Nach der Bestätigung startet dein 14-Tage Premium Trial automatisch.
+
+Viel Erfolg bei deinem Training!
+Dein Mitai Jinkendo Team
+```
+
+**2. Einladungslink (Admin):**
+```
+Betreff: Du wurdest zu Mitai Jinkendo eingeladen
+
+Hallo,
+
+{admin_name} hat dich zu Mitai Jinkendo eingeladen!
+
+Registriere dich jetzt:
+{app_url}/register?invite={token}
+
+Du erhältst {tier} Zugriff.
+
+Dein Mitai Jinkendo Team
+```
+
+---
+
+### Migrations-Reihenfolge (v9c)
+
+```
+Phase 1 - DB Schema:
+1. app_settings Tabelle + Initialdaten
+2. tiers Tabelle + 4 Standard-Tiers
+3. coupons Tabelle
+4. coupon_redemptions Tabelle
+5. access_grants Tabelle
+6. user_activity_log Tabelle
+7. user_stats Tabelle
+8. user_restrictions Tabelle
+9. profiles Spalten erweitern
+10. Bestehende Profile migrieren (Lars → tier='selfhosted', email_verified=true)
+
+Phase 2 - Backend:
+11. Tier-System Router + Middleware
+12. Registrierungs-Flow
+13. Coupon-System
+14. Access-Grant-Logik
+15. Activity-Logging
+16. Erweiterte Admin-Endpoints
+
+Phase 3 - Frontend:
+17. Registrierungs-Seiten
+18. Tier-System UI-Komponenten
+19. Coupon-Eingabe
+20. Erweiterte Admin-Panels
+21. Feature-Gates in bestehende Seiten einbauen
+
+Phase 4 - Cron-Jobs:
+22. Expired-Access-Checker
+23. Monthly-Reset
+24. Streak-Updater
+
+Phase 5 - Testing & Deployment:
+25. Dev-Testing
+26. Prod-Deployment
+```
+
+---
+
## Deployment
### Infrastruktur