CartoDB's positron basemap now renders an "API KEY REQUIRED" watermark.
Use tiles="OpenStreetMap" via a new MAP_TILES constant instead.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Existing app (single-file Tkinter/ttkbootstrap desktop tool for logging
blood-drive work assignments and mapping them) plus the first round of
improvements:
- Data safety: atomic CSV writes (tmp + fsync + os.replace), rotating
backups in data/backups/ (startup + before every change, keep 20),
fallback to empty/backup on missing/empty/corrupt orte.csv.
- Geocoder robustness: per-item try/except so the worker thread survives
failures; GeocodingUnavailable + one-time "service unreachable" dialog.
- Input: DateEntry calendar picker with parse_date() validation; manual
lat/lon fields in the edit dialog; Tab 2 highlights/filters rows without
coordinates and adds a right-click "Koordinaten suchen".
- Logging to data/app.log; shared autocomplete helpers; config constants;
map fit_bounds.
docs/ describes current state, architecture, data model, setup (Linux Mint),
and the full improvement roadmap. data/orte.csv is gitignored for now.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>