README.md and AGENTS.md

This commit is contained in:
2026-08-07 11:31:39 +02:00
parent 54cbdd0c74
commit 1c89927b18
2 changed files with 77 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
# AGENTS.md
## Projekt
Kleiner Docker-Container, der Cloudflare-A-Records (DNS-only) + eine FreeDNS-URL mit der
aktuellen öffentlichen IPv4-Adresse pflegt. IP wird ausschließlich über die FritzBox
TR-064-Schnittstelle ermittelt.
Kontext: [`SPEC.md`](SPEC.md) (Design), [`PLAN.md`](PLAN.md) (Tasks),
[`README.md`](README.md) (Betrieb).
## Struktur
- `app/` Kernmodule (Python 3.12)
- `config.py` ENV-basierte Konfiguration + Validierung
- `state.py` persistierte letzte IP (`/data/last-known-ip.json`)
- `fritzbox.py` IP-Ermittlung via TR-064 (Retry/Backoff)
- `cloudflare.py` A-Record-Update (DNS-only)
- `freedns.py` FreeDNS-Update-Call
- `healthcheck.py` Healthchecks-Pings
- `main.py` Flask-Webhook (`/webhook/update`, `/healthz`) + Poll-Scheduler
- `.env.example` Referenz aller ENV-Variablen (Pflicht: FRITZBOX_*, CLOUDFLARE_*)
## Befehle
- Tests: keine Test-Suite vorhanden
- Lint/Format: `ruff check .` und `ruff format --check .` (in `.venv` via
`python3 -m venv .venv && . .venv/bin/activate`)
- Lokal: `python -m app.main` (im `.venv`, deps aus `requirements.txt`)
- Container: `docker compose up -d`
## Konventionen
- CREDENTIALS NIE committen. `.env` und `data/` sind gitignored nie mit `-f` hinzufügen.
- Keine Co-Autoren in Commits.
- Keine Kommentare im Code außer auf Nachfrage.
- Python-Code mit Ruff formatieren (line-length 100, double quotes).
- Änderungen an `SPEC.md`/`PLAN.md`/`README.md` mitziehen, wenn sich Design/Betrieb ändert.
## Lizenz
MIT Copyright Stefan Koelle (https://stefankoelle.de). Lizenz-Header bei neuen
Quellcode-Dateien ergänzen, wenn möglich mit `/add-license`.