# Technisches Architekturkonzept

## Leitplanken

* Frontend: React + TypeScript, statisch gebaut.
* Server: Minimaler Node/Express-Server im selben Docker-Image.
  * Liefert statische Assets aus.
  * Stellt genau eine API für Kontaktformular bereit.
* Deployment: Docker auf Hetzner.

## Komponenten

### Frontend

* Build: Vite
* Routing: react-router (Client-Side)
* UI: eigene Komponenten, kein UI-Framework (um Stil strikt zu halten)

Seiten:

* Startseite
* Über uns
* Kontakt
* Impressum
* Datenschutz
* AGB optional

### Backend

* Express-Server
* Eine API: Kontaktformular
* SMTP Versand via nodemailer
* Konfiguration via Environment-Variablen

## Runtime-Flow

```mermaid
flowchart TD
  U[Browser] -->|GET Seiten und Assets| S[Node Server]
  S -->|statische Dateien| U
  U -->|POST Kontakt| A[API Endpoint]
  A -->|SMTP| M[Mail Server]
  M -->|E-Mail| R[Empfaenger Inbox]
```

## Clean Architecture Perspektive

Auch wenn die App klein ist, bleiben die Grenzen klar:

* UI-Layer: React Komponenten und Form-Handling
* Application: Use-Case Kontaktformular senden (Validierung, Mapping)
* Infrastructure: SMTP Versand, Express Adapter

Ziel: Testbarkeit und minimale Kopplung, ohne Overengineering.

