mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-18 16:09:44 +02:00
- Add uload project with apps/web structure
- Reorganize from flat to monorepo structure
- Remove PocketBase binary and local data
- Update to pnpm and @uload/web namespace
- Add picture project to monorepo
- Remove embedded git repository
- Unify all package names to @{project}/{app} schema:
- @maerchenzauber/* (was @storyteller/*)
- @manacore/* (was manacore-*, manacore)
- @manadeck/* (was web, backend, manadeck)
- @memoro/* (was memoro-web, landing, memoro)
- @picture/* (already unified)
- @uload/web
- Add convenient dev scripts for all apps:
- pnpm dev:{project}:web
- pnpm dev:{project}:landing
- pnpm dev:{project}:mobile
- pnpm dev:{project}:backend
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
9.3 KiB
9.3 KiB
Unified Card System - Konzept & Implementierungsplan
🎯 Vision
Ein universelles, modulares Card-System, das über Datenbank konfigurierbar ist, Themes unterstützt und einfach in andere Projekte portiert werden kann.
📦 1. Card-Komponenten-Architektur
Basis-Card-Komponente
<!-- $lib/components/cards/BaseCard.svelte -->
<script lang="ts">
interface CardConfig {
id: string;
variant: 'default' | 'compact' | 'hero' | 'minimal';
theme?: ThemeConfig;
modules: ModuleConfig[];
layout: LayoutConfig;
animations?: AnimationConfig;
responsive?: ResponsiveConfig;
}
</script>
Module-System
Jede Card besteht aus konfigurierbaren Modulen:
interface ModuleConfig {
type: 'header' | 'content' | 'footer' | 'media' | 'stats' | 'actions' | 'custom';
component: string; // Dynamisch geladene Komponente
props: Record<string, any>;
order: number;
visibility: 'always' | 'desktop' | 'mobile' | 'conditional';
grid?: { col: number; row: number; span: number };
}
Beispiel-Module
- HeaderModule: Titel, Avatar, Badges
- ContentModule: Text, Listen, Tabellen
- MediaModule: Bilder, Videos, QR-Codes
- StatsModule: Zahlen, Charts, Progress
- ActionsModule: Buttons, Links, Dropdowns
- CustomModule: Benutzerdefinierte Inhalte
🗄️ 2. Datenbank-Schema (PocketBase)
Collections
themes
{
id: string,
name: string,
slug: string,
description: string,
author: string,
version: string,
is_public: boolean,
is_premium: boolean,
price: number,
colors: {
primary: string,
secondary: string,
accent: string,
background: string,
surface: string,
text: string,
border: string,
// Weitere Farben...
},
typography: {
fontFamily: string,
fontSize: object,
fontWeight: object,
lineHeight: object
},
spacing: {
xs: string,
sm: string,
md: string,
lg: string,
xl: string
},
borderRadius: object,
shadows: object,
animations: object,
created: datetime,
updated: datetime
}
card_templates
{
id: string,
name: string,
slug: string,
description: string,
category: string, // 'profile', 'links', 'stats', 'media', etc.
theme_id: string, // Relation zu themes
is_public: boolean,
modules: [
{
type: string,
component: string,
props: object,
order: number,
visibility: string,
grid: object
}
],
layout: {
columns: number,
gap: string,
padding: string,
maxWidth: string
},
responsive: {
breakpoints: object,
mobileLayout: string
},
preview_image: string,
downloads: number,
rating: number,
created: datetime,
updated: datetime
}
user_cards
{
id: string,
user_id: string, // Relation zu users
template_id: string, // Relation zu card_templates
page: string, // 'profile', 'dashboard', etc.
position: number,
custom_config: object, // Überschreibt Template-Config
is_active: boolean,
created: datetime,
updated: datetime
}
theme_store
{
id: string,
theme_id: string, // Relation zu themes
featured: boolean,
category: string[], // ['minimal', 'dark', 'colorful', 'professional']
tags: string[],
screenshots: string[],
demo_url: string,
installations: number,
reviews: relation[], // zu theme_reviews
created: datetime,
updated: datetime
}
🎨 3. Theme-System
Theme-Provider
<!-- $lib/providers/ThemeProvider.svelte -->
<script lang="ts">
import { setContext } from 'svelte';
import { writable } from 'svelte/store';
export let theme: ThemeConfig;
const themeStore = writable(theme);
setContext('theme', themeStore);
// CSS-Variablen dynamisch setzen
$: {
if (typeof document !== 'undefined') {
const root = document.documentElement;
Object.entries(theme.colors).forEach(([key, value]) => {
root.style.setProperty(`--theme-${key}`, value);
});
}
}
</script>
Theme-Editor
<!-- $lib/components/ThemeEditor.svelte -->
- Live-Preview - Color-Picker - Typography-Editor - Spacing-Controls - Animation-Settings - Export/Import
- Save to Database
🛍️ 4. Theme Store
Features
-
Browse & Filter
- Kategorien (Minimal, Dark, Colorful, Professional)
- Tags (E-Commerce, Portfolio, Blog, Corporate)
- Sortierung (Beliebt, Neu, Bewertung, Preis)
-
Preview & Demo
- Live-Preview mit eigenen Daten
- Demo-Seiten
- Screenshots/Videos
- Code-Beispiele
-
Monetarisierung
- Free Themes
- Premium Themes (Einmalzahlung)
- Subscription Model
- Revenue Sharing für Theme-Autoren
-
Community Features
- Bewertungen & Reviews
- Kommentare
- Fork & Customize
- Share eigene Themes
🔧 5. Implementierung
Phase 1: Basis-System (Woche 1-2)
// 1. BaseCard Komponente
// 2. Module-Loader
// 3. Theme-Provider
// 4. Basis-Module (Header, Content, Actions)
Phase 2: Datenbank-Integration (Woche 3-4)
// 1. PocketBase Collections erstellen
// 2. API-Endpoints
// 3. CRUD-Operationen
// 4. Caching-Strategy
Phase 3: Theme-Editor (Woche 5-6)
// 1. Visual Editor
// 2. Code Editor
// 3. Preview-System
// 4. Export/Import
Phase 4: Theme Store (Woche 7-8)
// 1. Store-Frontend
// 2. Payment-Integration
// 3. Review-System
// 4. Author-Dashboard
🚀 6. Portabilität & Wiederverwendbarkeit
NPM Package
{
"name": "@uload/card-system",
"version": "1.0.0",
"exports": {
".": "./dist/index.js",
"./themes": "./dist/themes/index.js",
"./modules": "./dist/modules/index.js"
}
}
Standalone-Version
// Eigenständige JS/CSS Bundles
// Web Components Version
// Framework-agnostisch (React, Vue, Angular Adapter)
Integration in andere Projekte
<script>
import { CardSystem } from '@uload/card-system';
import { PocketBaseProvider } from '@uload/card-system/providers';
</script>
<CardSystem config={myConfig} theme={myTheme} modules={myModules} />
🎯 7. Use Cases
1. Profile Pages
- User-Profile mit Stats, Links, Bio
- Company-Profile mit Services, Team
- Product-Profile mit Features, Pricing
2. Dashboards
- Analytics-Cards
- Activity-Feeds
- Quick-Actions
- Status-Widgets
3. Content-Management
- Blog-Posts
- Media-Galleries
- Document-Cards
- Event-Cards
4. E-Commerce
- Product-Cards
- Category-Cards
- Cart-Items
- Order-Summary
📊 8. Technische Spezifikationen
Performance
- Lazy Loading von Modulen
- Virtual Scrolling für Listen
- Image Optimization
- CSS-in-JS oder Tailwind
- Bundle-Splitting
Accessibility
- ARIA-Labels
- Keyboard-Navigation
- Screen-Reader Support
- High-Contrast Themes
Security
- XSS-Protection
- CSP-Headers
- Input-Sanitization
- Rate-Limiting
🔄 9. Migration Strategy
Von aktuellem System
- Identifiziere alle Card-Varianten
- Extrahiere gemeinsame Patterns
- Erstelle Module für jeden Use-Case
- Schrittweise Migration
- Backward-Compatibility
Beispiel-Migration
<!-- Alt -->
<div class="profile-card">
<h2>{user.name}</h2>
<p>{user.bio}</p>
</div>
<!-- Neu -->
<BaseCard template="profile-basic">
<HeaderModule {user} />
<ContentModule text={user.bio} />
</BaseCard>
💡 10. Erweiterte Features
KI-Integration
- Auto-Theme-Generation basierend auf Logo/Brand
- Content-Suggestions
- Layout-Optimierung
- A/B-Testing
Analytics
- Card-Performance-Tracking
- User-Interaction-Heatmaps
- Conversion-Tracking
- Theme-Usage-Statistics
Collaboration
- Team-Themes
- Shared-Templates
- Version-Control
- Comments & Annotations
📈 11. Business Model
Freemium
- Free: 5 Themes, Basic-Module
- Pro: Unlimited Themes, All Module, Priority Support
- Enterprise: Custom Themes, White-Label, API-Access
Marketplace
- 70/30 Revenue Split mit Theme-Autoren
- Featured Themes
- Sponsored Placements
- Bundle-Deals
🎯 12. Vorteile des Systems
- Flexibilität: Jede Card individuell konfigurierbar
- Konsistenz: Einheitliches Design-System
- Performance: Optimierte, wiederverwendbare Komponenten
- Skalierbarkeit: Einfach neue Module/Themes hinzufügen
- Portabilität: In andere Projekte übertragbar
- Monetarisierung: Theme-Store als Revenue-Stream
- Community: User können eigene Themes teilen
- Wartbarkeit: Zentrale Theme/Module-Verwaltung
🚦 13. Nächste Schritte
Sofort (Diese Woche)
- Proof of Concept BaseCard
- 3-4 Basis-Module
- Theme-Provider implementieren
Kurzfristig (2-4 Wochen)
- Datenbank-Schema erstellen
- CRUD-API implementieren
- Migration bestehender Cards
Mittelfristig (1-2 Monate)
- Theme-Editor
- Theme-Store MVP
- NPM-Package vorbereiten
Langfristig (3-6 Monate)
- Marketplace launchen
- Enterprise-Features
- KI-Integration
📝 Notizen
- Theme-System könnte auch für andere UI-Elemente verwendet werden
- Card-System als Basis für Page-Builder
- Integration mit bestehenden Design-Tools (Figma, Sketch)
- Mögliche Partnerschaft mit Theme-Autoren
- White-Label-Lösung für Agenturen
Dieses Dokument wird kontinuierlich erweitert und aktualisiert.