Tech-Entscheidungen

Stack und Architektur der Heimatdesign-Plattform. Headless, Open Source, geringer laufender Tooling-Aufwand, kein Vendor-Lock-in. Quelle für die Umsetzung: docs/decisions.md im Repo.

Stack
Layer Wahl Begründung
Frontend Next.js + Tailwind 4 + shadcn/ui Höchste UI-Velocity bei produktionsreifer Qualität, breite Community, austauschbar
CMS Payload (Default), Directus als Alternative Open Source, Node-basiert, gutes Admin-UI für Marc, kein SaaS-Sockel
Datenbank PostgreSQL Skaliert besser als MySQL bei komplexen Queries; Free Tier (Supabase/Neon) für Phase 1, danach eigener Server
Auth Payload-internes Auth Kein zusätzlicher Provider, keine zusätzlichen Subscriptions
Search Phase 1 Postgres-Volltext Reicht bis ~500 Profile, keine Zusatzkomponente
Search Phase 2+ Meilisearch (selfhosted) Open Source, schnell, ab ~500 Profilen sinnvoll
Mail Resend oder Postmark Free Tier + nutzungsbasierte Abrechnung, kein monatlicher Sockel
Payments Stripe + Wero + SEPA-Lastschrift Industriestandard, Wero günstiger für institutionelle Zahler, SEPA für Hochschulen/Hersteller
CDN Cloudflare (Free) Bandwidth, DDoS, Performance ohne Zusatzkosten
Hosting
Komponente Provider Kosten Phase 1
Frontend (Next.js) Vercel (Free Tier) 0 €
Backend (CMS, DB) Hetzner VPS — Default. Ionos, falls bestehende Verträge. ~5 €/Monat
Domain heimatdesign.nrw (Marc) ~15 €/Jahr
Gesamt Tooling ~75 €/Jahr
Prinzipien
Prinzip Konsequenz
Open Source, wo möglich Keine SaaS-Sockel im Stack; Payload, PostgreSQL, Meilisearch statt Sanity, Algolia
Headless Frontend und Backend unabhängig austauschbar; Migration Vercel → eigener Server in 1–2 Tagen möglich
Nutzungsbasiert vor Pauschal Mail, Payments, CDN nur bei tatsächlicher Nutzung — keine Abos auf Vorrat
EU-Hosting Vercel EU-Region, Hetzner/Ionos in Deutschland; DSGVO-konform durchgängig
SEO-first Server-Side Rendering, Schema.org-Markup, sprechende URLs ab Phase 1
Sub-Entscheidungen noch offen
Thema Entscheiden bis
CMS-Detailauswahl: Payload vs. Directus (Spike + Admin-UI-Bewertung) vor Build-Start
Backend-Provider: Hetzner Default oder Ionos (falls bestehende Verträge) vor Build-Start
Mail-Provider: Resend vs. Postmark vor Stripe-Integration
Cloud-Storage für Bild-Uploads bei >500 Profilen (Cloudflare R2 oder S3-kompatibel) Phase 2

Aktualisierungen dieser Entscheidungen werden in docs/decisions.md im Repo dokumentiert und hier gespiegelt.