Files
iwz/CLAUDE.md
T
Michael Stangl 2379f4ac9f @
Skripte nach bin/ und lib/ umstrukturiert + WSL-Log-Analyse

Alle .bat-Skripte liegen jetzt in bin/, alle .py in lib/, .env(.example)
in bin/. setenv.bat setzt IWZ_* (inkl. IWZ_ENV) und PYTHONPATH; die
Launcher rufen setenv, aktivieren die .venv falls vorhanden und starten
das zugehoerige lib/-Skript. Die Python-Skripte lesen die .env ueber
IWZ_ENV (Fallback bin/.env).

Neu: Nutzungsanalyse per GoAccess (analyze.py/.bat) - laedt die
IONOS-Access-Logs per SFTP (paramiko) und erzeugt einen HTML-Report.
GoAccess laeuft ueber WSL (GOACCESS_MODE=wsl, Pfad-Uebersetzung nach
/mnt/c). install_py.bat prueft WSL+GoAccess und zeigt sonst den
Installationsweg. Doku in doc/analyse.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@
2026-08-28 16:44:56 +02:00

130 lines
6.7 KiB
Markdown
Raw 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.
# Ferienwohnungen Wolframm – Projektkontext
## Was ist das?
Hugo-basierte statische Website als WordPress-Ersatz für www.iwz-ferienwohnungen.de.
Drei Ferienwohnungen in Kaufbeuren-Hirschzell / Allgäu.
## Stack
- **Static Site Generator**: Hugo (keine externe Abhängigkeit, einzelne .exe)
- **Hosting**: Bunny.net (Bunny CDN / Storage Zone, kostenpflichtig nach Traffic)
- **DNS**: Bunny.net DNS oder weiterhin IONOS (siehe Umzug-Notizen, ggf. anzupassen)
- **Domain-Registrar**: IONOS (bleibt so)
- **Buchungskalender**: webplanner.de (externer Dienst, per Link eingebunden)
- **Git**: eigene Gitea-Instanz (kein GitHub/GitLab, kein CI/CD-Workflow)
- **Deploy**: manuell per `deploy.bat` oder `deploy.py` → `hugo --gc --minify` + Upload nach Bunny.net Storage Zone (per Bunny-API/FTP, analog zum Ansatz in `.github/workflows/deploy.yml`-Vorlage, aber lokal statt als GitHub Action)
- **Nutzungsanalyse**: Server-Log-Auswertung mit GoAccess (kein JS-Tracking, keine Cookies, kein Consent-Banner). Skript `analyze.bat` / `analyze.py` lädt die Access-Logs per SFTP und erzeugt einen HTML-Report. Siehe `doc/analyse.md`.
## Hosting-Roadmap (Stand aktuell)
- **Jetzt**: Deploy läuft auf **Bunny.net** – für das erste Ausrollen der Instanz zur Kontrolle und Absprache. Die vorhandene Bunny-Konfiguration (Storage Zone, Pull Zone, `.env`) ist in Ordnung und bleibt vorerst so. `deploy.bat` / `deploy.py` deployen weiterhin nach Bunny.
- **Später**: Die Instanz wird auf **IONOS-Webspace** ausgerollt (Deploy-Ziel wird dann umgestellt).
- **Nutzungsanalyse jetzt schon erprobbar**: Die Log-Analyse (`analyze.py`) wird bereits mit den **IONOS-Access-Logs** getestet (SFTP-Zugang zum IONOS `/logs`-Ordner), unabhängig davon, dass das Deploy-Ziel noch Bunny ist. Nach dem IONOS-Umzug bleibt der Analyse-Workflow gleich.
## Projektstruktur
```
iwz/
├── hugo.toml # Konfiguration: baseURL, Menü, Kontaktdaten (Params)
├── requirements.txt # Python-Abhängigkeiten (paramiko für analyze)
├── bin/ # Alle .bat-Skripte (Einstiegspunkte)
│ ├── setenv.bat # setzt IWZ, IWZ_BIN, IWZ_LIB, IWZ_ENV ... + PYTHONPATH
│ ├── install_py.bat # legt .venv an + pip install -r requirements.txt
│ ├── get_cmd.bat # öffnet Shell mit gesetzter Umgebung
│ ├── deploy.bat # → lib/deploy.py (Vollupload nach Bunny)
│ ├── deploy-lastdiff.bat# → lib/deploy_lastdiff.py (nur Änderungen)
│ ├── analyze.bat # → lib/analyze.py (IONOS-Logs + GoAccess)
│ ├── provide_previewlink.bat # → lib/preview_link.py
│ ├── .env # Secrets (NICHT im Git; von setenv als IWZ_ENV gesetzt)
│ └── .env.example # Vorlage zum Kopieren nach bin/.env
├── lib/ # Alle .py-Skripte (von den .bat aufgerufen)
│ ├── deploy.py # Hugo-Build + FTP-Upload nach Bunny Storage Zone
│ ├── deploy_lastdiff.py # nur geänderte Dateien (Hash-Manifest)
│ ├── analyze.py # SFTP-Download der Logs + GoAccess-Report
│ └── preview_link.py # signierter Bunny-Vorschau-Link
├── content/
│ ├── _index.md # Startseite
│ ├── preise.md # Preistabelle + Buchungsbedingungen
│ ├── ausflugsziele.md
│ ├── kontakt.md
│ ├── impressum.md # PLATZHALTER – echte Daten eintragen!
│ ├── datenschutz.md # PLATZHALTER – rechtskonform ersetzen!
│ └── ferienwohnungen/
│ ├── _index.md
│ ├── fewo1.md # 45 qm, bis 4 Pers., 60 €/Nacht
│ ├── fewo2.md # 40 qm, bis 3 Pers., 55 €/Nacht
│ └── fewo3.md # 56 qm, bis 5 Pers., 100 €/Nacht
├── layouts/ # Hugo-Templates (kein externes Theme!)
│ ├── index.html # Startseite: Hero, Highlights, FeWo-Karten
│ ├── _default/
│ │ ├── baseof.html # Basis-Template (nav + footer)
│ │ ├── single.html # Standard-Einzelseite
│ │ └── list.html # Listenansicht (Ferienwohnungen-Übersicht)
│ ├── ferienwohnungen/
│ │ └── single.html # FeWo-Detailseite: Galerie + Buchungsbutton
│ └── partials/
│ ├── head.html # <meta>, CSS-Link
│ ├── nav.html # Navigation (mobil-responsive)
│ └── footer.html # Footer mit Kontakt + Links
└── static/
├── css/style.css # Reines CSS, CSS Variables, Dark Mode
├── js/main.js # Nur mobiles Menü-Toggle
└── images/ # Fotos hier ablegen
```
## Frontmatter der FeWo-Seiten
Jede `fewoX.md` hat folgende Felder:
```yaml
groesse: "45 qm"
personen: 4
preis: 60
belegungsplan: "https://www.webplanner.de/XXXXXX/fewo1"
bilder:
- "/images/fewo1_wohnzimmer.jpg"
- "/images/fewo1_kueche.jpg"
```
## Noch offen / TODO
- [x] Echte webplanner.de-URLs in fewo1/2/3.md eintragen (`belegungsplan`)
- [x] Fotos in `static/images/` ablegen + in fewoX.md verlinken
- [x] Telefon, E-Mail, Adresse in `hugo.toml` unter `[params]` eintragen
- [x] `content/impressum.md` mit echten Pflichtangaben füllen
- [x] `content/datenschutz.md` durch rechtskonforme Version ersetzen
- [x] Bunny.net-Account anlegen + Storage Zone für die Seite erstellen
- [x] Bunny Storage-Passwort besorgen, sicher hinterlegen (`.env`, nicht ins Git)
- [x] `deploy.bat` / `deploy.py` um Upload zur Bunny Storage Zone erweitern (FTP, Port 21, passiv)
- [ ] Bunny Pull Zone / CDN vor die Storage Zone schalten (Auslieferung + HTTPS)
- [ ] Domain-Anbindung an Bunny klären (DNS bei IONOS auf Bunny zeigen lassen, oder DNS zu Bunny umziehen)
## Lokaler Dev-Server
```powershell
hugo server
# → http://localhost:1313
```
## Deploy
Deploy läuft lokal per Skript (kein CI/CD, da Repo bei Gitea liegt). Referenz für den Bunny-Upload-Schritt ist die Vorlage `.github/workflows/deploy.yml` (GitHub-Actions-Syntax), deren Build- und Deploy-Logik 1:1 in `deploy.bat`/`deploy.py` nachgebaut wird:
```powershell
hugo --gc --minify
# danach: Upload von ./public zur Bunny.net Storage Zone
# (Storage Zone Name + API-Key/Storage-Passwort als Secrets/env, nicht im Git)
# Bei jeder Änderung (Skripte liegen jetzt in bin/, Python in lib/):
bin\deploy.bat # Vollupload
# oder nur geänderte Dateien:
bin\deploy-lastdiff.bat
# oder direkt:
python lib\deploy.py
```
Die `.bat`-Skripte in `bin/` rufen `setenv.bat` auf (setzt `IWZ_*` und
`PYTHONPATH`), wechseln ins Projekt-Root und starten das zugehörige Skript in
`lib/`. Die Secrets liegen in `bin/.env` (von `setenv.bat` als `IWZ_ENV`
gesetzt; die Python-Skripte lesen diesen Pfad, sonst Fallback auf `bin/.env`).