58 lines
2.8 KiB
Markdown
58 lines
2.8 KiB
Markdown
# 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](/home/hnzio/Projekte/mood/LICENSE).
|