Initial habit tracker project

This commit is contained in:
2026-07-10 16:18:31 +02:00
commit 23416ee382
20 changed files with 1157 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
# Habit Tracker
Habit Tracker ist eine PHP-Webanwendung, mit der Benutzer eigene Gewohnheiten anlegen, bearbeiten, filtern und taeglich abhaken koennen.
## Funktionen
- Registrierung und Login mit Passwort-Hashing
- Geschuetzter Benutzerbereich per Session
- Habits erstellen, bearbeiten, loeschen und fuer heute abhaken
- Kategorien und Statusfilter im Dashboard
- Tagesprotokoll ueber `habit_logs`
- Responsive Oberflaeche fuer Desktop und Smartphone
- Serverseitige Validierung und klare Fehlermeldungen
- Schutz gegen SQL-Injection durch PDO Prepared Statements
- Schutz gegen XSS durch escaped HTML-Ausgabe
- CSRF-Schutz fuer schreibende Formulare
## Technik
- PHP
- HTML/CSS
- SQL
- MySQL/PDO
- MVC-Struktur
## MVC-Struktur
- `public/index.php`: Einstiegspunkt und Routing
- `app/Controllers/`: verarbeitet Anfragen und steuert den Ablauf
- `app/Models/`: kapselt Datenbankzugriffe
- `app/Views/`: erzeugt die HTML-Ausgabe
- `app/Core/`: gemeinsame Kernklassen fuer Datenbank und Views
- `app/helpers.php`: Hilfsfunktionen fuer Escaping, Sessions, Flash-Meldungen und CSRF
- `database/schema.sql`: Datenbankstruktur mit Startdaten
## Datenbank
Die Datenbank besteht aus 5 Tabellen:
- `users`: Benutzerkonten
- `categories`: Habit-Kategorien
- `habits`: Gewohnheiten der Benutzer
- `habit_logs`: taegliche Erledigungen
- `reminders`: vorbereitete Erinnerungen pro Habit
## Sicherheit
- Passwoerter werden mit `password_hash()` gespeichert.
- Login prueft Passwoerter mit `password_verify()`.
- SQL-Abfragen nutzen vorbereitete PDO-Statements.
- Ausgaben werden mit `htmlspecialchars()` escaped.
- Schreibende Formulare nutzen CSRF-Tokens.
- Nach erfolgreichem Login wird die Session-ID erneuert.
- Die echte `config/config.php` wird nicht mit Git hochgeladen.
## Einrichtung
1. `database/schema.sql` in phpMyAdmin importieren.
2. `config/config.example.php` zu `config/config.php` kopieren.
3. Datenbankdaten in `config/config.php` eintragen.
4. Projekt ueber `public/index.php` starten.
## Testablauf
1. Benutzer registrieren.
2. Einloggen.
3. Habit mit Kategorie und Wochenziel erstellen.
4. Habit im Dashboard filtern.
5. Habit fuer heute abhaken.
6. Habit bearbeiten und loeschen.
7. Seite auf Smartphone-Breite pruefen.
## Bewertungsbezug
Das Projekt zeigt eine klare MVC-Aufteilung, Datenbankarbeit mit mehreren verknuepften Tabellen, serverseitige Validierung, Sicherheitsmassnahmen gegen XSS, SQL-Injection und CSRF sowie eine responsive Benutzeroberflaeche.