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 + MySQLohne schwere Runtime-Voraussetzungenpublic/als einziger Webroottenant_idauf allen tenantbezogenen Fachtabellen- ein gemeinsames Ledger fuer
digital,paperund spaeterrfid - 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
.env.examplenach.envkopieren oder den Installer unter/installnutzen.database/schema.sqlperbin/migrate.phpgegen MySQL ausfuehren.- Webroot auf
public/zeigen lassen. - Plattform-Admin anlegen und anschliessend Mandanten registrieren.
Testumgebung im code-server
Fuer die SQLite-basierte Testumgebung kann der eingebaute PHP-Server genutzt werden:
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:
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.