Skip to content

Commit 9646143

Browse files
author
Dennis Braun
committed
Merge branch 'dev'
2 parents d11d02a + 9213d70 commit 9646143

File tree

1 file changed

+40
-11
lines changed

1 file changed

+40
-11
lines changed

CONTRIBUTING.md

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,24 @@ pip install -r requirements.txt
1111
pip 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
1727
python -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
```
3143
app/
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

Comments
 (0)