Files

2.8 KiB

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/<user>/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/<user>/summaries/weekly/YYYY-KW-XX.txt gespeichert.
  • Monatszusammenfassungen werden als storage/users/<user>/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.