BromBrom: OsmAnd Microcar Navigation (Netherlands)
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). - Weekly Updates: Fresh navigation packages autogenerated every Monday morning.
- 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 β. For commercial licensing or partnership inquiries, please use the Contact Form.
See the difference: standard car navigation would route you onto expressways or forbidden C9 roads (left), whereas BromBrom routing avoids them automatically (right).
| Car Routing (Forbidden) | BromBrom Routing (Legal & Safe) |
|---|---|
![]() |
![]() |
Important
Prerequisite: You must have OsmAnd installed on your device first. Download it from the Google Play Store or iOS App Store.
The fastest way to install and keep your navigation updated automatically.
Tip
Already Configured? If you have already set up the BromBrom profile in OsmAnd, you only need to perform Phase 1: Installation & Import. OsmAnd will automatically retain your settings and profile choice for updates!
- Download the BromBrom Manager App from the latest release.
- Install and Open the app.
- Download & Import: The app automatically checks for and downloads the update. Once downloaded, review the popup instructions and tap "OPEN OSMAND".
- OsmAnd will open. Check both "Settings" and "Resources", then tap "Continue".
- Tap "Replace all" (overwrite) or "Apply" (first time) and wait for the import to finish.
- On the "Import complete" screen, tap "Close".
πΈ Step-by-Step Screenshots: Phase 1 (Installation & Import)
| 1. Updates Available | 2. Open with OsmAnd | 3. Select Resources to Import |
|---|---|---|
![]() |
![]() |
![]() |
| 4. Confirm Replacement (If asked) | 5. Import Complete (Tap Close) |
|---|---|
![]() |
![]() |
If this is your first time installing BromBrom, you must activate the profile:
- Open the OsmAnd menu (three lines button in the corner).
- Go to Settings -> Configure profiles.
- Enable BromBrom β Scroll down to the profiles list, find BromBrom and toggle it ON.
- Tap the navigation icon and select the BromBrom profile (orange microcar icon).
πΈ Step-by-Step Screenshots: Phase 2 (Profile Activation)
| 1. Open Menu | 2. Open Settings |
|---|---|
![]() |
![]() |
| 3. Enable BromBrom | 4. Select BromBrom Profile |
|---|---|
![]() |
![]() |
Because the entire BromBrom profile is packaged into a Smart Folder (.osf), manual installation is easy across all operating systems.
- Go to the latest release on your phone.
- Download the
BromBrom.osfpackage file. - Tap on the downloaded file. Your OS will prompt you to open it with OsmAnd.
- Check both "Settings" and "Resources", then tap "Continue".
- Tap "Replace all" (update) or "Apply" (first time) and wait for the import to finish.
- On the "Import complete" screen, tap "Close".
- Open the OsmAnd menu (three lines in the corner) and go to Settings.
- Enable BromBrom β Scroll down to the profiles list, find BromBrom and toggle it ON.
- In the navigation menu, select the BromBrom profile (orange microcar icon).
β οΈ Do not skip steps 6β9. OsmAnd does not enable or activate new profiles automatically.
See the Manual Install Guide for deeper troubleshooting.
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
scripts/validate_results.pychecks artifact integrity. - On-Demand Diagnostics: CLI tools
scripts/debug_road.pyandscripts/diagnose_route.pyallow inspecting specific ways/signs, searching by name, querying coordinates, or simulating routes.
Tip
Run Tests: pytest (or micromamba run -n brombrom 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 - Activate Environment:
micromamba activate brombrom - 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. For commercial licensing, redistribution requests, or partnership inquiries, please contact the author via the Contact Form.












