# AGENTS.md — 3D-Druck Kostenkalkulation ## Project structure - `app.py` — Flask web app (ersetzt das fruehere Tkinter-GUI) - `3dDruckKalkulator.py` — alte Tkinter-Version (nicht mehr verwenden) - `templates/index.html` — Hauptseite mit Formular und Live-Ergebnissen - `templates/invoice.html` — Rechnungsseite mit PDF-Download - `static/style.css` — Light-/Dark-Mode-Theming - `static/script.js` — Live-Berechnung + Auto-Save beim Tippen - `druckkalkulation_config.yaml` — auto-created/auto-saved state - `.venv/` — virtual environment with all deps ## Setup ```bash source .venv/bin/activate ``` **Dependencies**: `flask`, `fpdf2` (imported as `fpdf`), `PyYAML`. Alle in `.venv`. ## Run ```bash python app.py # -> http://127.0.0.1:5001 ``` Kein Test, Lint, Typecheck oder CI vorhanden. README.md und AGENTS.md enthalten die Projektdokumentation. ## Routes | Methode | Pfad | Beschreibung | |---------|------|-------------| | GET | `/` | Hauptseite mit Formular | | POST | `/calculate` | JSON-Berechnung (AJAX) | | POST | `/save_config` | Speichert Werte in YAML | | GET | `/invoice` | Rechnungsseite | | POST | `/invoice/pdf` | PDF-Download | | POST | `/export` | TXT-Download | | GET | `/settings` | Einstellungsseite (Druckerabschreibung, Arbeitskosten, Marge) | ## Config `druckkalkulation_config.yaml` wird beim Start gelesen und bei jeder Eingabe automatisch gespeichert (debounced 500ms via AJAX). Enthaelt alle Formularwerte plus `dark_mode`. Wird automatisch erstellt — kein manuelles Setup. ## Wichtige Fallstricke - `fpdf` kommt via `fpdf2`-Paket, Import ist `from fpdf import FPDF` (alte API). - **Saeamtliche UI-Texte sind Deutsch** — Labels, Fehlermeldungen, Rechnungsinhalte. - Nur `.venv/` und `druckkalkulation_config.yaml` ignorieren (kein `.gitignore` vorhanden). - `3dDruckKalkulator.py` ist die alte Tkinter-Version und wird nicht mehr verwendet.