# Mood Dateibasierter Stimmungstracker für LAMP/Cloudron ohne Datenbank. ## Features - Geschützter Login mit Session, `password_hash`, CSRF-Schutz und Security-Headern - Vier Bereiche: Dashboard, Tracking, Optionen, Archiv - Speicherung aller Tage als Markdown in `storage/users//days/YYYY-MM-DD.txt` - KI-Wochen- und Monatszusammenfassungen im Archiv mit verschlüsselter dateibasierter Ablage - Pro Nutzer eigene Einstellungen für die Bewertungslogik - Admin kann weitere Accounts direkt in der Weboberfläche anlegen - Moderner, responsiver Liquid-Glass-Look mit lokalen Assets und ohne externe CDNs ## Struktur - `index.php`: Front-Controller und Routing-Einstieg - `src/`: PHP-Logik für Auth, Storage, Scoring und Rendering - `templates/`: Seiten-Templates - `assets/`: CSS und JavaScript - `storage/`: geschützter Dateispeicher, per `.htaccess` nicht direkt abrufbar ## Deployment auf Cloudron / LAMP 1. Den Projektordner in die App deployen und Apache auf dieses Verzeichnis zeigen lassen. 2. `AllowOverride All` aktiv lassen, damit `.htaccess` greift. 3. Sicherstellen, dass der Webserver Schreibrechte auf `storage/` hat. 4. Die Seite das erste Mal aufrufen und unter `/setup` den ersten Admin-Account erstellen. 5. Danach ist die Anwendung nur noch nach Login nutzbar. ## Hinweise - Die Inhalte liegen absichtlich nicht in einer Datenbank, sondern in menschenlesbaren TXT-Dateien. - Tagesdateien und KI-Zusammenfassungen werden serverseitig verschlüsselt gespeichert und im Backup wieder als lesbare TXT-Dateien exportiert. - Mehrere Accounts sind möglich und verursachen hier wenig Overhead, weil jeder Nutzer nur einen eigenen Unterordner mit Tagen und Einstellungen bekommt. - Wenn du später Reverse Proxy oder HTTPS über Cloudron nutzt, bleiben die Daten weiterhin nur über die App erreichbar. ## KI-Zusammenfassungen - Für KI-Zusammenfassungen im Archiv wird ein OpenAI-Modell aus der Mini-Klasse verwendet. - Der API-Key kommt aus der Server-Umgebung, das Modell und der Timeout können zusätzlich zentral durch einen Admin in den Optionen angepasst werden. - Wochenzusammenfassungen werden als `storage/users//summaries/weekly/YYYY-KW-XX.txt` gespeichert. - Monatszusammenfassungen werden als `storage/users//summaries/monthly/YYYY-MM.txt` gespeichert. - Der Backup-Export nimmt diese Dateien automatisch mit und legt sie im ZIP unter `summaries/weekly/` und `summaries/monthly/` ab. ### Benötigte Umgebungsvariablen - `OPENAI_API_KEY` (erforderlich) - `OPENAI_MODEL` (optional, Standard: `gpt-4o-mini`) - `OPENAI_TIMEOUT` (optional, Standard: `25`) ## Lizenz - Dieses Projekt steht unter der `PolyForm Noncommercial License 1.0.0`. - Nicht-kommerzielle Nutzung ist erlaubt. - Kommerzielle Nutzung ist ohne separate schriftliche Freigabe nicht erlaubt. - Details siehe [LICENSE](/home/hnzio/Projekte/mood/LICENSE).