# Elpatrons Datumsrechner Diese moderne Python-Webanwendung (Flask) ermöglicht verschiedene Datumsberechnungen über eine übersichtliche Weboberfläche: ## Demo Datumsrechner Live: [https://date.elpatron.me](https://date.elpatron.me) ## Funktionen - Anzahl der Tage zwischen zwei Daten - Anzahl der Werktage zwischen zwei Daten - Anzeige des Wochentags eines Datums - Datum plus/minus X Tage - Datum plus/minus X Werktage - Datum plus/minus X Wochen/Monate - Kalenderwoche zu Datum - Start-/Enddatum einer Kalenderwoche eines Jahres - Statistik-Dashboard mit Passwortschutz unter `/stats` ## Installation (lokal) 1. Python 3.8+ installieren 2. Abhängigkeiten installieren: ```bash pip install -r requirements.txt ``` ## Starten der App ```bash python app.py ``` Die App ist dann unter http://localhost:5000 erreichbar. ## Statistik-Dashboard (/stats) & Passwortschutz Das Dashboard ist mit einem statischen Passwort geschützt, das über die Umgebungsvariable `STATS_PASSWORD` gesetzt wird. Beispiel (PowerShell): ```powershell $env:STATS_PASSWORD = "meinSicheresPasswort" python app.py ``` Für Docker: ```powershell $env:STATS_PASSWORD = "meinSicheresPasswort" docker run -e STATS_PASSWORD=$env:STATS_PASSWORD -p 5000:5000 datumsrechner ``` ## Docker (empfohlen für Produktion) Die App läuft im Container mit dem WSGI-Server **Gunicorn**: ```bash docker build -t datumsrechner . docker run -p 5000:5000 datumsrechner ``` - Gunicorn startet automatisch (siehe Dockerfile) - Empfohlen für produktiven Einsatz ### Log-Verzeichnis mounten (Logs auf dem Host speichern) Um die Logdateien außerhalb des Containers zu speichern, kannst du das log-Verzeichnis mounten: **PowerShell-Beispiel:** ```powershell docker run -e STATS_PASSWORD=deinPasswort -p 5000:5000 -v ${PWD}/log:/app/log datumsrechner ``` ### docker-compose Beispiel Erstelle eine Datei `docker-compose.yml`: ```yaml services: datumsrechner: build: . ports: - "5000:5000" environment: - STATS_PASSWORD=deinPasswort volumes: - ./log:/app/log ``` Starte mit: ```bash docker-compose up --build ``` ## Progressive Web App (PWA) Elpatrons Datumsrechner ist als PWA installierbar (z.B. auf Android/iOS-Homescreen oder Desktop). Die App funktioniert offline für die Startseite und statische Ressourcen, die Datumsberechnung bleibt serverseitig. - Manifest und Service Worker sind integriert - App-Icon und Theme-Color für Homescreen - Installation über Browser-Menü ("Zum Startbildschirm hinzufügen") ## Monitoring & Healthcheck Die App bietet einen Monitoring-Endpunkt unter `/monitor`, der Statusinformationen als JSON zurückgibt (z.B. für Uptime-Robot, Docker Healthcheck oder eigene Tools): - Status (ok) - Aktuelle Serverzeit - Uptime (Sekunden seit Start) - Pageviews der letzten 7 Tage Beispiel-Aufruf: ``` GET https://date.elpatron.me/monitor ``` Antwort: ```json { "status": "ok", "message": "App running", "time": "2025-07-24T13:37:00.123456", "uptime_seconds": 12345, "pageviews_last_7_days": 42 } ``` ## Entwicklung & Hinweise - Die HTML-Templates liegen im Ordner `templates/` (Trennung von Logik und Darstellung) - Das Projekt ist auf Codeberg gehostet: [https://codeberg.org/elpatron/datecalc](https://codeberg.org/elpatron/datecalc) - Modernes, responsives Design mit Akkordeon und Icons ## Automatisierte Tests Automatisierte Tests sind mit pytest möglich: ```powershell pip install -r requirements.txt pytest test_app.py ``` Die Tests prüfen u.a. die Erreichbarkeit der App, die wichtigsten Funktionen und den Schutz vor XSS-Angriffen. ## Hinweise ### Motivation Finde mal eine Datumsrechner- Webapp, die nicht völlig Werbe- und Tracking verseucht ist! Da ich sowas häufiger mal brauche, hab ich mir eine eigene gemacht. ### Vibe Coding Dieses Projekt wurde zu nahezu 100% mit Unterstützung künsticher Intelligenz (*[Vibe Coding](https://de.wikipedia.org/wiki/Vibe_Coding)*) erstellt. Das Grundgerüst war nach ca. 45 Minuten fertig gestellt, insgesamt hat die Entwicklung des Projekts ca. 4 Stunden Zeit beansprucht. ### Statistik-Erfassung, Logging Es werden keine IP-Adressen oder sonstigen persönlichen Daten gespeichert, lediglich die Zahl der Aufrufe der Funktionen in einer kumulierten Darstellung. Die Logdatei enthält nur Einträge der letzten sieben Tage. ## Lizenz Dieses Projekt steht unter der [MIT-Lizenz](LICENSE). --- (c) 2025 [Markus Busche](https://digitalcourage.social/@elpatron)