feat: dashboard, Convex auth, UI components, and LemonSpace branding

- 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
This commit is contained in:
Matthias
2026-03-25 10:15:42 +01:00
parent 2cead5e87b
commit cd857a01f5
42 changed files with 24599 additions and 118 deletions

View File

@@ -0,0 +1,111 @@
# 🍋 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*