Files
kaffeekasse-saas/README.md
T
2026-06-17 16:45:14 +02:00

81 lines
3.4 KiB
Markdown

# 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)