Files
cf-zeiten/README.md
2026-02-21 15:25:48 +01:00

80 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# cf-zeiten
Eine FastAPI-Anwendung zur dynamischen Anzeige von Öffnungszeiten und Bemerkungen, die direkt aus Google Sheets gespeist werden.
## Features
* **Google Sheets Integration**: Daten werden via CSV-Export aus Google Sheets geladen.
* **Automatisches Caching**: Daten werden für 60 Minuten zwischengespeichert, um API-Anfragen zu minimieren.
* **Admin-Interface**: Zentrale Verwaltungsoberfläche zum Bearbeiten der Tabellen, Löschen des Caches und Testen der Ansicht.
* **Dynamische Filterung**: Anzeige kann über URL-Parameter nach Tagen (`?days=X`) oder Zeilen (`?lines=X`) gefiltert werden.
* **Typografische Optimierungen**:
* Automatisches Ersetzen von Bindestrichen durch En-Dashes () in Zeitangaben.
* UTF-8 Unterstützung für korrekte Darstellung deutscher Umlaute (z.B. "März").
* Unterstützung von Markdown in den Bemerkungsfeldern.
* **Custom Fonts**: Einbindung der "Brittany Signature" Schriftart für Monatsüberschriften.
## Installation
1. Repository klonen:
```bash
git clone <repository-url>
cd cf-zeiten
```
2. Virtuelle Umgebung erstellen und aktivieren:
```bash
python -m venv venv
source venv/bin/activate # Linux/macOS
# oder
venv\Scripts\activate # Windows
```
3. Abhängigkeiten installieren:
```Bash
pip install -r requirements.txt
```
## Konfiguration
Die Konfiguration erfolgt über die config.yaml im Hauptverzeichnis. Hier müssen die Google Sheet ID und die GIDs der einzelnen Tabellenblätter hinterlegt werden:
YAML
```yaml
google_sheet:
sheet_id: "DEINE_SHEET_ID"
gid_times: "GID_DER_ZEITEN"
gid_remarks: "GID_DER_BEMERKUNGEN"
date_column: "Datum"
processing:
days_to_show: 14
server:
host: "0.0.0.0"
port: 8000
```
## Verwendung
### Server starten
```bash
python main.py
```
### Endpunkte
- Admin-Bereich: `http://localhost:8000/`
- Öffentliche Tabelle: `http://localhost:8000/zeiten`
- Cache manuell leeren: `http://localhost:8000/cache-clear`
### URL-Parameter für `/zeiten`
- `test=1`: Aktiviert einen dunklen Testhintergrund zur Vorschau.
- `days=X`: Zeigt die Einträge der nächsten X Tage an.
- `lines=X`: Zeigt exakt X Zeilen an (hat Vorrang vor days).
## Projektstruktur
- `main.py`: Einstiegspunkt der Anwendung.
- `core/`: Logik für Konfiguration und Datenverarbeitung (`data_processor.py`).
- `routers/`: Definition der Web-Routen.
- `static/`: Statische Dateien (Fonts, CSS).
- `templates/`: Jinja2-Templates für Admin- und Tabellenansicht.