From 99a359f3301114ce9de87a53451b435d48468427 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 27 Mar 2026 10:14:42 +0100 Subject: [PATCH] chore: remove outdated documentation files for LemonSpace - Deleted the LemonSpace Manifest v1.2, Phase 1 TODO, and PRD v1.1 documents as they are no longer relevant to the current project scope. - This cleanup helps streamline the documentation and focuses on the latest project requirements and updates. --- ...anifest_v1_2.md => LemonSpace_Manifest.md} | 24 ++-- ...monSpace_PRD_v1_1.md => LemonSpace_PRD.md} | 124 ++++++++++++------ .docs/LemonSpace_Phase1_TODO.md | 111 ---------------- 3 files changed, 93 insertions(+), 166 deletions(-) rename .docs/{LemonSpace_Manifest_v1_2.md => LemonSpace_Manifest.md} (90%) rename .docs/{LemonSpace_PRD_v1_1.md => LemonSpace_PRD.md} (82%) delete mode 100644 .docs/LemonSpace_Phase1_TODO.md diff --git a/.docs/LemonSpace_Manifest_v1_2.md b/.docs/LemonSpace_Manifest.md similarity index 90% rename from .docs/LemonSpace_Manifest_v1_2.md rename to .docs/LemonSpace_Manifest.md index 73fb7eb..a242777 100644 --- a/.docs/LemonSpace_Manifest_v1_2.md +++ b/.docs/LemonSpace_Manifest.md @@ -1,6 +1,6 @@ # 🍋 LemonSpace — Produkt-Manifest -**v1.2 — März 2026** +**v1.4 — März 2026** *Self-Hosted, Source-Available Creative Workspace* @@ -115,9 +115,9 @@ Kompakt statt erschöpfend. Details wandern in eigene Architecture Decision Reco | Auth | Better Auth (self-hosted, open-source) | ✅ | | AI Layer | OpenRouter als primäre AI-Schicht. 9 Image-Modelle, Text/Reasoning via Claude / GPT. | ✅ | | Self-hosted KI | rembg, Real-ESRGAN, GFPGAN — kostenlos, separate Repos | ✅ | -| Payment | Lemon Squeezy (Merchant of Record, VAT-Handling) | ✅ | -| Credits | Reservation + Commit. Gecachte Preise (Redis, TTL ~10min). Kein nachträglicher Ausgleich. | ✅ | -| Pricing | 4 Tiers: Free / Starter €9 / Pro €49 / Business €99. 30% Marge, 70% → Credits. | ✅ | +| Payment | Polar.sh (MoR, VAT, Better Auth Plugin @polar-sh/better-auth) | ✅ | +| Credits | Reservation + Commit. Credit-Abstraktion (1 Cr = €0,01 OR intern). Markup: 2× Bild, 2,5–3× Agent. | ✅ | +| Pricing | 4 Tiers: Free (50 Cr) / Starter €8 (400 Cr) / Pro €59 (3.300 Cr) / Max €119 (6.700 Cr). ≥29% Marge nach LS + USt. Top-Up: fix (€5/€10/€20/€50) + Custom (€5–200, Bonus-Staffel 0–13%). | ✅ | | Lizenz | BSL 1.1, 3J Change Date → Apache 2.0. Private Nutzung frei. | ✅ | | Repo-Strategie | Zwei unabhängige Repos (lemonspace-web + lemonspace-landing). Auth-Cookie-Sharing via `.lemonspace.io`. | ✅ | | Frontend | Next.js 16 + Tailwind v4 + ShadCN | ✅ | @@ -164,9 +164,9 @@ Ohne messbare Ziele ist jedes PRD Wünsch-dir-was. Diese Metriken entscheiden, o | Metrik | Ziel (6 Monate) | Messung | |--------|-----------------|---------| -| Conversion Free → Paid | > 5% | Lemon Squeezy Events | -| COGS pro aktivem Workspace | < 70% des Abo-Preises | OpenRouter-Kosten / aktive User | -| MRR | €2.000+ | Lemon Squeezy Dashboard | +| Conversion Free → Paid | > 5% | Polar Events | +| COGS pro aktivem Workspace | < 70% des Credit-Werts | OpenRouter-Kosten / aktive User | +| MRR | €2.000+ | Polar Dashboard | | Churn (monatlich) | < 8% | Subscription-Events | --- @@ -177,7 +177,7 @@ Ein AI-Kreativtool mit Free-Tier und Premium-Modellen braucht von Tag 1 Schutzma ### Geplante Maßnahmen -- Daily Generation Caps pro Tier (Free: 10/Tag, Starter: 50, Pro: 200, Business: 500) +- Daily Generation Caps pro Tier (Free: 10/Tag, Starter: 50, Pro: 200, Max: 500) - Concurrency Limits: max. 2 parallele Generierungen (Free: 1) - Rate Limiting auf allen API-Endpunkten (Redis-backed) - Premium-Modelle erst ab Starter-Tier (Free nur Budget-Modelle) @@ -215,8 +215,8 @@ Priorisiert nach Abhängigkeiten. Jeder Schritt hat ein klares Artefakt. | 3 | Basis-Canvas mit @xyflow/react | Funktionierender Canvas mit Bild- und Prompt-Nodes | | 4 | OpenRouter-Prototyp | Image Gen (Gemini 2.5 Flash) funktioniert im Canvas | | 5 | Compare + Export | PNG/ZIP-Export aus Frame-Nodes | -| 6 | Better Auth + Credit-System | Login, Balance-Tracking, Reservation+Commit | -| 7 | Lemon Squeezy Integration | Checkout, Webhooks, Credit-Zuweisung | +| 6 | Better Auth + Polar + Credit-System | Login, Polar Checkout via @polar-sh/better-auth, Balance-Tracking, Reservation+Commit | +| 7 | Polar Webhook-Handling | Subscription-Events, automatische Credit-Zuweisung | --- @@ -228,10 +228,10 @@ Folgende Themen werden in eigenen Dokumenten vertieft. Das Manifest bleibt schla |----------|--------| | System Design Doc | Tech Stack mit Versionen, Zwei-Repo-Strategie, Infra-Details, Convex-Architektur, Redis, Cloudflare | | Node Spec Doc | Vollständige Node-Taxonomie (5 Kategorien, 25+ Typen), Datenmodell pro Node-Typ | -| Credit & Pricing Doc | Detaillierte Pricing-Tabellen, Credit-Mechanik, Reservation+Commit-Flow, Agent Partial Failure | +| Credit & Pricing Doc | Detaillierte Pricing-Tabellen, Credit-Abstraktion, Tier-Kalkulation (nach LS + USt), Top-Up-System (fix + Custom mit Bonus-Staffel), Reservation+Commit-Flow, Agent Partial Failure | | Self-Hosting Guide | docker-compose.yml, .env.example, Setup-README, Coolify-Anleitung | | ADR-Sammlung | Architecture Decision Records für Convex, OpenRouter, BSL 1.1, useSend, etc. | --- -*LemonSpace Manifest v1.2 — März 2026* +*LemonSpace Manifest v1.4 — März 2026* diff --git a/.docs/LemonSpace_PRD_v1_1.md b/.docs/LemonSpace_PRD.md similarity index 82% rename from .docs/LemonSpace_PRD_v1_1.md rename to .docs/LemonSpace_PRD.md index 8535e65..cce4fcb 100644 --- a/.docs/LemonSpace_PRD_v1_1.md +++ b/.docs/LemonSpace_PRD.md @@ -4,7 +4,7 @@ | Version | Status | Datum | Projekt | |---------|--------|-------|---------| -| v1.1 | Draft | März 2026 | lemonspace.app | +| v1.3 | Draft | März 2026 | lemonspace.app | --- @@ -22,6 +22,8 @@ | v0.9 | Zwei-Repo-Strategie (Web-App + Landing Page), Auth-Cookie-Sharing | | v1.0 | Self-Hosting-Strategie, Credit Reservation+Commit, UX-Latenzen/Skeleton-Nodes, Convex Lock-in dokumentiert | | v1.1 | Monorepo verworfen → Zwei unabhängige Repos (lemonspace-web + lemonspace-landing), Auth-Cookie-Sharing via .lemonspace.io | +| v1.2 | Pricing überarbeitet: Credit-Abstraktion (1 Cr = €0,01 intern), Tiers €8/€59/€119 (Business→Max), Top-Up-System (fix + Custom mit Bonus-Staffel), Marge nach LS-Gebühr + USt validiert | +| v1.3 | Payment: Lemon Squeezy → Polar.sh (niedrigere Gebühren, Better Auth Plugin, Open Source). Gebührenmodell angepasst: 4% + $0,40 + 1,5% intl. + 0,5% Subscription | --- @@ -154,7 +156,7 @@ Agent Nodes sind ein spezieller Node-Typ auf dem Canvas. Sie fungieren als Smart | Canvas / Flow | @xyflow/react | ehem. react-flow-renderer | | Drag & Drop | dnd-kit | Empfohlen über react-dnd (bessere Performance) | | Deployment | Coolify | VPS-Deployment für alle Self-hosted Services | -| Payment | Lemon Squeezy | Merchant of Record, VAT-Handling | +| Payment | Polar.sh | MoR, VAT-Handling, Better Auth Plugin (@polar-sh/better-auth) | | Input Validation | Zod | Frontend + Backend, Convex Mutations | | In-Memory Store | Redis | Self-hosted via Coolify | | Rate Limiting | Redis-backed | Next.js Middleware / Route Handler | @@ -288,44 +290,95 @@ Node (Basis) ``` CreditBalance ├── id, userId -├── balance // tatsächlich verfügbare Credits (Euro-Cent) +├── balance // verfügbare Credits ├── reserved // aktuell gesperrte Credits (laufende Jobs) ├── available // computed: balance - reserved -├── monthlyAllocation // Credits aus dem Abo +├── monthlyAllocation // Credits aus dem Abo (50/400/3300/6700) └── updatedAt CreditTransaction ├── id, userId -├── amount // positiv = Gutschrift, negativ = Verbrauch +├── amount // positiv = Gutschrift, negativ = Verbrauch (in Credits) ├── type // subscription | topup | usage | reservation | refund ├── status // committed | reserved | released | failed -├── description // z.B. "Bildgenerierung – Gemini 2.5 Flash Image" +├── description // z.B. "Bildgenerierung – Gemini 2.5 Flash Image (8 Cr)" ├── nodeId? // Referenz auf den auslösenden Node -├── openRouterCost? // tatsächliche OpenRouter-Kosten (gecacht) +├── creditCost // Credit-Preis der Operation +├── openRouterCost? // tatsächliche OpenRouter-Kosten in € (intern, für Marge-Tracking) └── createdAt Subscription ├── id, userId -├── tier // free | starter | pro | business +├── tier // free | starter | pro | max ├── status // active | cancelled | past_due ├── currentPeriodStart / currentPeriodEnd -└── lemonSqueezySubscriptionId? +└── polarSubscriptionId? ``` --- ## 9. Pricing & Credit-System +### Credit-Abstraktion + +Nutzer arbeiten mit **Credits** statt mit Euro-Beträgen. Ein Credit entspricht intern €0,01 OpenRouter-Kosten (interner Wechselkurs, wird dem Nutzer nicht kommuniziert). Die Abstraktion entkoppelt das Pricing von API-Preisschwankungen und ermöglicht flexible Anpassungen. + ### Abo-Stufen -| Tier | Preis/Monat | Marge (30%) | Credits (70%) | Credits gesamt | Zielgruppe | -|------|-------------|-------------|---------------|----------------|------------| -| Free | €0 | — | — | €0,50 (Geschenk) | Testen & Evaluieren | -| Starter | €9 | €2,70 | €6,30 | €6,30 | Einzelnutzer | -| Pro | €49 | €12,98 | €34,30 | €36,02 (+5%) | Aktive Creator | -| Business | €99 | €22,77 | €69,30 | €76,23 (+10%) | Teams, hoher Durchsatz | +Preise kalkuliert mit ≥28% Netto-Marge nach Polar Gebühr (4% + $0,40 + 1,5% intl. + 0,5% Subscription) und 19% USt. -### Credit Reservation + Commit (Option C) +| Tier | Preis/Monat | Credits/Monat | Echte Marge | €/Credit | Zielgruppe | +|------|-------------|---------------|-------------|----------|------------| +| Free | €0 | 50 | −€0,50 (Akquise) | gratis | Testen & Evaluieren | +| Starter | €8 | 400 | ~€2,00 (33%) | €0,0200 | Einzelnutzer, Einstieg | +| Pro | €59 | 3.300 | ~€13,71 (29%) | €0,0179 | Aktive Creator | +| Max | €119 | 6.700 | ~€27,61 (29%) | Teams, hoher Durchsatz | + +### Credit-Nachkauf (Top-Up) + +Fixe Top-Up-Pakete + frei wählbarer Custom-Betrag (€5–200). Top-Ups sind pro Credit immer teurer als das entsprechende Abo — regelmäßige Nachkäufer werden zum Upgrade animiert. + +**Fixe Pakete:** + +| Paket | Preis | Credits | Marge | €/Credit | +|-------|-------|---------|-------|----------| +| Klein | €5 | 250 | ~31% | €0,0200 | +| Mittel | €10 | 500 | ~34% | €0,0200 | +| Groß | €20 | 1.000 | ~36% | €0,0200 | +| XL | €50 | 3.000 | ~24% | €0,0167 | + +**Custom Top-Up (€5–200):** Bonus steigt stufenweise mit dem Betrag. Formel: `Credits = FLOOR(Netto × 0,70 × (1 + Bonus) ÷ Kurs)`. UI zeigt live: "€X → Y Credits". + +| Bereich | Bonus | Min. Marge | +|---------|-------|------------| +| €5–9,99 | 0% | ~30% | +| €10–19,99 | 3% | ~28% | +| €20–49,99 | 6% | ~26% | +| €50–99,99 | 10% | ~23% | +| €100–200 | 13% | ~21% | + +### Credit-Preise pro Operation + +Credits = ROUND(API-Kosten × Markup ÷ Kurs). Agent-Calls haben höheren Markup (Wertschöpfung durch Orchestrierung). + +| Operation | Modell | API-Kosten | Markup | Credits | Tier-Zugang | +|-----------|--------|------------|--------|---------|-------------| +| Bildgenerierung (Budget) | FLUX.2 Klein 4B | ~€0,02 | 2× | 4 Cr | Alle Tiers | +| Bildgenerierung (Standard) | Gemini 2.5 Flash Image | ~€0,04 | 2× | 8 Cr | Alle Tiers | +| Bildgenerierung (Standard+) | Gemini 3.1 Flash Image | ~€0,06 | 2× | 12 Cr | Alle Tiers | +| Bildgenerierung (Premium) | GPT-5 Image Mini | ~€0,08 | 2× | 16 Cr | Ab Starter | +| Bildgenerierung (Ultra) | GPT-5 Image | ~€0,18 | 2× | 36 Cr | Ab Starter | +| Bildgen. (Pro Text/4K) | Riverflow V2 Pro | ~€0,33 | 1,5× | 50 Cr | Ab Starter | +| Agent Reasoning (leicht) | Claude Sonnet | ~€0,03 | 3× | 9 Cr | Ab Starter | +| Agent Reasoning (mittel) | Claude Sonnet | ~€0,06 | 2,5× | 15 Cr | Ab Starter | +| Agent-Run (komplex) | Multi-Step Workflow | ~€0,15 | 2,5× | 38 Cr | Ab Starter | +| BG-Entfernung | rembg (self-hosted) | €0 | — | 0 Cr | Alle Tiers | +| Upscaling | Real-ESRGAN (self-hosted) | €0 | — | 0 Cr | Alle Tiers | +| Face Restoration | GFPGAN (self-hosted) | €0 | — | 0 Cr | Alle Tiers | +| Canvas-Operationen | — | €0 | — | 0 Cr | Alle Tiers | +| Export (PNG/ZIP) | — | €0 | — | 0 Cr | Alle Tiers | + +### Credit Reservation + Commit Credits werden vor jedem KI-Call reserviert und erst nach erfolgreichem Abschluss committed. Bei Fehler werden reservierte Credits automatisch freigegeben — kein manueller Refund-Prozess nötig. @@ -333,39 +386,24 @@ Credits werden vor jedem KI-Call reserviert und erst nach erfolgreichem Abschlus ``` 1. RESERVE → CreditTransaction (type: reservation, status: reserved) - CreditBalance.reserved += estimated_cost + CreditBalance.reserved += estimated_credits CreditBalance.available = balance - reserved 2a. SUCCESS → Transaction status: committed - CreditBalance.balance -= actual_cost - CreditBalance.reserved -= estimated_cost + CreditBalance.balance -= actual_credits + CreditBalance.reserved -= estimated_credits 2b. FAILURE → Transaction status: released - CreditBalance.reserved -= estimated_cost + CreditBalance.reserved -= estimated_credits (balance bleibt unverändert — voller Refund) ``` -> **Preisbasis:** Credits werden auf Basis der gecachten OpenRouter-Preise (Redis, TTL ~10 Minuten) reserviert und abgebucht. Minimale Abweichungen zum tatsächlichen API-Preis werden bewusst akzeptiert. Keine nachträgliche Korrektur. +> **Preisbasis:** Credit-Preise pro Operation sind fix definiert (siehe Tabelle). Der interne Wechselkurs (1 Credit = €0,01 OR-Kosten) ist ein internes Kalkulationsinstrument. Bei API-Preisänderungen werden die Credit-Preise pro Operation angepasst — nicht der Wechselkurs. ### Agent Partial Failure Bei Agent-Workflows läuft Reservation + Commit pro Suboperation. Schlägt Step 3 von 5 fehl: Steps 1+2 sind committed, Step 3 wird released, Steps 4+5 werden nicht mehr reserviert. Nur tatsächlich verbrauchte Credits werden berechnet. -### Credit-Verbrauch - -| Operation | Modell / Service | Ungefähre Kosten | -|-----------|------------------|------------------| -| Bildgenerierung (Budget) | FLUX.2 Klein 4B | ~€0,01–0,03 | -| Bildgenerierung (Standard) | Gemini 2.5 Flash Image | ~€0,02–0,04 | -| Bildgenerierung (Premium) | GPT-5 Image / Nano Banana Pro | ~€0,10–0,20 | -| Agent Reasoning Call | Claude 3.5 Sonnet | ~€0,01–0,05 | -| BG-Entfernung | rembg (self-hosted) | Kostenlos | -| Upscaling | Real-ESRGAN (self-hosted) | Kostenlos | -| Face Restoration | GFPGAN (self-hosted) | Kostenlos | -| Canvas-Operationen | — | Kostenlos | -| Text-Overlay | — | Kostenlos | -| Export-Funktionen | — | Kostenlos | - --- ## 10. UX-Strategie für Latenzen @@ -425,10 +463,10 @@ Agent Status: analyzing | Drag & Drop von Bildern via dnd-kit | ☐ Offen | | Authentifizierung via Better Auth | ☐ Offen | | OpenRouter Integration (Image Gen, Gemini 2.5 Flash Image) | ☐ Offen | -| Credit-System: Balance-Tracking, Reservation+Commit, Kosten-Voranzeige | ☐ Offen | -| Abo-Verwaltung: Free/Starter/Pro/Business Tiers, monatliche Credit-Zuweisung | ☐ Offen | -| Lemon Squeezy Integration: Checkout, Webhooks, Credit-Zuweisung | ☐ Offen | -| Credit-Nachkauf (Top-Up) zum Selbstkostenpreis | ☐ Offen | +| Credit-System: Balance-Tracking (in Credits), Reservation+Commit, Kosten-Voranzeige | ☐ Offen | +| Abo-Verwaltung: Free/Starter/Pro/Max Tiers, monatliche Credit-Zuweisung (50/400/3300/6700) | ☐ Offen | +| Polar Integration: Checkout, Webhooks, Credit-Zuweisung | ☐ Offen | +| Credit-Nachkauf: Fixe Top-Ups (€5/€10/€20/€50) + Custom (€5–200 mit Bonus-Staffel) | ☐ Offen | | Node-Status-Modell (idle/executing/done/error) direkt am Node | ☐ Offen | | docker-compose.yml + .env.example + Setup-README | ☐ Offen | @@ -482,8 +520,8 @@ Agent Status: analyzing |-------|----------------------| | Authentifizierung | ✅ Better Auth (self-hosted, open-source) | | Tailwind v4 | ✅ v4 ist Standard, keine Migration nötig | -| Pricing / Credit-System | ✅ 4-Tier Abo + Credit-System, 30% Marge, Reservation+Commit | -| Payment Provider | ✅ Lemon Squeezy (Merchant of Record, VAT-Handling) | +| Pricing / Credit-System | ✅ Credit-Abstraktion (1 Cr = €0,01 intern), 4 Tiers (Free/Starter €8/Pro €59/Max €119), Reservation+Commit, Top-Up fix + Custom | +| Payment Provider | ✅ Polar (Merchant of Record, VAT-Handling) | | Self-Hosting-Strategie | ✅ docker-compose.yml + .env.example + README, für technisch versierte Nutzer | | Convex Lock-in | ✅ Bewusst akzeptiert; Migrations-Pfad: Convex Cloud EU | | OpenRouter Image-Modelle | ✅ 9 Modelle definiert, alle Tiers haben Zugriff | @@ -527,7 +565,7 @@ Agent Status: analyzing 2. Convex Schema: Detailliertes Datenbankschema entwerfen (Node-Taxonomie + Credit-System inkl. CreditBalance.reserved/available) 3. UI/UX Wireframes: Canvas-Interface, Node-Status-Modell, Skeleton-Nodes, Agent Clarification-UX skizzieren 4. API-Prototyp: OpenRouter Anbindung testen — Image Gen (Gemini 2.5 Flash Image) und Text/Reasoning (Claude 3.5 Sonnet) -5. Lemon Squeezy Integration: Abo-Tiers anlegen, Webhook-Handling für Subscription-Events und Credit-Zuweisung +5. Polar Integration: Abo-Tiers anlegen, Webhook-Handling für Subscription-Events und Credit-Zuweisung 6. docker-compose.yml + .env.example + Setup-README ausarbeiten --- diff --git a/.docs/LemonSpace_Phase1_TODO.md b/.docs/LemonSpace_Phase1_TODO.md deleted file mode 100644 index efc4eb5..0000000 --- a/.docs/LemonSpace_Phase1_TODO.md +++ /dev/null @@ -1,111 +0,0 @@ -# 🍋 LemonSpace — Phase 1 MVP TODO - -## 1. Projekt-Setup & Infrastruktur - -- [ ] `lemonspace-web` Repo scaffolden (Next.js 16 + Tailwind v4 + ShadCN + Convex + BetterAuth) -- [ ] `lemonspace-landing` Repo scaffolden (Next.js 16 + Tailwind v4 + ShadCN) -- [ ] Auth-Cookie-Sharing: BetterAuth Cookie auf `.lemonspace.io` setzen, Landing Page liest Login-State -- [ ] Convex Self-hosted Backend aufsetzen (via Coolify) -- [ ] Redis aufsetzen (via Coolify) -- [ ] Sentry Cloud anbinden (Free Tier) -- [ ] Cloudflare DNS + DDoS-Schutz konfigurieren -- [ ] Rybbit Analytics deployen (via Coolify) -- [ ] useSend + Stalwart E-Mail-Stack deployen (via Coolify) - -## 2. Authentifizierung - -- [ ] Better Auth integrieren (Self-hosted) -- [ ] Login / Signup Flow -- [ ] E-Mail-Verifizierung (via useSend) -- [ ] Session-Management - -## 3. Canvas — Kernfunktion - -- [ ] Basis-Canvas mit @xyflow/react -- [ ] Zoom, Pan, Navigation -- [ ] Drag & Drop von Bildern via dnd-kit -- [ ] Node-Rendering-System (typisierte Bausteine) -- [ ] Node-Verbindungen (Edges) zwischen kompatiblen Nodes -- [ ] Gruppierung und Layering von Canvas-Elementen - -## 4. Phase-1-Nodes - -### Quelle -- [ ] **Bild-Node** — Upload (PNG, JPG, WebP) + URL-Einbindung -- [ ] **Text-Node** — Freitextfeld mit Markdown-Support -- [ ] **Prompt-Node** — Dedizierter Node für Modellinstruktionen, verbindet sich mit KI-Nodes - -### KI-Ausgabe -- [ ] **KI-Bild-Node** — Output eines Bildgenerierungs-Calls, speichert Prompt, Modell, Parameter - -### Canvas & Layout -- [ ] **Gruppe-Node** — Container, Collapse/Expand, benannte Scopes -- [ ] **Frame-Node** — Artboard mit definierter Auflösung, Export-Boundary -- [ ] **Notiz-Node** — Annotation, Markdown-Support, kein Datenanschluss -- [ ] **Compare-Node** — Zwei Bilder nebeneinander mit interaktivem Slider - -## 5. KI-Integration - -- [ ] OpenRouter-Anbindung (Image Generation) -- [ ] Initiales Modell: Gemini 2.5 Flash Image -- [ ] Modellauswahl-UI (mindestens Budget/Standard/Premium) -- [ ] Prompt → KI-Bild-Generierung End-to-End im Canvas -- [ ] Node-Status-Modell implementieren (`idle → executing → done | error`) -- [ ] Error-State direkt am Node mit Hinweistext - -## 6. Credit-System - -- [ ] Convex Schema: `CreditBalance` (balance, reserved, available, monthlyAllocation) -- [ ] Convex Schema: `CreditTransaction` (amount, type, status, nodeId, openRouterCost) -- [ ] Convex Schema: `Subscription` (tier, status, periodStart/End, lemonSqueezyId) -- [ ] Reservation + Commit Flow implementieren -- [ ] Kosten-Voranzeige vor Generierung -- [ ] OpenRouter-Preise cachen (Redis, TTL ~10min) -- [ ] Credit-Balance-Anzeige in der UI - -## 7. Pricing & Payment - -- [ ] Lemon Squeezy Integration: Checkout-Flow -- [ ] Webhook-Handling für Subscription-Events -- [ ] Automatische Credit-Zuweisung bei Abo-Start / Abo-Verlängerung -- [ ] 4 Tiers anlegen: Free (€0,50) / Starter €9 / Pro €49 / Business €99 -- [ ] Credit-Nachkauf (Top-Up) zum Selbstkostenpreis - -## 8. Abuse Prevention - -- [ ] Daily Generation Caps (Free: 10, Starter: 50, Pro: 200, Business: 500) -- [ ] Concurrency Limits (Free: 1, Paid: 2 parallele Generierungen) -- [ ] Rate Limiting auf API-Endpunkten (Redis-backed) -- [ ] Premium-Modelle erst ab Starter-Tier -- [ ] Top-Up-Limit pro Monat - -## 9. Export - -- [ ] PNG-Export aus Frame-Nodes -- [ ] ZIP-Export (mehrere Frames / Varianten) - -## 10. Convex Schema (Gesamtübersicht) - -- [ ] `Canvas` — id, name, ownerId, createdAt, updatedAt -- [ ] `Node` — id, canvasId, type, position, size, data, createdAt -- [ ] `Edge` — id, canvasId, sourceNodeId, targetNodeId -- [ ] `CreditBalance` — siehe Credit-System -- [ ] `CreditTransaction` — siehe Credit-System -- [ ] `Subscription` — siehe Credit-System -- [ ] `User` — id, email, name, avatarUrl, createdAt - -## 11. Nicht Phase 1 (bewusst ausgeklammert) - -- Echtzeit-Kollaboration -- Agent Nodes -- Video-Generierung -- Freepik Asset Browser -- Style Transfer / GFPGAN / rembg / Real-ESRGAN -- Team-Features (Workspaces, Rollen, Rechte) -- docker-compose.yml für Self-Hosting -- E2E-Testing - ---- - -*Reihenfolge orientiert sich an den Abhängigkeiten aus dem Manifest v1.2:* -*Repos scaffolden → Convex Schema → Canvas → OpenRouter → Compare + Export → Auth + Credits → Lemon Squeezy*