Important
BromBrom is a planning aid only. You are responsible for following traffic signs and Dutch law.
BromBrom creates a professional-grade OsmAnd navigation package specifically for L6e microcars (Brommobielen) in the Netherlands. It solves the unique routing challenges of microcars by rigorously excluding forbidden roads (C9 signs, motorways) from the map data using official NDW traffic data and OpenStreetMap.
OsmAnd is a free and open-source offline navigation app for Android and iOS: https://osmand.net.
- Advanced Routing Engine: Custom
.obfmaps with "C9-forbidden" tags baked into the road network. - Intelligent Restriction Logic: Handles Dutch C9 signs using official NDW data; respects microcar exceptions (
OB65). - Monthly Updates: Fresh navigation packages autogenerated on the 2nd of every month.
- Premium Experience: Full support for voice guidance, lane assistance, and Android Auto (with OsmAnd Pro).
- Zero-Touch Deployment: Latest files ready for your phone.
Support the Project: If BromBrom helps you navigate safely, consider buying me a coffee ☕.
Important
Prerequisite: You must have OsmAnd installed on your device first. Download it from the Google Play Store or iOS App Store.
The easiest way to install and update BromBrom on Android.
- Download the BromBrom Manager App (
BromBrom.apk) from the latest release. - Install and Open the app.
- Grant the "All Files Access" permission when prompted.
- Update Map: Tap the orange "UPDATE MAP" button.
- Update Routing: Tap "UPDATE BromBrom Routing".
See the Manual Install Guide for step-by-step instructions for iOS and advanced users.
We ensure road safety through a combination of unit tests and post-build validation.
- Fast Iteration: We use
pytestfor unit testing the core ETL logic. - Visual Audit: In
DEBUGmode, we generatedebug_snaps.gpkgfor spatial verification. - Build Guard: Automated QA script
validate_results.pychecks artifact integrity.
Tip
Run Tests: pytest
Learn More: See Testing & QA Architecture.
The heart of BromBrom is its directional snapping and exemption parsing logic.
- Snapping: Uses 2D cross-products to determine the correct side of the road. See Snapping & Spatial Logic.
- Exceptions: Handles complex Dutch signage like
OB65and OCR-prone text.
BromBrom doesn't just "prefer" certain roads; it programmatically enforces legal restrictions:
- Data Fusion: Combines latest OpenStreetMap data with the NDW live traffic sign database.
- Directional Snapping: Signs are snapped to roads using orientation logic to ensure the correct side of the road is blocked.
- Semantic Tagging: Injects
motor_vehicle=noandmicrocar=notags directly into the road network. - Hard Blocking: The routing engine treats these roads as physically inaccessible for your vehicle type.
If you mistakenly enter a forbidden road (e.g., following traffic or missing a sign):
- GPS Snapping: The app will try to "snap" your position to the nearest legal road on the map.
- Legal Safety: The app will never plan a route through a C9 road. If you end up on a restricted road, the app will guide you to the nearest legal exit. Always obey physical signs over the app.
- Setup Environment:
micromamba env create -f environment.yml - Install Tools:
./scripts/setup_tools.sh - Run Build:
./run_full_build.sh
docker buildx build -t brombrom-builder .
docker run --rm -v $(pwd):/app brombrom-builderscripts/: Python ETL pipelines (Fetching, Snapping, Tagging).config/: Routing profiles (.brf) and XML configurations.app/: Source code for the BromBrom Manager (Flutter).tests/: Unit tests for critical spatial logic.
- Map Data: © OpenStreetMap contributors (ODbL).
- Traffic signs: Provided by NDW (Nationaal Dataportaal Wegverkeer).
© 2026 Tomaso Bulligan. All Rights Reserved. Personal, non-commercial use only.
