Rearrange README
This commit is contained in:
194
README.md
194
README.md
@@ -20,6 +20,87 @@ Datumsrechner Live: [https://date.elpatron.me](https://date.elpatron.me)
|
|||||||
- Start-/Enddatum einer Kalenderwoche eines Jahres
|
- Start-/Enddatum einer Kalenderwoche eines Jahres
|
||||||
- Statistik-Dashboard mit Passwortschutz unter `/stats`
|
- 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
|
||||||
|
```
|
||||||
|
|
||||||
## REST API
|
## REST API
|
||||||
|
|
||||||
Alle Datumsfunktionen stehen auch als REST-API zur Verfügung. Die API akzeptiert und liefert JSON.
|
Alle Datumsfunktionen stehen auch als REST-API zur Verfügung. Die API akzeptiert und liefert JSON.
|
||||||
@@ -194,87 +275,6 @@ curl http://localhost:5000/api/monitor
|
|||||||
{ "error": "Ungültige Eingabe", "details": "..." }
|
{ "error": "Ungültige Eingabe", "details": "..." }
|
||||||
```
|
```
|
||||||
|
|
||||||
## 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)
|
## 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.
|
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.
|
||||||
@@ -293,11 +293,13 @@ Die App bietet einen Monitoring-Endpunkt unter `/monitor`, der Statusinformation
|
|||||||
- Pageviews der letzten 7 Tage
|
- Pageviews der letzten 7 Tage
|
||||||
|
|
||||||
Beispiel-Aufruf:
|
Beispiel-Aufruf:
|
||||||
|
|
||||||
```
|
```
|
||||||
GET https://date.elpatron.me/monitor
|
GET https://date.elpatron.me/monitor
|
||||||
```
|
```
|
||||||
|
|
||||||
Antwort:
|
Antwort:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
@@ -339,24 +341,24 @@ Dieses Projekt wurde zu nahezu 100% mit Unterstützung künsticher Intelligenz (
|
|||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
### Barrierefreiheit (Accessibility)
|
||||||
|
|
||||||
|
*Elpatrons Datumsrechner* ist barrierefrei gestaltet und erfüllt zentrale Anforderungen an Accessibility (a11y):
|
||||||
|
|
||||||
|
- *Semantische HTML-Struktur:* Überschriften, Labels und Formularelemente sind korrekt ausgezeichnet und verknüpft.
|
||||||
|
- *ARIA-Attribute:* Accordion und Statusmeldungen sind mit ARIA-Attributen versehen, damit Screenreader die Struktur und Zustände erkennen.
|
||||||
|
- *Tastaturbedienbarkeit:* Alle interaktiven Elemente (Accordion, Buttons, Formulare) sind vollständig per Tastatur bedienbar (inkl. Fokus-Indikator und Pfeiltasten-Navigation im Accordion).
|
||||||
|
- *Fokus-Indikatoren:* Deutliche visuelle Hervorhebung des Fokus für alle Bedienelemente.
|
||||||
|
- *Farbkontraste:* Hohe Kontraste für Texte, Buttons und Ergebnisboxen, geprüft nach WCAG-Richtlinien.
|
||||||
|
- *Status- und Fehlermeldungen:* Ergebnisse und Fehler werden mit `aria-live` für Screenreader zugänglich gemacht.
|
||||||
|
- *Mobile Optimierung:* Zusätzliche Meta-Tags für bessere Bedienbarkeit auf mobilen Geräten und Unterstützung von Screenreadern.
|
||||||
|
- *SEO:* Das Thema Barrierefreiheit ist in den Meta-Tags für Suchmaschinen sichtbar.
|
||||||
|
|
||||||
|
Damit ist die App für Menschen mit unterschiedlichen Einschränkungen (z.B. Sehbehinderung, motorische Einschränkungen) gut nutzbar und entspricht modernen Webstandards.
|
||||||
|
|
||||||
## Lizenz
|
## Lizenz
|
||||||
|
|
||||||
Dieses Projekt steht unter der [MIT-Lizenz](LICENSE).
|
Dieses Projekt steht unter der [MIT-Lizenz](LICENSE).
|
||||||
|
|
||||||
---
|
---
|
||||||
(c) 2025 [Markus Busche](https://digitalcourage.social/@elpatron)
|
(c) 2025 [Markus Busche](https://digitalcourage.social/@elpatron)
|
||||||
|
|
||||||
## Barrierefreiheit (Accessibility)
|
|
||||||
|
|
||||||
Elpatrons Datumsrechner ist barrierefrei gestaltet und erfüllt zentrale Anforderungen an Accessibility (a11y):
|
|
||||||
|
|
||||||
- **Semantische HTML-Struktur:** Überschriften, Labels und Formularelemente sind korrekt ausgezeichnet und verknüpft.
|
|
||||||
- **ARIA-Attribute:** Accordion und Statusmeldungen sind mit ARIA-Attributen versehen, damit Screenreader die Struktur und Zustände erkennen.
|
|
||||||
- **Tastaturbedienbarkeit:** Alle interaktiven Elemente (Accordion, Buttons, Formulare) sind vollständig per Tastatur bedienbar (inkl. Fokus-Indikator und Pfeiltasten-Navigation im Accordion).
|
|
||||||
- **Fokus-Indikatoren:** Deutliche visuelle Hervorhebung des Fokus für alle Bedienelemente.
|
|
||||||
- **Farbkontraste:** Hohe Kontraste für Texte, Buttons und Ergebnisboxen, geprüft nach WCAG-Richtlinien.
|
|
||||||
- **Status- und Fehlermeldungen:** Ergebnisse und Fehler werden mit `aria-live` für Screenreader zugänglich gemacht.
|
|
||||||
- **Mobile Optimierung:** Zusätzliche Meta-Tags für bessere Bedienbarkeit auf mobilen Geräten und Unterstützung von Screenreadern.
|
|
||||||
- **SEO:** Das Thema Barrierefreiheit ist in den Meta-Tags für Suchmaschinen sichtbar.
|
|
||||||
|
|
||||||
Damit ist die App für Menschen mit unterschiedlichen Einschränkungen (z.B. Sehbehinderung, motorische Einschränkungen) gut nutzbar und entspricht modernen Webstandards.
|
|
Reference in New Issue
Block a user