caecc60c7b
Items 1–12 of the interface review: - Larger UI font (UI_FONT_SIZE) across widgets, menus, dialogs, Treeview rows. - DRK-red header bar; window title shows entry count; runtime-drawn red-cross icon (also written to data/icon.png for the launcher). - Status bar colour-coded by severity; transient messages auto-clear after 8 s, queue-count messages stay. - Tab 1: more form spacing, digits-only PLZ, explicit "Auswahl entfernen" + Delete key for queue rows, confirm on "Warteschlange leeren", modal on duplicate save. - Tab 2: raw lat/lon columns replaced by one "Karte" column (checkmark / red "fehlt"); ▲/▼ arrow on the active sort column; hint line always shows the saved-entry count. - "Karte öffnen" with no coordinates shows a dialog, not just a status line. - Window size/position remembered between sessions (data/window.json). Verified by building and driving the window under Homebrew Python 3.12 / Tk 9; non-GUI smoke tests still pass. Docs updated (changelog, overview, improvements, data-model, setup, dev-notes). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
35 lines
2.0 KiB
Markdown
35 lines
2.0 KiB
Markdown
# DRK Blutspende – Arbeitsorte: Dokumentation
|
||
|
||
Developer/maintainer documentation for the **Arbeitsorte-Logger**, a small
|
||
desktop app that records blood-drive work assignments (date + city + postal
|
||
code) and plots them on an interactive map.
|
||
|
||
> Context: built as a personal tool for a single user, running locally on a
|
||
> **Linux Mint laptop**. Ease of use for a non-technical user is the primary
|
||
> design constraint. There is no server, no multi-user story, and no network
|
||
> dependency beyond geocoding and the map tiles.
|
||
|
||
## Documents
|
||
|
||
| File | Contents |
|
||
|------|----------|
|
||
| [overview.md](overview.md) | What the app does, feature by feature |
|
||
| [architecture.md](architecture.md) | Code structure, threading model, data flow |
|
||
| [data-model.md](data-model.md) | The `orte.csv` schema and how it is read/written |
|
||
| [setup.md](setup.md) | Install & run on a fresh Linux Mint machine, plus a desktop launcher |
|
||
| [improvements.md](improvements.md) | Prioritized review findings and suggested changes |
|
||
| [changelog.md](changelog.md) | What has changed, newest first |
|
||
| [dev-notes.md](dev-notes.md) | Assumptions that turned out wrong — read before editing |
|
||
|
||
## At a glance
|
||
|
||
- **Language / stack:** Python 3, Tkinter via [`ttkbootstrap`](https://ttkbootstrap.readthedocs.io/)
|
||
- **Single file:** [`app.py`](../app.py) (~760 lines)
|
||
- **Storage:** one CSV file, `data/orte.csv`
|
||
- **Map:** generated on demand as `data/karte.html` with [Folium](https://python-visualization.github.io/folium/) (Leaflet), opened in the default browser
|
||
- **Geocoding:** OpenStreetMap Nominatim via [`geopy`](https://geopy.readthedocs.io/), rate-limited to 1 request/second on a background thread
|
||
- **UI language:** German; DRK-red header, enlarged font, colour-coded status bar, window position remembered
|
||
- **Persistence:** atomic CSV writes + rotating backups in `data/backups/`; log at `data/app.log`
|
||
- **Tests:** non-GUI smoke checks only (not yet a committed `tests/` suite)
|
||
- **Version control:** git initialized 2026-09-07
|