# RoggioApp - Tech-Stack Empfehlung (Hetzner, Schmal, API-First) ## Prämissen 1. **Hetzner-Ökosystem:** Performant, günstig, viel Bandbreite. Eigene VMs via Hetzner Cloud (Console) sind in Sekunden da. 2. **So schmal wie möglich (Lean):** Keine Over-Engineering-Monster (wie Kubernetes), wenn Docker Compose reicht. Wenig Wartungsaufwand für das Kollektiv. 3. **Zukunftssicher & Flexibel:** API-First, Graph-Datenmodell (ECS-Ansatz), Integration mit Nextcloud (WebDAV/OIDC) & WordPress. ## Der empfohlene Tech-Stack ### 1. Infrastruktur & Hosting (Die Basis) * **Server:** Hetzner Cloud (z.B. CX22 oder CPX21). Reicht völlig für den Anfang, skaliert in Sekunden. * **Orchestrierung:** **Docker Compose**. Kein K8s, kein Swarm. Eine einfache `docker-compose.yml`, die alle Core-Services hochzieht. Das ist extrem wartungsarm und portabel. * **Reverse Proxy:** **Nginx Proxy Manager** (oder Caddy). Extrem schmal, kümmert sich automatisch um Let's Encrypt SSL-Zertifikate und leitet Traffic auf die Docker-Container (wie wir es lokal schon erfolgreich getestet haben!). ### 2. Die Datenhaltung (Das Herzstück) * **Datenbank:** **PostgreSQL**. * *Warum:* Absoluter Industrie-Standard, bombensicher für Finanz-Transaktionen und durch die exzellente `JSONB`-Unterstützung perfekt für unser flexibles "Traits/Eigenschaften"-Modell. * **Caching / Message Broker (Optional, erst später zuschalten):** **Redis**. * *Warum:* Wenn später WordPress alle 2 Sekunden den Kalender anfragt, puffert Redis das, damit Postgres nicht schwitzt. Für den Start (MVP) können wir das aber noch weglassen ("so schmal wie möglich"). ### 3. Das Backend (Die API) * **Sprache:** **Node.js mit TypeScript**. * *Warum:* Enorme Community, sehr schnell entwickelt, und (das ist der Hauptgrund) wir können Code und Typen zwischen Frontend und Backend teilen! * **ORM (Datenbank-Mapper):** **Prisma**. * *Warum:* Es gibt nichts Besseres für TypeScript und Postgres. Es generiert uns typsichere Abfragen, verwaltet die Datenbank-Migrationen und macht das Jonglieren mit unserem Graph/Node-Modell deutlich angenehmer als rohes SQL. * **Framework:** **NestJS** (oder leichtgewichtig: **Hono / Express**). * *Empfehlung für euch:* Wenn es sauber und "Enterprise-like" strukturiert sein soll: *NestJS*. Wenn es absolut schmal und pfeilschnell (Edge-ready) sein soll: *Hono*. ### 4. Die Frontends (Das Gesicht) * **Core-App (Kollektiv & Gäste Web-Portal):** **React** (gebaut mit **Vite** oder **Next.js**). * *Warum:* Absoluter Standard. Riesiges Ökosystem an Kalender- und UI-Bibliotheken (z.B. Tailwind CSS, shadcn/ui). * *Architektur:* Eine Single-Page-Application (SPA) oder statisch exportierte Seite, die direkt mit dem Node-Backend redet. * **Marketing (bestehend):** WordPress (bei Hetzner Webhosting). * *Warum:* Ihr habt es schon, jeder kann Inhalte einpflegen. Zieht die Buchungsdaten über eine simple REST-Schnittstelle von unserem Node-Backend. * **Dateien / Auth (bestehend):** Nextcloud (bei Hetzner Storage Share). * *Integration:* Das Node-Backend authentifiziert sich per OAuth2/OIDC an Nextcloud und speichert Rechnungen per WebDAV dort ab. ## Zusammenfassung des MVP-Setups (Schmalster Weg) 1. **Eine Hetzner Cloud VM** 2. Darauf läuft **Docker Compose** 3. Darin laufen genau 3 Container: - **Nginx Proxy Manager** (für SSL und Domains) - **PostgreSQL** (Die Datenbank) - **Node.js (Hono/Prisma)** (Das Backend + liefert das kompilierte React-Frontend aus)