# Kita-Planer Deployment

Dieses Verzeichnis enthaelt die ausfuellbaren Vorlagen fuer das Production-Deployment.

## Dateien

- `production.env.example`: Vorlage fuer alle benoetigten Environment Variables.
- `production-checklist.md`: Checkliste fuer Domain, Datenbank, Auth, Mail, Uploads und Rechtliches.
- `../Dockerfile`: Container-Build fuer Coolify oder andere Docker-Hosts.
- `../docker-compose.coolify.yml`: Compose-Vorlage fuer Coolify mit required Environment Variables.

## Empfohlener Ablauf mit Coolify und Gitea

1. Repository in deine Gitea-Instanz pushen.
2. In Coolify eine neue Application aus diesem Gitea-Repository anlegen.
3. Als Build Pack `Docker Compose` waehlen.
4. Als Compose-Datei `docker-compose.coolify.yml` eintragen.
5. Die bestehende Coolify-Postgres-Datenbank ueber ihre interne `DATABASE_URL` verbinden.
6. Environment Variables aus `production.env.example` in Coolify eintragen.
7. Domain auf den `app`-Service mit internem Port `3000` zeigen lassen.
8. Deploy starten.

Beim Container-Start fuehrt `scripts/start-production.sh` automatisch aus:

```bash
npx prisma db push
```

Coolify erkennt Variablen aus `docker-compose.coolify.yml` und zeigt required Variablen
wie `DATABASE_URL`, `AUTH_SECRET`, `AUTH_URL`, `NEXTAUTH_URL`, `NEXT_PUBLIC_SITE_URL`,
`RESEND_API_KEY`, `EMAIL_FROM` und `ADMIN_EMAIL` in der UI an.

## Welche Coolify-Postgres-URL?

Wenn die App und die Postgres-DB im selben Coolify-Projekt/Netzwerk laufen, nimm
die interne Datenbank-URL aus Coolify, nicht die oeffentliche externe URL. Das ist
stabiler und vermeidet unnoetigen Traffic ueber den Host.

Das Format bleibt:

```txt
postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public
```

## Wichtige Hinweise

- Das aktuelle Projekt nutzt noch `prisma db push` statt versionierter Prisma-Migrationen.
  Fuer den ersten MVP-Deploy ist das praktikabel, fuer laengerfristigen Betrieb sollten
  Migrationen eingefuehrt werden.
- `UPLOAD_DIR` muss persistent sein. Die Coolify-Compose-Datei mountet dafuer ein
  Docker-Volume nach `/app/uploads`.
- `NEXT_PUBLIC_SITE_URL` muss die echte Domain enthalten, damit OpenGraph-Bilder in
  WhatsApp, LinkedIn und Co. korrekt als absolute URL aufgeloest werden.
- `NEXT_PUBLIC_SITE_URL` wird auch als Build-Arg an Docker uebergeben. In Coolify sollte
  diese Variable deshalb fuer Build und Runtime verfuegbar sein.
