Ueberblick
Ueberblick
Abschnitt betitelt „Ueberblick“System-Diagramm
Abschnitt betitelt „System-Diagramm“┌─────────────────────────────────────────────────────────┐│ Cloudflare ││ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ ││ │ Pages │ │ CDN │ │ DNS │ │ SSL │ ││ │ (Static) │ │ (Assets) │ │ │ │ (auto) │ ││ └─────┬─────┘ └──────────┘ └──────────┘ └────────┘ ││ │ ││ ┌─────┴──────────────────────────────────────────────┐ ││ │ Cloudflare Tunnel │ ││ └─────┬──────────────────────────────────────────────┘ │└────────┼────────────────────────────────────────────────┘ │┌────────┼────────────────────────────────────────────────┐│ Hetzner VPS ││ ┌─────┴──────────────────────┐ ┌───────────────┐ ││ │ CMS │ │ PostgreSQL │ ││ │ ┌───────────┐ ┌────────┐ │ │ │ ││ │ │ Backend │ │Frontend│ │ │ Multi-Tenant │ ││ │ │ (Go) │ │(React) │ │ │ (Tenant-ID) │ ││ │ └───────────┘ └────────┘ │ │ WAL-G PITR │ ││ └────────────────────────────┘ └───────────────┘ │└─────────────────────────────────────────────────────────┘Entschiedene Architektur
Abschnitt betitelt „Entschiedene Architektur“| Komponente | Entscheidung | Begruendung |
|---|---|---|
| CMS Backend | Go + Chi (Router) + Jet (Code-Gen) | Schnelle Builds, kleine Binary, vorhandene Go-Expertise |
| CMS Frontend | React 19 + TanStack Start + Mantine 8 | Bewaehrter Stack, Mobile-first |
| Datenbank | PostgreSQL self-hosted auf Hetzner | $0 Kosten, keine Latenz, Audit-Trigger |
| Migrationen | golang-migrate | Standard in Go-Projekten |
| Multi-Tenancy | Eine DB, Tenant-Spalte | Pragmatischste Loesung |
| Auth | Eigene Session-Auth (Cookie), 2FA per Email (SES) | Einfach, kein TOTP-Setup noetig |
| Backup/PITR | WAL-G | Bewaehrtes Konzept |
| Kunden-Websites | Astro SSG → Cloudflare Pages | Performance, Sicherheit, kostenlos |
| Hosting CMS | Hetzner VPS + Cloudflare Tunnel | Kein offener Port |
| AWS SES Frankfurt | 2FA-Codes, Password-Reset, Kontakt-Notifications | |
| IDs | UUIDv7 | Zeitbasiert, sortierbar, bessere Index-Performance |
| Uebersetzung | DeepL API | Automatisch, Ergebnisse in DB gespeichert, spaeter editierbar |
Repository-Struktur
Abschnitt betitelt „Repository-Struktur“traffino/business/ # CMS + Docs├── docs/ # Projektdokumentation (Astro Starlight)├── cms/│ ├── backend/ # Go (Chi, Jet, PostgreSQL)│ ├── frontend/ # React 19, TanStack Start, Mantine 8│ └── aws/ # Go Lambda Functions (Contact-Form, Analytics)
traffino/sites/ # Kunden-Websites (separates Repo)