Files
HabitTracker/README.md
jafreli f714fa46ba
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 2m3s
Hinzufügen des Docker Containerst
2025-07-19 00:46:42 +02:00

2.7 KiB

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

docker run -d \
  --name habit-tracker \
  -p 5000:5000 \
  -v habit-data:/app/data \
  gitea.example.com/username/habit-tracker:latest

Lokal bauen

# Repository klonen
git clone <repository-url>
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

# 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)

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)

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