Building a Ground Control Station from Scratch

What is a ground control station?

A Ground Control Station — GCS — is the software an operator uses to fly, observe, and command unmanned vehicles from a computer. Think of it as air-traffic-control + cockpit + mission-planner + flight-recorder, all on one screen, for vehicles that don't carry humans.

If you've seen drone footage on the news and wondered "sino nagpapalipad niyan?" — they're probably looking at a GCS.

Why build one from scratch?

Because the existing options all have the same problems. Some are open source but carry licenses that make them risky for commercial or defense use. Some are closed and locked to one vendor's hardware. Some are cloud-coupled when you need something that works offline. And almost none of them are built to handle more than one type of vehicle.

I saw a gap and decided to fill it:

Multi-domain from day one. Drone-first, yes — but the type model is designed to extend to ground vehicles, surface vessels, and underwater vehicles without rewriting the core. The domain model doesn't know or care what medium the vehicle moves through. It cares about position, state, commands, and safety constraints.

License-clean. Every dependency goes through an allowlist. Apache-2.0 all the way. No surprise license issues. No "wait, can we actually ship this?" moment six months into development. Kailangan malinis from the start.

Civilian, from scratch. I've worked on unmanned systems in defense. This isn't that. This is a clean-room civilian project — my own IP, my own architecture, built from public knowledge and open standards. No government data, no employer code, walang overlap.

The positioning: An open-source, license-clean, multi-domain ground control station that works offline and doesn't lock you into one vendor's ecosystem. That's the gap. That's what I'm building.

How I'm approaching it

Domain-driven design with a hexagonal architecture. The core is pure types — no frameworks, no UI, no network calls. Just the concepts the system reasons about: vehicles, positions, commands, missions, safety rules. All tested. All typed. All portable.

Then ports — abstract interfaces that define how the core talks to the outside world. Want to connect a new drone? Write an adapter. The core doesn't change. Parang outlet lang — same plug, different devices.

The documentation chain goes from concept of operations all the way through to architecture — everything cross-linked and traceable. I don't write code without a paper trail. Every line traces back to a requirement, and every requirement traces back to a scenario. Old habit from defense work. It works.

Where it stands

Foundation is green. The domain types are done and tested — every safety-critical function covered. Port interfaces are defined. Documentation chain is complete. License machinery is in CI.

Next up: the first real hardware adapter, then the desktop application. Building the system from the inside out — domain first, then interfaces, then hardware, then UI. Matagal pero matibay.

Want the detailed architecture and engineering notes?

Layer details, type system design, security posture, competitive analysis, stack decisions, and the full roadmap.

Or just say hi — I like talking about engineering.