# SaaS App

`saas-app/` ist das Zielprojekt fuer die mandantenfaehige Neuimplementierung
der Kaffeeliste als SaaS.

## Kurzueberblick

- Mandantenfaehigkeit ueber Host/Subdomain
- Rollen und Benutzerbindung pro Tenant
- Kernfunktionen fuer Dashboard, Mitglieder, Einzahlungen und Striche
- Inhalte, Hinweise, Importe, Exporte und Benachrichtigungen als eigene Module
- SSR-orientierter Betrieb fuer klassischen Webspace
- Cron-basierter Betrieb statt dauerhafter Worker

## Installation

Die komplette Installationsanleitung steht im Repo unter
`../docs/installationshandbuch.md`.

Kurzfassung:

1. Webserver auf `public/` ausrichten.
2. Im Browser `https://deine-domain.tld/install/` aufrufen.
3. `.env`, DB-Zugang und Tenancy-Werte ueber den Installer speichern.
4. SQL-Bundle erzeugen und wenn moeglich das Datenbankschema direkt ausfuehren.
5. Installer sperren.
6. Einen ersten Mandanten und erste Benutzer anlegen.
7. Cron-Jobs fuer Queue, Import, Export und Benachrichtigungen einrichten.

Alternative mit PHP-CLI:

1. `php ../scripts/check-prerequisites.php`
2. `php ../scripts/install-saas.php`
3. `php ../scripts/run-sql-migrations.php --connection=mysql --server=... --database=...`

## Migrationen

Aktuell gibt es in diesem Verzeichnis keine lauffaehige `artisan migrate`-Strecke.
Die Dateien unter `database/migrations/` liefern SQL und werden ueber folgende
Skripte verarbeitet:

- `..\scripts\build-migration-bundle.php`
- `..\scripts\run-sql-migrations.php`

Wenn `pdo_mysql` lokal oder auf dem Hosting nicht verfuegbar ist, muss das
erzeugte SQL-Bundle manuell gegen MySQL/MariaDB ausgefuehrt werden.

## Zentrale Verwaltung

Nach der Installation erfolgt die zentrale Administration ueber:

- `public/admin/login/`
- `public/admin/`
- `public/admin/tenants/`
- `public/admin/updates/`

## Lizenzen und Mandantenbetrieb

Mandanten koennen jetzt direkt mit einem Lizenzplan angelegt werden. Der
Lizenzplan steuert, welche Bereiche im Tenant sichtbar und nutzbar sind.

- `Starter`: Basisfunktionen fuer Mitglieder, Ledger, Einzahlungen und Inhalte
- `Team`: zusaetzlich Mandanten-Einstellungen, PDF-Listen, Papierlisten-Erfassung und Basis-Exporte
- `Business`: vorbereitet fuer SSO, Importe, Exporte, Benachrichtigungen und Auswertungen
- `Enterprise`: erweitert um White-Labeling, Sonderfunktionen und priorisierte Updates

Der Global-Admin kann jeden Mandanten oeffnen und ihn mit erweiterten Rechten
aus Sicht des jeweiligen Tenant-Admins pruefen.

## Update-Prozess

Nachtraegliche Schema- und Datenupdates laufen versioniert ueber:

- `public/admin/updates/` im Browser
- `php ../scripts/run-updates.php` per CLI

Die Update-Dateien liegen in `updates/` und werden in `app_updates`
protokolliert.

## Hosting-Hinweise

- Das Projekt ist fuer Webspace geeignet, solange PHP, DB-Zugang und Cron
  vorhanden sind.
- Dauerhafte Queue-Worker sind nicht vorausgesetzt.
- Der zentrale Einstieg erfolgt ueber die mandantenfaehige Weboberflaeche.
- OIDC ist als bevorzugter SSO-Pfad vorgesehen, klassische Logins bleiben als
  Fallback moeglich.

## Aktueller Stand

Das Verzeichnis ist als Zielarchitektur fuer den Neuaufbau vorbereitet und
dient als konsistenter Zielzustand fuer die SaaS-Umstellung.
