- 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
4.1 KiB
4.1 KiB
🍋 LemonSpace — Phase 1 MVP TODO
1. Projekt-Setup & Infrastruktur
lemonspace-webRepo scaffolden (Next.js 16 + Tailwind v4 + ShadCN + Convex + BetterAuth)lemonspace-landingRepo scaffolden (Next.js 16 + Tailwind v4 + ShadCN)- Auth-Cookie-Sharing: BetterAuth Cookie auf
.lemonspace.iosetzen, 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, updatedAtNode— id, canvasId, type, position, size, data, createdAtEdge— id, canvasId, sourceNodeId, targetNodeIdCreditBalance— siehe Credit-SystemCreditTransaction— siehe Credit-SystemSubscription— siehe Credit-SystemUser— 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