Update README (manually)
This commit is contained in:
55
README.md
55
README.md
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
Diese moderne Python-Webanwendung (Flask) ermöglicht verschiedene Datumsberechnungen über eine übersichtliche Weboberfläche:
|
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
|
## Funktionen
|
||||||
|
|
||||||
- Anzahl der Tage zwischen zwei Daten
|
- Anzahl der Tage zwischen zwei Daten
|
||||||
@@ -18,13 +22,14 @@ Diese moderne Python-Webanwendung (Flask) ermöglicht verschiedene Datumsberechn
|
|||||||
|
|
||||||
1. Python 3.8+ installieren
|
1. Python 3.8+ installieren
|
||||||
2. Abhängigkeiten installieren:
|
2. Abhängigkeiten installieren:
|
||||||
```
|
|
||||||
pip install -r requirements.txt
|
```bash
|
||||||
```
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
## Starten der App
|
## Starten der App
|
||||||
|
|
||||||
```
|
```bash
|
||||||
python app.py
|
python app.py
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -34,13 +39,15 @@ Die App ist dann unter http://localhost:5000 erreichbar.
|
|||||||
|
|
||||||
Das Dashboard ist mit einem statischen Passwort geschützt, das über die Umgebungsvariable `STATS_PASSWORD` gesetzt wird.
|
Das Dashboard ist mit einem statischen Passwort geschützt, das über die Umgebungsvariable `STATS_PASSWORD` gesetzt wird.
|
||||||
|
|
||||||
**Beispiel (PowerShell):**
|
Beispiel (PowerShell):
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
$env:STATS_PASSWORD = "meinSicheresPasswort"
|
$env:STATS_PASSWORD = "meinSicheresPasswort"
|
||||||
python app.py
|
python app.py
|
||||||
```
|
```
|
||||||
|
|
||||||
**Für Docker:**
|
Für Docker:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
$env:STATS_PASSWORD = "meinSicheresPasswort"
|
$env:STATS_PASSWORD = "meinSicheresPasswort"
|
||||||
docker run -e STATS_PASSWORD=$env:STATS_PASSWORD -p 5000:5000 datumsrechner
|
docker run -e STATS_PASSWORD=$env:STATS_PASSWORD -p 5000:5000 datumsrechner
|
||||||
@@ -50,7 +57,7 @@ docker run -e STATS_PASSWORD=$env:STATS_PASSWORD -p 5000:5000 datumsrechner
|
|||||||
|
|
||||||
Die App läuft im Container mit dem WSGI-Server **Gunicorn**:
|
Die App läuft im Container mit dem WSGI-Server **Gunicorn**:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
docker build -t datumsrechner .
|
docker build -t datumsrechner .
|
||||||
docker run -p 5000:5000 datumsrechner
|
docker run -p 5000:5000 datumsrechner
|
||||||
```
|
```
|
||||||
@@ -63,6 +70,7 @@ docker run -p 5000:5000 datumsrechner
|
|||||||
Um die Logdateien außerhalb des Containers zu speichern, kannst du das log-Verzeichnis mounten:
|
Um die Logdateien außerhalb des Containers zu speichern, kannst du das log-Verzeichnis mounten:
|
||||||
|
|
||||||
**PowerShell-Beispiel:**
|
**PowerShell-Beispiel:**
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
docker run -e STATS_PASSWORD=deinPasswort -p 5000:5000 -v ${PWD}/log:/app/log datumsrechner
|
docker run -e STATS_PASSWORD=deinPasswort -p 5000:5000 -v ${PWD}/log:/app/log datumsrechner
|
||||||
```
|
```
|
||||||
@@ -70,6 +78,7 @@ docker run -e STATS_PASSWORD=deinPasswort -p 5000:5000 -v ${PWD}/log:/app/log da
|
|||||||
### docker-compose Beispiel
|
### docker-compose Beispiel
|
||||||
|
|
||||||
Erstelle eine Datei `docker-compose.yml`:
|
Erstelle eine Datei `docker-compose.yml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
datumsrechner:
|
datumsrechner:
|
||||||
@@ -83,22 +92,17 @@ services:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Starte mit:
|
Starte mit:
|
||||||
```powershell
|
|
||||||
|
```bash
|
||||||
docker-compose up --build
|
docker-compose up --build
|
||||||
```
|
```
|
||||||
|
|
||||||
## Entwicklung & Hinweise
|
## Entwicklung & Hinweise
|
||||||
|
|
||||||
- Die HTML-Templates liegen im Ordner `templates/` (Trennung von Logik und Darstellung)
|
- Die HTML-Templates liegen im Ordner `templates/` (Trennung von Logik und Darstellung)
|
||||||
- Das Projekt ist auf Gitea gehostet: https://gitea.elpatron.me/elpatron/datecalc
|
- Das Projekt ist auf Gitea gehostet: https://gitea.elpatron.me/elpatron/datecalc
|
||||||
- Modernes, responsives Design mit Akkordeon und Icons
|
- Modernes, responsives Design mit Akkordeon und Icons
|
||||||
|
|
||||||
## Lizenz
|
|
||||||
|
|
||||||
Dieses Projekt steht unter der [MIT-Lizenz](LICENSE).
|
|
||||||
|
|
||||||
---
|
|
||||||
(c) 2025 Markus Busche
|
|
||||||
|
|
||||||
## Automatisierte Tests
|
## Automatisierte Tests
|
||||||
|
|
||||||
Automatisierte Tests sind mit pytest möglich:
|
Automatisierte Tests sind mit pytest möglich:
|
||||||
@@ -109,3 +113,24 @@ pytest test_app.py
|
|||||||
```
|
```
|
||||||
|
|
||||||
Die Tests prüfen u.a. die Erreichbarkeit der App, die wichtigsten Funktionen und den Schutz vor XSS-Angriffen.
|
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
|
||||||
|
|
||||||
|
Es werden keine IP-Adressen oder sonstigen persönlichen Daten gespeichert, lediglich die Zahl der Aufrufe der Funktionen in einer kumulierten Darstellung.
|
||||||
|
|
||||||
|
## Lizenz
|
||||||
|
|
||||||
|
Dieses Projekt steht unter der [MIT-Lizenz](LICENSE).
|
||||||
|
|
||||||
|
---
|
||||||
|
(c) 2025 [Markus Busche](https://digitalcourage.social/@elpatron)
|
Reference in New Issue
Block a user