- Add dashboard shell with auth integration - Wire Better Auth / Convex (client, server, HTTP routes) - Add shadcn-style UI primitives and logo assets - Update global styles and landing page - Add internal docs (.docs) Made-with: Cursor
112 lines
4.1 KiB
Markdown
112 lines
4.1 KiB
Markdown
# 🍋 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*
|