We built Clearspar Heli as a concept prototype of a day-of-operations system for a heli-ski or heli-charter operation — the kind of software that would run behind the scenes of an actual flying day, from the morning manifest through live dispatch, guide check-ins, and the closing report. It is not a real operating business. It is not affiliated with, or built for, any real heli-ski or charter operator, and it is not a certified operational safety system. Everything you see in the demo — aircraft, staff, guests, flights — is invented sample data.
The domain was chosen on purpose. A heli-ski day has real operational stakes: weight-and-balance limits that matter, check-in intervals that escalate if a group goes quiet, aircraft that get grounded by a mechanical squawk and can't fly again until someone with the right authority signs off. Building for that meant permission boundaries have real consequences, “the server said this succeeded” has to actually mean it succeeded, and multi-tenant data isolation has to hold even when nobody's watching.
What's real here: the code, the architecture, the permission model, the audit trail, and the engineering incidents described in the FAQ and blog below — all of that happened while we built this project, described factually. What's illustrative: the operator, the fleet, the staff, and every guest name are sample data standing in for a real deployment.
What's built
Flight-following that speaks your trackers' language
Clearspar ingests AFF — Automated Flight Following, the open aff.gov XML-over-HTTPS standard that Spidertracks, TracPlus, SKYTRAC/Latitude, and Blue Sky Network all speak. Both halves of the adapter are real: an authenticated HTTPS transport and a namespace-tolerant XML parser that reads position, altitude, speed, and heading and maps each device serial to your aircraft. In the demo it runs a clearly labeled bundled sample feed; it flips to your live operator feed with three environment variables and no code change.
The AFF satellite feed is the primary source — because in mountain terrain, low and slow, ADS-B has real coverage gaps exactly where you fly. An optional OpenSky ADS-B feed supplements it: it only activates for a real-transponder aircraft whose satellite fix has gone stale. Satellite always wins.
Every position carries a provenance label the map surfaces verbatim: a simulated fix reads “Sim feed (sample),” the bundled AFF feed reads “Sample feed — Spidertracks AFF,” and a real operator feed reads “Live — Spidertracks.” Sample data can never masquerade as a live feed. The demo map currently shows simulated Thompson Pass traffic, labeled as a sample feed.
If your aircraft already reports, Clearspar ingests it
Clearspar is an ingestion and ops layer, not a tracking-hardware vendor. It doesn't sell you a satellite tracker or a transponder — it consumes the position feed your aircraft already reports over and stitches it into scheduling, weather-minima gating, fuel range-rings, and the overdue-aircraft workflow.
If your aircraft already reports over Spidertracks, TracPlus, SKYTRAC, Blue Sky Network, or ADS-B, Clearspar connects it before go-live — no new adapter work; inReach and ForeFlight are roadmap items we'll build for the right operator.
Multi-tenant isolation runs at the database layer — Postgres Row-Level Security keyed to each request's organization, not application-side filtering. The app is offline-first (a service worker and mutation queue that replays writes once you're back online, with an honest “changes queued” indicator rather than a false all-synced state) and stays live via Server-Sent Events. Aircraft are tracked on a MapLibre map over real satellite imagery, with positions from a real AFF-standard ingest adapter — the open format Spidertracks, TracPlus, and SKYTRAC all speak — that runs a clearly labeled sample feed in the demo and flips to a live operator feed with three environment variables, plus an optional OpenSky ADS-B feed as a supplementary fill-in. Every fix is badged with its source, so a sample feed can never read as live.
Curious how the permission model, the offline sync, or the multi-tenant isolation actually work — or what broke along the way and how it got fixed? Read the FAQ or the blog for the full engineering detail.