# Habit Tracker Ein einfacher Habit Tracker mit wöchentlicher Ansicht, gebaut mit Flask und JavaScript. ## Features - 📅 Wöchentliche Ansicht (7 Zeilen für jeden Wochentag) - 🎯 Anpassbare Tagesziele (1-20x pro Tag) - 🎨 Individuelle Farben für jedes Habit - 🔥 Streak-Zähler - 📱 Responsive Design - 🐳 Docker-Support ## Schnellstart mit Docker ### Aus der Registry ```bash docker run -d \ --name habit-tracker \ -p 5000:5000 \ -v habit-data:/app/data \ gitea.example.com/username/habit-tracker:latest ``` ### Lokal bauen ```bash # Repository klonen git clone cd habit-tracker # Mit Docker Compose docker-compose up -d # Oder manuell docker build -t habit-tracker . docker run -d \ --name habit-tracker \ -p 5000:5000 \ -v habit-data:/app/data \ habit-tracker ``` ## Lokale Entwicklung ```bash # Virtual Environment erstellen python -m venv venv source venv/bin/activate # Linux/Mac # oder venv\Scripts\activate # Windows # Dependencies installieren pip install -r requirements.txt # App starten python app.py ``` Die App ist dann unter http://localhost:5000 erreichbar. ## Konfiguration ### Umgebungsvariablen - `FLASK_ENV`: `production` oder `development` (Standard: `production`) - `FLASK_APP`: `app.py` (Standard) ### Volumes - `/app/data`: Hier wird die `habits.json` Datenbank gespeichert ## Deployment ### Docker Compose (Empfohlen) ```yaml version: '3.8' services: habit-tracker: image: gitea.example.com/username/habit-tracker:latest ports: - "5000:5000" volumes: - ./data:/app/data environment: - FLASK_ENV=production restart: unless-stopped ``` ### Reverse Proxy (Nginx) ```nginx server { listen 80; server_name habits.example.com; location / { proxy_pass http://localhost:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ## Bedienung 1. **Habit hinzufügen**: Namen eingeben und "Hinzufügen" klicken 2. **Heute abhaken**: ✓-Button klicken (zeigt Fortschritt bei Zielen >1) 3. **Vergangene Tage bearbeiten**: Drei-Punkte-Menü → Modal öffnen 4. **Einstellungen**: Im Modal Farbe und Tagesziel anpassen 5. **Löschen**: Im Modal über den "Löschen"-Button ## Technische Details - **Backend**: Flask (Python) - **Frontend**: Vanilla JavaScript - **Datenbank**: TinyDB (JSON-basiert) - **Styling**: CSS Grid/Flexbox - **Container**: Multi-Arch (AMD64/ARM64) ## CI/CD Der Gitea-Workflow baut automatisch Docker-Images bei: - Push auf `main`/`master` Branch - Neue Tags (z.B. `v1.0.0`) - Pull Requests ## Lizenz MIT License