@@ -11,12 +11,24 @@ pip install -r requirements.txt
1111pip install pytest
1212```
1313
14+ ## Docker Development
15+
16+ For a containerized dev environment:
17+
18+ ``` bash
19+ docker compose -f docker-compose.dev.yml up -d --build
20+ ```
21+
22+ This runs on port ** 8766** (` http://localhost:8766 ` ). Production uses ` docker-compose.yml ` on port 8765.
23+
1424## Running Tests
1525
1626``` bash
1727python -m pytest tests/ -v
1828```
1929
30+ 124+ tests cover analyzers, API endpoints, config, MQTT, i18n, and PDF generation.
31+
2032## Running Locally
2133
2234``` bash
@@ -29,23 +41,40 @@ Open `http://localhost:8765` to access the setup wizard.
2941
3042```
3143app/
32- main.py - Entrypoint, polling loop, thread management
33- web.py - Flask routes and API endpoints
34- analyzer.py - DOCSIS channel health analysis
35- fritzbox.py - FritzBox data.lua API client
36- config.py - Configuration management (env + config.json)
37- storage.py - SQLite snapshot storage
38- mqtt_publisher.py - MQTT Auto-Discovery for Home Assistant
39- i18n.py - Translation strings (EN/DE)
40- templates/ - Jinja2 HTML templates
41- tests/ - pytest test suite
44+ main.py - Entrypoint, polling loop, thread management
45+ web.py - Flask routes and API endpoints
46+ analyzer.py - DOCSIS channel health analysis
47+ fritzbox.py - FritzBox data.lua API client
48+ config.py - Configuration management (env + config.json)
49+ storage.py - SQLite snapshot storage
50+ mqtt_publisher.py - MQTT Auto-Discovery for Home Assistant
51+ report.py - Incident Report PDF generator (fpdf2)
52+ thinkbroadband.py - BQM integration
53+ i18n/ - Translation files (EN/DE/FR/ES JSON)
54+ fonts/ - Bundled DejaVu fonts for PDF generation
55+ static/ - Static assets (icons, etc.)
56+ templates/ - Jinja2 HTML templates
57+ tests/ - pytest test suite (124+ tests)
58+ docker-compose.yml - Production Docker setup
59+ docker-compose.dev.yml - Development Docker setup (port 8766)
4260```
4361
62+ ## Internationalization (i18n)
63+
64+ Translations live in ` app/i18n/ ` as JSON files:
65+
66+ - ` en.json ` — English
67+ - ` de.json ` — German
68+ - ` fr.json ` — French
69+ - ` es.json ` — Spanish
70+
71+ Each file has a ` _meta ` field with ` language_name ` and ` flag ` . When adding or changing UI strings, update ** all 4 files** .
72+
4473## Guidelines
4574
4675- Keep changes focused and minimal
4776- Add tests for new functionality
48- - Maintain English and German translations in ` app/i18n.py `
77+ - Maintain all 4 language translations (EN/DE/FR/ES) in ` app/i18n/*.json `
4978- CHANGELOG entries must be in English
5079- Run the full test suite before submitting a PR
5180
0 commit comments