- Introduced `hasStorageId` function to check for valid storage IDs in canvas nodes. - Updated `batchGetUrlsForCanvas` query to utilize helper functions for improved readability and maintainability. - Implemented `assertCanvasOwner`, `listNodesForCanvas`, `collectStorageIds`, and `resolveStorageUrls` to streamline the process of fetching storage URLs associated with a canvas. - Enhanced query logic to skip unnecessary database calls when no valid storage IDs are present.
🍋 LemonSpace
Self-Hosted, Source-Available Creative Workspace
LemonSpace ist eine visuelle Arbeitsfläche, auf der kreative Teams aus wenigen Input-Assets schnell kampagnenfähige Bildvarianten erzeugen — mit KI-gestützter Generierung, durchdachter Latenz-UX und voller Kontrolle über ihre Daten.
Vision
Vom Rohbild zur fertigen Kampagnenvariante in Minuten statt Stunden — auf eigener Infrastruktur oder als gehosteter Service.
Features
Infinite Canvas
- Zoom, Pan und Navigation auf einem unbegrenzten Canvas
- Node-basiertes Workflow-System
- Drag & Drop von Assets und KI-Outputs
- Gruppierung und Layering von Elementen
Node-System
| Kategorie | Nodes |
|---|---|
| Quelle | Bild, Text, Prompt |
| KI-Ausgabe | KI-Bild |
| Layout | Gruppe, Frame, Notiz, Compare |
KI-Integration
- OpenRouter als primäre AI-Schicht
- 9 Image-Modelle (Gemini, FLUX, GPT-5, etc.)
- Self-hosted KI-Services (rembg, Real-ESRGAN, GFPGAN)
UX-Prinzipien
- Node-Status-Modell:
idle → executing → done | error - Skeleton-Nodes für Agent-Workflows
- Browser Notifications (opt-in)
Tech Stack
| Bereich | Technologie |
|---|---|
| Frontend | Next.js 16 + Tailwind v4 + ShadCN/UI |
| Canvas | @xyflow/react + dnd-kit |
| Backend | Convex (Self-hosted) |
| Auth | Better Auth |
| AI | OpenRouter |
| Payment | Lemon Squeezy |
| Cache | Redis |
| Analytics | Rybbit |
| Unsend + Stalwart |
Getting Started
Voraussetzungen
- Node.js 20+
- pnpm
- Docker (für Self-Hosted)
- Convex Backend
Installation
# Repository klonen
git clone https://github.com/lemonspace/lemonspace-web.git
cd lemonspace-web
# Dependencies installieren
pnpm install
# Environment-Variables kopieren
cp .env.example .env.local
# Entwicklungsserver starten
pnpm dev
Environment Variables
# Convex
CONVEX_DEPLOYMENT=your-deployment-name
NEXT_PUBLIC_CONVEX_URL=https://your-convex-instance.convex.cloud
# Better Auth
BETTER_AUTH_SECRET=your-secret-key
BETTER_AUTH_URL=http://localhost:3000
# OpenRouter
OPENROUTER_API_KEY=your-openrouter-key
# Lemon Squeezy
LEMONSQUEEZY_API_KEY=your-key
LEMONSQUEEZY_WEBHOOK_SECRET=your-webhook-secret
# Redis
REDIS_URL=redis://localhost:6379
Self-Hosting
Self-Hosting richtet sich an technisch versierte Nutzer. Für alle anderen empfehlen wir die gehostete Version unter lemonspace.app.
# Docker Compose
docker-compose up -d
Das Self-Hosting-Paket umfasst:
docker-compose.yml— Alle Services.env.example— Umgebungsvariablen- Setup-README — Schritt-für-Schritt-Anleitung
Pricing
| Tier | Preis/Monat | Credits | Zielgruppe |
|---|---|---|---|
| Free | €0 | €0,50 | Testen & Evaluieren |
| Starter | €9 | €6,30 | Einzelnutzer |
| Pro | €49 | €36,02 | Aktive Creator |
| Business | €99 | €76,23 | Teams |
Projektstruktur
lemonspace-web/
├── app/ # Next.js App Router
├── components/ # React-Komponenten
│ ├── ui/ # ShadCN/UI Komponenten
│ ├── canvas/ # Canvas-Komponenten
│ └── nodes/ # Node-Komponenten
├── convex/ # Convex Schema & Functions
├── lib/ # Utility-Funktionen
├── hooks/ # React Hooks
└── types/ # TypeScript-Typen
Roadmap
Phase 1 — Foundation (MVP)
- Projektsetup
- Canvas mit @xyflow/react
- Bild-Upload & KI-Generierung
- Credit-System
- Lemon Squeezy Integration
Phase 2 — KI-Features
- Alle 9 Image-Modelle
- Agent Nodes
- Transformation Nodes (BG entfernen, Upscale)
- Compare-Node
Phase 3 — Kollaboration
- Echtzeit-Kollaboration
- Kommentar-System
- Versions-History
- Export-Funktionen
Lizenz
LemonSpace ist Source Available, nicht Open Source.
| Nutzung | Lizenz | Kosten |
|---|---|---|
| Privat / Persönlich | BSL 1.1 | Kostenlos |
| Kommerziell Self-Host | Separate Lizenz | TBD |
| Gehostete Version | Abo | €9–99/Monat |
BSL 1.1 mit 3-Jahres-Change-Date zu Apache 2.0
Siehe LICENSE.md für Details.
Mitwirken
Beiträge sind willkommen! Bitte öffnen Sie einen Pull Request oder ein Issue.
Entwicklungs-Richtlinien
- Conventional Commits
- TypeScript strict mode
- Tests für neue Features
Support
- Dokumentation: docs.lemonspace.io
- Issues: GitHub Issues
- Email: support@lemonspace.io
Kontakt
- Website: lemonspace.io
- App: app.lemonspace.io
- Email: hello@lemonspace.io
- Lizenzanfragen: licensing@lemonspace.io
LemonSpace — From raw image to campaign-ready in minutes, not hours.