# Kaffeekasse SaaS Neustart Frischer Neustart fuer eine mandantenfaehige Kaffeeliste mit: - klassischer Papierliste inklusive Nacherfassung - digitaler Selbstbuchung fuer Browser, Tablet oder Kiosk - vorbereitetem RFID-Pfad ueber Device-, Tag- und Event-Modelle - Netcup-tauglichem PHP/MySQL-Betrieb ohne Root-Zwang - produktionsnaher Vermarktungs- und Betriebsdokumentation ## Projektziel Dieses Repository bildet eine pragmatische SaaS-Basis fuer mehrere Kunden oder Mandanten. Jeder Tenant arbeitet unter `t/{slug}` in einer getrennten Organisation, waehrend Produktlogik, Betrieb und Vermarktung zentral bleiben. ## Kernentscheidungen - `PHP 8.x + MySQL` ohne schwere Runtime-Voraussetzungen - `public/` als einziger Webroot - `tenant_id` auf allen tenantbezogenen Fachtabellen - ein gemeinsames Ledger fuer `digital`, `paper` und spaeter `rfid` - Webspace-freundliche Cron- und CLI-Hooks statt Daemons ## Hauptfunktionen - Plattform-Installation per Browser - Self-Service-Registrierung fuer neue Mandanten - Plattform-Admin mit Tenant-Uebersicht - Tenant-Login mit Rollen `owner`, `admin`, `member` - Mitglieder, Produkte und Preisgrundlagen - digitale Buchungen und Einzahlungen - Papierlisten als Entwurf, Zeilen und Ledger-Posting - RFID-Geraete, Karten und Event-Inbox ## Schnellstart lokal 1. `.env.example` nach `.env` kopieren oder den Installer unter `/install` nutzen. 2. `database/schema.sql` per `bin/migrate.php` gegen MySQL ausfuehren. 3. Webroot auf `public/` zeigen lassen. 4. Plattform-Admin anlegen und anschliessend Mandanten registrieren. ## Testumgebung im code-server Fuer die SQLite-basierte Testumgebung kann der eingebaute PHP-Server genutzt werden: ```bash php -S 0.0.0.0:8080 public/router_test.php ``` Der Test-Router unterstuetzt code-server-Proxy-Pfade wie `/proxy/8080` und `/absproxy/8080`. Links, Form-Actions und Assets werden ueber zentrale Helper erzeugt, damit CSS und JavaScript auch hinter einem Pfad-Prefix geladen werden. Wenn ein Proxy den Prefix nicht als Header durchreicht, bleiben die erzeugten URLs relativ und funktionieren weiterhin innerhalb des aktuellen Proxy-Pfads. Optional kann ein fester Pfad-Prefix gesetzt werden, z.B. in `.env.test`: ```dotenv APP_BASE_PATH=/proxy/8080 ``` Ein einheitlicher Hosteintrag ist dafuer nicht noetig. Zeitgemaesser ist eine Basis-Pfad-/Forwarded-Prefix-Unterstuetzung, weil Entwicklungsumgebungen wie code-server Anwendungen haeufig unter einem Unterpfad statt unter einem eigenen Host ausliefern. ## Wichtige Dateien - [public/index.php](/config/workspace/kaffeeliste-neustart/public/index.php) - [database/schema.sql](/config/workspace/kaffeeliste-neustart/database/schema.sql) - [DEPLOY.md](/config/workspace/kaffeeliste-neustart/DEPLOY.md) - [RUNBOOK.md](/config/workspace/kaffeeliste-neustart/RUNBOOK.md) - [docs/go-live-checklist-netcup.md](/config/workspace/kaffeeliste-neustart/docs/go-live-checklist-netcup.md) - [docs/go-to-market-30-60-90.md](/config/workspace/kaffeeliste-neustart/docs/go-to-market-30-60-90.md) - [docs/next-steps-roadmap.md](/config/workspace/kaffeeliste-neustart/docs/next-steps-roadmap.md) - [docs/product-strategy.md](/config/workspace/kaffeeliste-neustart/docs/product-strategy.md) - [docs/marketing-ops.md](/config/workspace/kaffeeliste-neustart/docs/marketing-ops.md) - [docs/production-blueprint.md](/config/workspace/kaffeeliste-neustart/docs/production-blueprint.md) - [docs/rfid-roadmap.md](/config/workspace/kaffeeliste-neustart/docs/rfid-roadmap.md)