mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 11:21:09 +02:00
Move inactive projects out of active workspace: - bauntown (community website) - maerchenzauber (AI story generation) - memoro (voice memo app) - news (news aggregation) - nutriphi (nutrition tracking) - reader (reading app) - uload (URL shortener) - wisekeep (AI wisdom extraction) Update CLAUDE.md documentation: - Add presi to active projects - Document archived projects section - Update workspace configuration Archived apps can be re-activated by moving back to apps/ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
433 lines
10 KiB
Markdown
433 lines
10 KiB
Markdown
# Blog-System Implementation Plan für uload
|
||
|
||
## Executive Summary
|
||
|
||
Basierend auf der Analyse empfehle ich die **PocketBase-Integration (Option 1)** als optimale Lösung. Dieser Plan zeigt die konkrete Umsetzung in 5 Entwicklungstagen.
|
||
|
||
## Projektziele
|
||
|
||
- ✅ Content Marketing Platform für SEO & Thought Leadership
|
||
- ✅ Nahtlose Integration in bestehendes uload-System
|
||
- ✅ Skalierbar für 100+ Artikel
|
||
- ✅ DSGVO-konform
|
||
- ✅ Mobile-optimiert
|
||
- ✅ Mehrsprachigkeit vorbereitet (Paraglide.js bereits integriert)
|
||
|
||
## Timeline & Milestones
|
||
|
||
### Tag 1: Database & Backend Setup
|
||
|
||
**Ziel**: Komplette Datenbank-Struktur und API-Endpoints
|
||
|
||
#### Vormittag (4h)
|
||
|
||
- [ ] PocketBase Collections erstellen
|
||
- [ ] Relationen definieren
|
||
- [ ] Validation Rules setzen
|
||
- [ ] Test-Daten einfügen
|
||
|
||
#### Nachmittag (4h)
|
||
|
||
- [ ] Server-Routes implementieren
|
||
- [ ] API-Endpoints testen
|
||
- [ ] Error Handling
|
||
- [ ] Pagination Logic
|
||
|
||
### Tag 2: Frontend Basis-Komponenten
|
||
|
||
**Ziel**: Blog-Übersicht und Artikel-Ansicht funktionsfähig
|
||
|
||
#### Vormittag (4h)
|
||
|
||
- [ ] Blog-Übersichtsseite
|
||
- [ ] BlogCard Komponente
|
||
- [ ] Kategorie-Filter
|
||
- [ ] Tag-Cloud
|
||
|
||
#### Nachmittag (4h)
|
||
|
||
- [ ] Artikel-Detailseite
|
||
- [ ] Reading Progress Bar
|
||
- [ ] Table of Contents
|
||
- [ ] Share Buttons
|
||
|
||
### Tag 3: Admin-Interface
|
||
|
||
**Ziel**: Vollständiges CMS für Blog-Verwaltung
|
||
|
||
#### Vormittag (4h)
|
||
|
||
- [ ] Admin-Dashboard
|
||
- [ ] Artikel-Liste mit Status
|
||
- [ ] Bulk-Actions
|
||
- [ ] Suchfunktion
|
||
|
||
#### Nachmittag (4h)
|
||
|
||
- [ ] Rich-Text Editor (Tiptap)
|
||
- [ ] Media Upload
|
||
- [ ] Preview-Funktion
|
||
- [ ] Auto-Save
|
||
|
||
### Tag 4: SEO & Performance
|
||
|
||
**Ziel**: Optimale Sichtbarkeit und Geschwindigkeit
|
||
|
||
#### Vormittag (4h)
|
||
|
||
- [ ] Meta-Tags Management
|
||
- [ ] Schema.org Markup
|
||
- [ ] XML Sitemap
|
||
- [ ] RSS/Atom Feed
|
||
|
||
#### Nachmittag (4h)
|
||
|
||
- [ ] Image Optimization
|
||
- [ ] Lazy Loading
|
||
- [ ] Cache-Strategy
|
||
- [ ] CDN-Integration
|
||
|
||
### Tag 5: Features & Polish
|
||
|
||
**Ziel**: Premium-Features und finale Optimierungen
|
||
|
||
#### Vormittag (4h)
|
||
|
||
- [ ] Verwandte Artikel
|
||
- [ ] Lesezeit-Berechnung
|
||
- [ ] Newsletter-Integration
|
||
- [ ] Social Media Auto-Post
|
||
|
||
#### Nachmittag (4h)
|
||
|
||
- [ ] Analytics Dashboard
|
||
- [ ] A/B Testing Setup
|
||
- [ ] Mobile Optimierung
|
||
- [ ] Launch-Vorbereitung
|
||
|
||
## Technische Spezifikationen
|
||
|
||
### Datenbank-Schema
|
||
|
||
```sql
|
||
-- blog_posts Collection
|
||
CREATE TABLE blog_posts (
|
||
id TEXT PRIMARY KEY,
|
||
slug TEXT UNIQUE NOT NULL,
|
||
title TEXT NOT NULL,
|
||
excerpt TEXT,
|
||
content TEXT NOT NULL,
|
||
featured_image TEXT,
|
||
author TEXT REFERENCES users(id),
|
||
status TEXT DEFAULT 'draft',
|
||
published_at DATETIME,
|
||
views_count INTEGER DEFAULT 0,
|
||
reading_time INTEGER,
|
||
meta_title TEXT,
|
||
meta_description TEXT,
|
||
og_image TEXT,
|
||
created DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
updated DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
-- blog_categories Collection
|
||
CREATE TABLE blog_categories (
|
||
id TEXT PRIMARY KEY,
|
||
name TEXT NOT NULL,
|
||
slug TEXT UNIQUE NOT NULL,
|
||
description TEXT,
|
||
color TEXT DEFAULT '#3B82F6',
|
||
posts_count INTEGER DEFAULT 0
|
||
);
|
||
|
||
-- blog_tags Collection
|
||
CREATE TABLE blog_tags (
|
||
id TEXT PRIMARY KEY,
|
||
name TEXT NOT NULL,
|
||
slug TEXT UNIQUE NOT NULL,
|
||
usage_count INTEGER DEFAULT 0
|
||
);
|
||
|
||
-- blog_post_tags Junction Table
|
||
CREATE TABLE blog_post_tags (
|
||
id TEXT PRIMARY KEY,
|
||
post_id TEXT REFERENCES blog_posts(id) ON DELETE CASCADE,
|
||
tag_id TEXT REFERENCES blog_tags(id) ON DELETE CASCADE,
|
||
UNIQUE(post_id, tag_id)
|
||
);
|
||
```
|
||
|
||
### API Endpoints
|
||
|
||
```typescript
|
||
// Blog API Routes
|
||
GET / api / blog / posts; // Liste mit Pagination
|
||
GET / api / blog / posts / [slug]; // Einzelner Artikel
|
||
POST / api / blog / posts / [slug] / view; // View Counter
|
||
GET / api / blog / categories; // Alle Kategorien
|
||
GET / api / blog / tags; // Alle Tags
|
||
GET / api / blog / search; // Volltextsuche
|
||
GET / api / blog / feed.xml; // RSS Feed
|
||
GET / api / blog / sitemap.xml; // Sitemap
|
||
|
||
// Admin API Routes (auth required)
|
||
POST / api / admin / blog / posts; // Neuer Artikel
|
||
PUT / api / admin / blog / posts / [id]; // Update
|
||
DELETE / api / admin / blog / posts / [id]; // Löschen
|
||
POST / api / admin / blog / posts / [id] / publish; // Veröffentlichen
|
||
POST / api / admin / blog / upload; // Bild-Upload
|
||
```
|
||
|
||
### Komponenten-Architektur
|
||
|
||
```
|
||
src/lib/components/blog/
|
||
├── BlogCard.svelte # Artikel-Karte für Listen
|
||
├── BlogPost.svelte # Vollständiger Artikel
|
||
├── BlogSidebar.svelte # Sidebar mit Kategorien/Tags
|
||
├── BlogSearch.svelte # Suchfunktion
|
||
├── BlogPagination.svelte # Pagination
|
||
├── ReadingProgress.svelte # Lesefortschritt
|
||
├── TableOfContents.svelte # Inhaltsverzeichnis
|
||
├── ShareButtons.svelte # Social Sharing
|
||
├── RelatedPosts.svelte # Ähnliche Artikel
|
||
├── Newsletter.svelte # Newsletter-Signup
|
||
├── CommentSection.svelte # Kommentare (Phase 2)
|
||
└── admin/
|
||
├── PostEditor.svelte # Rich-Text Editor
|
||
├── MediaLibrary.svelte # Medien-Verwaltung
|
||
├── SEOPanel.svelte # SEO-Einstellungen
|
||
└── PublishPanel.svelte # Veröffentlichung
|
||
```
|
||
|
||
## Content-Strategie
|
||
|
||
### Launch-Content (5 Artikel)
|
||
|
||
1. **"Die Psychologie kurzer URLs"** (bereits geschrieben)
|
||
- Kategorie: Marketing Psychology
|
||
- Ziel: Thought Leadership
|
||
|
||
2. **"URL-Shortener Setup in 5 Minuten"**
|
||
- Kategorie: Tutorials
|
||
- Ziel: Onboarding
|
||
|
||
3. **"DSGVO-konforme Link-Verwaltung"**
|
||
- Kategorie: Compliance
|
||
- Ziel: Trust Building
|
||
|
||
4. **"10 Link-Tracking Metriken die zählen"**
|
||
- Kategorie: Analytics
|
||
- Ziel: Education
|
||
|
||
5. **"QR-Codes: Der ultimative Guide 2024"**
|
||
- Kategorie: Features
|
||
- Ziel: Feature Awareness
|
||
|
||
### Content-Kalender (erste 3 Monate)
|
||
|
||
**Monat 1**: Foundations (4 Artikel/Monat)
|
||
|
||
- Woche 1: Psychology & UX
|
||
- Woche 2: Technical Tutorial
|
||
- Woche 3: Case Study
|
||
- Woche 4: Industry Trends
|
||
|
||
**Monat 2**: Deep Dives (6 Artikel/Monat)
|
||
|
||
- Analytics Deep Dives
|
||
- Integration Guides
|
||
- Performance Optimization
|
||
- Security Best Practices
|
||
|
||
**Monat 3**: Growth (8 Artikel/Monat)
|
||
|
||
- Guest Posts
|
||
- User Success Stories
|
||
- Feature Announcements
|
||
- Comparison Articles
|
||
|
||
## SEO-Strategie
|
||
|
||
### Target Keywords
|
||
|
||
**Primary Keywords** (Schwierigkeit: Mittel)
|
||
|
||
- "url kürzen" (9.900 Suchen/Monat)
|
||
- "link verkürzen" (6.600 Suchen/Monat)
|
||
- "kurze urls" (2.400 Suchen/Monat)
|
||
|
||
**Long-Tail Keywords** (Schwierigkeit: Leicht)
|
||
|
||
- "kostenlos url kürzen ohne anmeldung"
|
||
- "eigene domain für kurze links"
|
||
- "qr code mit logo erstellen"
|
||
- "link tracking dsgvo konform"
|
||
|
||
### Technical SEO Checklist
|
||
|
||
- [ ] Strukturierte Daten (Schema.org)
|
||
- [ ] XML Sitemap
|
||
- [ ] Robots.txt Update
|
||
- [ ] Canonical URLs
|
||
- [ ] Open Graph Tags
|
||
- [ ] Twitter Cards
|
||
- [ ] Alt-Texte für Bilder
|
||
- [ ] Lazy Loading
|
||
- [ ] WebP Bilder
|
||
- [ ] Breadcrumbs
|
||
|
||
## Performance KPIs
|
||
|
||
### Technical Metrics
|
||
|
||
- **Page Load**: < 2s (Mobile 3G)
|
||
- **Time to Interactive**: < 3.5s
|
||
- **Core Web Vitals**: Alle grün
|
||
- **Lighthouse Score**: > 90
|
||
|
||
### Business Metrics
|
||
|
||
- **Organic Traffic**: +50% in 3 Monaten
|
||
- **Conversion Rate**: Blog → Sign-up > 3%
|
||
- **Engagement Rate**: > 2 Min Average Time
|
||
- **Bounce Rate**: < 60%
|
||
|
||
## Risk Management
|
||
|
||
### Potenzielle Risiken & Mitigationen
|
||
|
||
| Risiko | Wahrscheinlichkeit | Impact | Mitigation |
|
||
| -------------------- | ------------------ | ------- | ----------------------------------- |
|
||
| Editor-Komplexität | Mittel | Hoch | Start mit SimpleMDE, später Upgrade |
|
||
| Performance-Probleme | Niedrig | Mittel | Caching-Strategy von Anfang an |
|
||
| Content-Erstellung | Hoch | Mittel | Freelancer-Pool aufbauen |
|
||
| SEO-Konkurrenz | Mittel | Niedrig | Nischen-Keywords fokussieren |
|
||
|
||
## Budget & Ressourcen
|
||
|
||
### Entwicklung (5 Tage)
|
||
|
||
- **Developer**: 5 Tage × 8h = 40h
|
||
- **Design Assets**: Vorhandene UI-Komponenten nutzen
|
||
- **Testing**: 1 Tag zusätzlich
|
||
|
||
### Content (Ongoing)
|
||
|
||
- **Launch Content**: 5 Artikel (intern)
|
||
- **Monthly Content**: 4-8 Artikel
|
||
- **Freelancer Budget**: €500-1000/Monat
|
||
|
||
### Tools & Services
|
||
|
||
- **Grammarly**: Rechtschreibprüfung
|
||
- **Canva Pro**: Grafiken
|
||
- **Unsplash+**: Stock-Fotos
|
||
- **Monitoring**: Bereits vorhanden
|
||
|
||
## Quality Assurance
|
||
|
||
### Pre-Launch Checklist
|
||
|
||
#### Funktionalität
|
||
|
||
- [ ] Alle CRUD-Operationen funktionieren
|
||
- [ ] Pagination arbeitet korrekt
|
||
- [ ] Suche liefert relevante Ergebnisse
|
||
- [ ] Filter funktionieren
|
||
- [ ] RSS Feed validiert
|
||
|
||
#### Performance
|
||
|
||
- [ ] Lighthouse Audit > 90
|
||
- [ ] Mobile-Responsive
|
||
- [ ] Bilder optimiert
|
||
- [ ] Caching aktiviert
|
||
|
||
#### SEO
|
||
|
||
- [ ] Meta-Tags vollständig
|
||
- [ ] Sitemap generiert
|
||
- [ ] Schema.org implementiert
|
||
- [ ] Social Cards funktionieren
|
||
|
||
#### Security
|
||
|
||
- [ ] Input-Validation
|
||
- [ ] XSS-Protection
|
||
- [ ] CSRF-Token
|
||
- [ ] Rate Limiting
|
||
|
||
#### Accessibility
|
||
|
||
- [ ] WCAG 2.1 AA konform
|
||
- [ ] Keyboard-Navigation
|
||
- [ ] Screen-Reader kompatibel
|
||
- [ ] Kontrast-Verhältnisse
|
||
|
||
## Post-Launch Plan
|
||
|
||
### Woche 1
|
||
|
||
- Monitoring Setup
|
||
- Bug Fixes
|
||
- Performance Tuning
|
||
- Erste Analytics
|
||
|
||
### Monat 1
|
||
|
||
- Content-Pipeline etablieren
|
||
- SEO-Optimierungen
|
||
- User-Feedback sammeln
|
||
- A/B Tests starten
|
||
|
||
### Quartal 1
|
||
|
||
- Feature-Erweiterungen
|
||
- Newsletter-Integration
|
||
- Kommentar-System
|
||
- Multi-Language Support
|
||
|
||
## Success Metrics
|
||
|
||
### Launch (Tag 1)
|
||
|
||
- ✅ Blog live und funktional
|
||
- ✅ 5 Launch-Artikel online
|
||
- ✅ Keine kritischen Bugs
|
||
|
||
### Monat 1
|
||
|
||
- ✅ 20+ Blog-Artikel
|
||
- ✅ 1000+ Unique Visitors
|
||
- ✅ 5+ Backlinks
|
||
|
||
### Quartal 1
|
||
|
||
- ✅ 50+ Blog-Artikel
|
||
- ✅ 10.000+ Monthly Visitors
|
||
- ✅ Top 10 Rankings für Target Keywords
|
||
- ✅ 100+ Newsletter-Subscriber
|
||
|
||
## Entscheidung & Next Steps
|
||
|
||
### Sofort-Maßnahmen
|
||
|
||
1. **Heute**: Entscheidung für Implementierung
|
||
2. **Morgen**: Development-Start mit Database Setup
|
||
3. **Diese Woche**: MVP fertigstellen
|
||
4. **Nächste Woche**: Content-Erstellung beginnen
|
||
5. **In 2 Wochen**: Blog-Launch
|
||
|
||
### Team-Alignment
|
||
|
||
- **Product Owner**: Feature-Priorisierung
|
||
- **Developer**: Technische Implementierung
|
||
- **Marketing**: Content-Strategie
|
||
- **Design**: UI/UX Review
|
||
|
||
---
|
||
|
||
**Empfehlung**: Sofortiger Start mit der PocketBase-Integration. Der vorgeschlagene 5-Tage-Plan ist realistisch und liefert ein production-ready Blog-System, das perfekt in die bestehende uload-Architektur passt.
|
||
|
||
**Kontakt für Rückfragen**: Bei Fragen zur Implementierung oder für Detail-Diskussionen stehe ich zur Verfügung.
|