iOS · Swift · SwiftUI · MapLibre
Luftrom
A fast, native iOS map for drone pilots in Norway: where you may fly, what applies there, and the ground truth you need before take-off.
Open on the App Store ↗
Support page ↗
The pre-flight check
Long-press anywhere on the map and the app answers one question for that point. These are the lines it works through, in order.
- Zonesevery official geozone that covers the pointfrom the bundled dataset
- Ceilingthe 120 m limit above groundfixed rule
- Terrainground height at the pointKartverket
- Weatherground wind, gusts, rain, temperatureMET Norway
- Daylightsunrise and sunsetMET Norway
- Verdictone answer, with the next step to takecomputed on the phone
The problem
Before a flight in Norway you piece the answer together from several places: a zone map, a weather forecast, the sun, the rules. The official app is the only way to get tower permission, but it is not built for the quick question a pilot has in the car park: can I fly here, and is it worth it right now.
Luftrom is the quick question, answered on one screen. It deliberately stops at permission: that still has to come from the official channel, so the app hands you over to it.
What I built
- All official Norwegian drone geozones on topographic maps. Tap a zone to see what it is, who owns it, what you must do, and how to contact them.
- The one-tap check above, plus 48 hours of flying weather rated hour by hour against your own drone's wind and temperature limits.
- Saved spots, an optional "good window tomorrow" notification, and a home-screen and lock-screen widget.
- A logbook that copies the conditions in from the check, with totals and CSV export, and a pre-flight checklist you can edit.
- Siri and Shortcuts, in Norwegian and English.
Decisions worth explaining
- Data drives the rules
- Apart from the 120 m ceiling, no rule is hard-coded from regulation text. Zone meaning comes from the dataset, so a regulation change is a data refresh, not an app release.
- A converter that refuses bad data
- A script converts the official zone file into the app's format and rejects anything that breaks the contract: duplicate ids, unknown categories, non-metre units. The unit tests check the same contract from the app side.
- Offline first for what matters
- Zones and the verdict work with no connection. Map tiles, weather and terrain need one, and the app says so instead of guessing.
- Say what it does not cover
- Temporary restrictions and wind above ground have no usable machine-readable source, so the app does not pretend to know them. It points to where to check instead.
- Private by construction
- No account and no tracking. Everything the pilot enters, from drones to logbook, stays on the phone.
- A border that cannot lose a zone
- Outside Norway the check says "outside coverage" instead of giving a verdict. The outline is buffered outward so it never cuts off Norwegian territory, and a test requires every bundled zone to sit inside it.
Stack
Data and credit
Geozones: Luftfartstilsynet, via dronesoner.no (ED-269). Base map, terrain height and place names: © Kartverket (CC BY 4.0). Weather and sun: MET Norway (CC BY 4.0).