refactor: restructure

monorepo with apps/ and services/
  directories
This commit is contained in:
Wuesteon 2025-11-26 03:03:24 +01:00
parent 25824ed0ac
commit ff80aeec1f
4062 changed files with 2592 additions and 1278 deletions

View file

@ -1,397 +0,0 @@
# 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.