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.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# 🍋 LemonSpace — Produkt-Manifest
|
# 🍋 LemonSpace — Produkt-Manifest
|
||||||
|
|
||||||
**v1.2 — März 2026**
|
**v1.4 — März 2026**
|
||||||
|
|
||||||
*Self-Hosted, Source-Available Creative Workspace*
|
*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) | ✅ |
|
| Auth | Better Auth (self-hosted, open-source) | ✅ |
|
||||||
| AI Layer | OpenRouter als primäre AI-Schicht. 9 Image-Modelle, Text/Reasoning via Claude / GPT. | ✅ |
|
| 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 | ✅ |
|
| Self-hosted KI | rembg, Real-ESRGAN, GFPGAN — kostenlos, separate Repos | ✅ |
|
||||||
| Payment | Lemon Squeezy (Merchant of Record, VAT-Handling) | ✅ |
|
| Payment | Polar.sh (MoR, VAT, Better Auth Plugin @polar-sh/better-auth) | ✅ |
|
||||||
| Credits | Reservation + Commit. Gecachte Preise (Redis, TTL ~10min). Kein nachträglicher Ausgleich. | ✅ |
|
| Credits | Reservation + Commit. Credit-Abstraktion (1 Cr = €0,01 OR intern). Markup: 2× Bild, 2,5–3× Agent. | ✅ |
|
||||||
| Pricing | 4 Tiers: Free / Starter €9 / Pro €49 / Business €99. 30% Marge, 70% → Credits. | ✅ |
|
| 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. | ✅ |
|
| 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`. | ✅ |
|
| Repo-Strategie | Zwei unabhängige Repos (lemonspace-web + lemonspace-landing). Auth-Cookie-Sharing via `.lemonspace.io`. | ✅ |
|
||||||
| Frontend | Next.js 16 + Tailwind v4 + ShadCN | ✅ |
|
| 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 |
|
| Metrik | Ziel (6 Monate) | Messung |
|
||||||
|--------|-----------------|---------|
|
|--------|-----------------|---------|
|
||||||
| Conversion Free → Paid | > 5% | Lemon Squeezy Events |
|
| Conversion Free → Paid | > 5% | Polar Events |
|
||||||
| COGS pro aktivem Workspace | < 70% des Abo-Preises | OpenRouter-Kosten / aktive User |
|
| COGS pro aktivem Workspace | < 70% des Credit-Werts | OpenRouter-Kosten / aktive User |
|
||||||
| MRR | €2.000+ | Lemon Squeezy Dashboard |
|
| MRR | €2.000+ | Polar Dashboard |
|
||||||
| Churn (monatlich) | < 8% | Subscription-Events |
|
| 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
|
### 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)
|
- Concurrency Limits: max. 2 parallele Generierungen (Free: 1)
|
||||||
- Rate Limiting auf allen API-Endpunkten (Redis-backed)
|
- Rate Limiting auf allen API-Endpunkten (Redis-backed)
|
||||||
- Premium-Modelle erst ab Starter-Tier (Free nur Budget-Modelle)
|
- 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 |
|
| 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 |
|
| 4 | OpenRouter-Prototyp | Image Gen (Gemini 2.5 Flash) funktioniert im Canvas |
|
||||||
| 5 | Compare + Export | PNG/ZIP-Export aus Frame-Nodes |
|
| 5 | Compare + Export | PNG/ZIP-Export aus Frame-Nodes |
|
||||||
| 6 | Better Auth + Credit-System | Login, Balance-Tracking, Reservation+Commit |
|
| 6 | Better Auth + Polar + Credit-System | Login, Polar Checkout via @polar-sh/better-auth, Balance-Tracking, Reservation+Commit |
|
||||||
| 7 | Lemon Squeezy Integration | Checkout, Webhooks, Credit-Zuweisung |
|
| 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 |
|
| 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 |
|
| 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 |
|
| 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. |
|
| 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*
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
| Version | Status | Datum | Projekt |
|
| 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 |
|
| 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.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.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 |
|
| Canvas / Flow | @xyflow/react | ehem. react-flow-renderer |
|
||||||
| Drag & Drop | dnd-kit | Empfohlen über react-dnd (bessere Performance) |
|
| Drag & Drop | dnd-kit | Empfohlen über react-dnd (bessere Performance) |
|
||||||
| Deployment | Coolify | VPS-Deployment für alle Self-hosted Services |
|
| 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 |
|
| Input Validation | Zod | Frontend + Backend, Convex Mutations |
|
||||||
| In-Memory Store | Redis | Self-hosted via Coolify |
|
| In-Memory Store | Redis | Self-hosted via Coolify |
|
||||||
| Rate Limiting | Redis-backed | Next.js Middleware / Route Handler |
|
| Rate Limiting | Redis-backed | Next.js Middleware / Route Handler |
|
||||||
@@ -288,44 +290,95 @@ Node (Basis)
|
|||||||
```
|
```
|
||||||
CreditBalance
|
CreditBalance
|
||||||
├── id, userId
|
├── id, userId
|
||||||
├── balance // tatsächlich verfügbare Credits (Euro-Cent)
|
├── balance // verfügbare Credits
|
||||||
├── reserved // aktuell gesperrte Credits (laufende Jobs)
|
├── reserved // aktuell gesperrte Credits (laufende Jobs)
|
||||||
├── available // computed: balance - reserved
|
├── available // computed: balance - reserved
|
||||||
├── monthlyAllocation // Credits aus dem Abo
|
├── monthlyAllocation // Credits aus dem Abo (50/400/3300/6700)
|
||||||
└── updatedAt
|
└── updatedAt
|
||||||
|
|
||||||
CreditTransaction
|
CreditTransaction
|
||||||
├── id, userId
|
├── id, userId
|
||||||
├── amount // positiv = Gutschrift, negativ = Verbrauch
|
├── amount // positiv = Gutschrift, negativ = Verbrauch (in Credits)
|
||||||
├── type // subscription | topup | usage | reservation | refund
|
├── type // subscription | topup | usage | reservation | refund
|
||||||
├── status // committed | reserved | released | failed
|
├── 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
|
├── 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
|
└── createdAt
|
||||||
|
|
||||||
Subscription
|
Subscription
|
||||||
├── id, userId
|
├── id, userId
|
||||||
├── tier // free | starter | pro | business
|
├── tier // free | starter | pro | max
|
||||||
├── status // active | cancelled | past_due
|
├── status // active | cancelled | past_due
|
||||||
├── currentPeriodStart / currentPeriodEnd
|
├── currentPeriodStart / currentPeriodEnd
|
||||||
└── lemonSqueezySubscriptionId?
|
└── polarSubscriptionId?
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 9. Pricing & Credit-System
|
## 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
|
### Abo-Stufen
|
||||||
|
|
||||||
| Tier | Preis/Monat | Marge (30%) | Credits (70%) | Credits gesamt | Zielgruppe |
|
Preise kalkuliert mit ≥28% Netto-Marge nach Polar Gebühr (4% + $0,40 + 1,5% intl. + 0,5% Subscription) und 19% USt.
|
||||||
|------|-------------|-------------|---------------|----------------|------------|
|
|
||||||
| 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 |
|
|
||||||
|
|
||||||
### 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.
|
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)
|
1. RESERVE → CreditTransaction (type: reservation, status: reserved)
|
||||||
CreditBalance.reserved += estimated_cost
|
CreditBalance.reserved += estimated_credits
|
||||||
CreditBalance.available = balance - reserved
|
CreditBalance.available = balance - reserved
|
||||||
|
|
||||||
2a. SUCCESS → Transaction status: committed
|
2a. SUCCESS → Transaction status: committed
|
||||||
CreditBalance.balance -= actual_cost
|
CreditBalance.balance -= actual_credits
|
||||||
CreditBalance.reserved -= estimated_cost
|
CreditBalance.reserved -= estimated_credits
|
||||||
|
|
||||||
2b. FAILURE → Transaction status: released
|
2b. FAILURE → Transaction status: released
|
||||||
CreditBalance.reserved -= estimated_cost
|
CreditBalance.reserved -= estimated_credits
|
||||||
(balance bleibt unverändert — voller Refund)
|
(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
|
### 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.
|
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
|
## 10. UX-Strategie für Latenzen
|
||||||
@@ -425,10 +463,10 @@ Agent Status: analyzing
|
|||||||
| Drag & Drop von Bildern via dnd-kit | ☐ Offen |
|
| Drag & Drop von Bildern via dnd-kit | ☐ Offen |
|
||||||
| Authentifizierung via Better Auth | ☐ Offen |
|
| Authentifizierung via Better Auth | ☐ Offen |
|
||||||
| OpenRouter Integration (Image Gen, Gemini 2.5 Flash Image) | ☐ Offen |
|
| OpenRouter Integration (Image Gen, Gemini 2.5 Flash Image) | ☐ Offen |
|
||||||
| Credit-System: Balance-Tracking, Reservation+Commit, Kosten-Voranzeige | ☐ Offen |
|
| Credit-System: Balance-Tracking (in Credits), Reservation+Commit, Kosten-Voranzeige | ☐ Offen |
|
||||||
| Abo-Verwaltung: Free/Starter/Pro/Business Tiers, monatliche Credit-Zuweisung | ☐ Offen |
|
| Abo-Verwaltung: Free/Starter/Pro/Max Tiers, monatliche Credit-Zuweisung (50/400/3300/6700) | ☐ Offen |
|
||||||
| Lemon Squeezy Integration: Checkout, Webhooks, Credit-Zuweisung | ☐ Offen |
|
| Polar Integration: Checkout, Webhooks, Credit-Zuweisung | ☐ Offen |
|
||||||
| Credit-Nachkauf (Top-Up) zum Selbstkostenpreis | ☐ 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 |
|
| Node-Status-Modell (idle/executing/done/error) direkt am Node | ☐ Offen |
|
||||||
| docker-compose.yml + .env.example + Setup-README | ☐ Offen |
|
| docker-compose.yml + .env.example + Setup-README | ☐ Offen |
|
||||||
|
|
||||||
@@ -482,8 +520,8 @@ Agent Status: analyzing
|
|||||||
|-------|----------------------|
|
|-------|----------------------|
|
||||||
| Authentifizierung | ✅ Better Auth (self-hosted, open-source) |
|
| Authentifizierung | ✅ Better Auth (self-hosted, open-source) |
|
||||||
| Tailwind v4 | ✅ v4 ist Standard, keine Migration nötig |
|
| Tailwind v4 | ✅ v4 ist Standard, keine Migration nötig |
|
||||||
| Pricing / Credit-System | ✅ 4-Tier Abo + Credit-System, 30% Marge, Reservation+Commit |
|
| 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 | ✅ Lemon Squeezy (Merchant of Record, VAT-Handling) |
|
| Payment Provider | ✅ Polar (Merchant of Record, VAT-Handling) |
|
||||||
| Self-Hosting-Strategie | ✅ docker-compose.yml + .env.example + README, für technisch versierte Nutzer |
|
| Self-Hosting-Strategie | ✅ docker-compose.yml + .env.example + README, für technisch versierte Nutzer |
|
||||||
| Convex Lock-in | ✅ Bewusst akzeptiert; Migrations-Pfad: Convex Cloud EU |
|
| Convex Lock-in | ✅ Bewusst akzeptiert; Migrations-Pfad: Convex Cloud EU |
|
||||||
| OpenRouter Image-Modelle | ✅ 9 Modelle definiert, alle Tiers haben Zugriff |
|
| 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)
|
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
|
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)
|
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
|
6. docker-compose.yml + .env.example + Setup-README ausarbeiten
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -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*
|
|
||||||
Reference in New Issue
Block a user