Jede technische Entscheidung wird an diesen Kriterien gemessen:
- Minimale Wartung — Weniger bewegliche Teile = weniger Fehler
- Geringe Kosten — Serverless und kostenlose Tiers wo moeglich
- Geringe Komplexitaet — Einfachste Loesung die funktioniert
| Feature | Beschreibung | Status |
|---|
| Statische Webseiten | Astro SSG, deployed auf Cloudflare Pages (kostenlos) | Entschieden |
| CMS | Selbst gebaut, zentral auf Hetzner, Cloudflare Tunnel | Entschieden |
| Domain-Management | Alle Domains zentral in Cloudflare | Entschieden |
| SSL | Automatisch ueber Cloudflare | Entschieden |
| CDN | Cloudflare CDN fuer Assets | Entschieden |
| Datenbank | PostgreSQL self-hosted auf Hetzner VPS (JSONB fuer flexible Inhalte, WAL-G fuer PITR) | Entschieden |
| Medien-Speicher | Cloudflare R2 (EU) primary + AWS S3-IA Frankfurt (Disaster Recovery), CMS Dual-Write | Entschieden |
| E-Mail-Versand | AWS SES (Frankfurt) — $0.10/1000 Mails, unbegrenzte Domains, DSGVO (EU) | Entschieden |
| Feature | Beschreibung |
|---|
| Platzhalter-System | Texte, Bilder, Dateien in vordefinierten Slots aendern |
| News/Blog | CRUD, chronologisch, optional pro Template |
| Impressum/Datenschutz | Generator/Assistent im CMS |
| Oeffnungszeiten | Editierbar |
| SEO-Basics | Meta-Title, Meta-Description pro Seite |
| Medien-Bibliothek | Zentral + pro Seite, Quotas (ab 10GB), Bildoptimierung via Astro |
| Mitarbeiterzugaenge | Mehrere Logins pro Kunde |
| Audit-Log + PITR | Wer hat wann was geaendert, Rollback moeglich |
| Versionierung | Aenderungshistorie mit Rollback |
| Mobile-first | CMS muss auf dem Handy benutzbar sein |
| Mehrere Websites pro Kunde | z.B. Filialen |
| Feature | Beschreibung |
|---|
| Listings CRUD | Eintraege im CMS verwalten (Titel, Beschreibung, Bild, Kategorie, beliebige Felder) |
| Statische Seiten | Astro generiert Uebersichts- und Detail-Seiten zur Buildzeit |
| Client-Filter | ItemsJS fuer Facetten-Filter, Sortierung und Pagination im Browser |
| Statische JSON | Pro Listing-Typ eine JSON-Datei (~20-50kB), geladen bei Seitenaufruf |
| Kontakt pro Eintrag | Verweis auf Kontaktformular |
| Feature | Beschreibung |
|---|
| Kontaktformular | Custom-Felder, Cloudflare Turnstile, Double-Opt-in |
| Nachrichten | Im CMS einsehbar + E-Mail an Kunden |
| Externe Embeds | YouTube/Instagram mit Opt-in-Wall (Cookie-basiert) |
| Self-hosted Fonts | Keine externen Requests |
| WhatsApp/Telefon-Button | Konfigurierbar im CMS |
| Mehrsprachigkeit | Phase 2 — statische Seiten funktionieren perfekt mit Browser-Uebersetzung |
| Feature | Beschreibung |
|---|
| Multi-Site-Dashboard | Uebersicht aller Kundenprojekte |
| Build-Status/Logs | Cloudflare API Anbindung |
| Benachrichtigungen | Deploy-Status, Kontaktanfragen per E-Mail |
| Stripe-Integration | Automatische Rechnungsstellung |
| Ticket-System | E-Mail-basiert |
| Monitoring | Basis-Ueberwachung aller Kundenseiten |
| Feature | Beschreibung | Status |
|---|
| Draft-Funktion | Blog/News-Beitraege als Entwurf speichern, Build wird erst bei “Veroeffentlichen” getriggert | Entschieden — MVP |
| Preview-Build | Vollstaendiger Build mit Draft-Daten auf separater URL | Spaeter — kein MVP-Feature |
| Feature | Beschreibung | Status |
|---|
| Eigenes Analytics | Tracking Script → AWS API Gateway → SQS → CMS → PostgreSQL | Entschieden |
| DSGVO-konform | Keine Cookies, keine personenbezogenen Daten, kein Consent | Entschieden |
| Entkoppelt | Tracking-Uptime unabhaengig von CMS-Uptime (SQS puffert Events) | Entschieden |
| Dashboard | Seitenaufrufe, Top-Seiten, Geraete, Browser, Land — einfache SQL-Queries | Entschieden |
| Feature | Beschreibung |
|---|
| Listings via Pages Function | Server-seitige Suche ueber R2 JSON, Ergebnisse verlinken auf statische Detail-Seiten |
| File-Sharing | Separates Feature, Details offen |
| Terminbuchung | Eigene Loesung oder Integration (Cal.com?) |
| Newsletter | Eigener Versand oder Integration |
| White-Label | CMS unter Kundenmarke |
| API-Gateway | AWS API Gateway + SQS fuer externe Integrationen |