# Zentrales Abo-System (Zukunft) ## Vision **Ein zentrales Abo-System für alle Jinkendo Apps:** - mitai.jinkendo.de (Körper-Tracking) 身体 - miken.jinkendo.de (Meditation) 眉間 - ikigai.jinkendo.de (Lebenssinn) 生き甲斐 - shinkan.jinkendo.de (Kampfsport) 真観 ## Konzept ### Zentrale Webseite: jinkendo.de - Zentrale Landing-Page mit allen Apps - **Zentrale Abo-Verwaltung** (Stripe-Integration) - User-Account übergreifend für alle Apps - Single Sign-On (SSO) zwischen Apps ### Abo-Modelle (Ideen) #### Option 1: App-spezifische Abos ``` mitai Basic: €5/Monat → Nur Mitai Premium miken Basic: €5/Monat → Nur Miken Premium ``` #### Option 2: Kombinierte Abos ``` Jinkendo Basic: €8/Monat → 2 Apps Jinkendo Premium: €12/Monat → Alle 4 Apps Jinkendo Family: €20/Monat → Alle Apps + 3 Profile ``` #### Option 3: Feature-basiert ``` Free: Basis-Features alle Apps Basic: Erweiterte Features (KI, Export, etc.) Premium: Unlimited + Priority Support ``` --- ## Technische Umsetzung ### Backend #### Zentrale Auth-API ``` auth.jinkendo.de POST /register → User-Account erstellen POST /login → JWT Token für alle Apps POST /refresh → Token erneuern GET /me → User-Info mit Abo-Status ``` #### Subscription-API ``` subscriptions.jinkendo.de GET /plans → Verfügbare Abos POST /subscribe → Stripe Checkout Session GET /my-subscription → Aktuelles Abo + Features POST /cancel → Abo kündigen POST /webhook → Stripe Webhook ``` #### App-Integration Jede App prüft beim Start: ```javascript const subscription = await fetch('https://subscriptions.jinkendo.de/my-subscription', { headers: { 'Authorization': `Bearer ${jwt_token}` } }) // subscription.features: ['mitai_premium', 'miken_basic', ...] // App aktiviert entsprechende Features ``` ### Frontend #### Zentrale Webseite (jinkendo.de) - Next.js oder React + Vite - Stripe Elements für Payment - Dashboard: Übersicht alle Apps + Abo-Status - Rechnung-Historie #### App-Anpassungen **TrialBanner:** ```jsx Jetzt upgraden ``` **Settings → Abo:** - Link zu `https://jinkendo.de/account/subscription` - Oder Embedded iFrame --- ## Datenbank-Schema (zentral) ### users ```sql CREATE TABLE users ( id UUID PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL, password_hash VARCHAR(255) NOT NULL, name VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ### subscriptions ```sql CREATE TABLE subscriptions ( id SERIAL PRIMARY KEY, user_id UUID REFERENCES users(id), stripe_customer_id VARCHAR(100), stripe_subscription_id VARCHAR(100), plan VARCHAR(50), -- 'basic', 'premium', 'family' status VARCHAR(20), -- 'active', 'canceled', 'past_due' current_period_end TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, canceled_at TIMESTAMP ); ``` ### subscription_features ```sql CREATE TABLE subscription_features ( subscription_id INT REFERENCES subscriptions(id), app VARCHAR(50), -- 'mitai', 'miken', 'ikigai', 'shinkan' tier VARCHAR(50), -- 'basic', 'premium' PRIMARY KEY (subscription_id, app) ); ``` ### app_access_tokens ```sql -- Mapping: Zentrale User → App-spezifische Profile CREATE TABLE app_access_tokens ( user_id UUID REFERENCES users(id), app VARCHAR(50), app_profile_id VARCHAR(100), -- ID in der jeweiligen App-DB PRIMARY KEY (user_id, app) ); ``` --- ## Migration: Bestehende Apps ### Schritt 1: Zentrale Auth aufbauen 1. `auth.jinkendo.de` API deployen 2. User aus `mitai` DB migrieren zu zentraler DB 3. Mapping erstellen: zentrale User ID → mitai Profile ID ### Schritt 2: Apps auf zentrale Auth umstellen 1. Login/Register in Apps deaktivieren 2. "Mit Jinkendo anmelden" Button → SSO-Flow 3. JWT von `auth.jinkendo.de` verwenden 4. Profile-ID Mapping bei jedem Request ### Schritt 3: Subscription-System 1. `subscriptions.jinkendo.de` API deployen 2. Stripe-Integration 3. Apps prüfen Abo-Status bei jedem Feature-Zugriff ### Schritt 4: Zentrale Webseite 1. `jinkendo.de` Landing Page 2. Account-Dashboard 3. Abo-Verwaltung --- ## Status (März 2026) 🔲 **Noch nicht gestartet** **Aktuell:** - Jede App hat eigene User-Verwaltung - `mitai` hat Membership-System (v9c) - TrialBanner Link → `mailto:mitai@jinkendo.de` **Nächste Schritte:** 1. Weitere Apps entwickeln (miken, ikigai, shinkan) 2. Zentrale Infrastruktur planen 3. Migration vorbereiten --- ## Offene Fragen - **Pricing:** Welche Preise pro App / kombiniert? - **Stripe vs. Paddle:** Welcher Payment Provider? - **Single DB vs. Separate:** Eine PostgreSQL-DB für alles oder separate? - **Hosting:** Eigener Server oder Cloud (Vercel, Railway, Fly.io)? - **Domain-Strategie:** Subdomains (api.jinkendo.de) oder Paths (jinkendo.de/api)? --- ## Related - `MEMBERSHIP_SYSTEM.md` - Aktuelles System in mitai (v9c) - `FEATURE_ENFORCEMENT.md` - Feature-Limiting Mechanismus - Backlog: v9h (Connectoren & Stripe)