SkyTalk
Satellite push-to-talk communication for aircrew in remote areas. Built for the SKYTRAC 2026 Hackathon by team QWERTY (Carleton University).
SkyTalk is a push-to-talk satellite communication system for aircrew operating in remote areas. It must feel like a walkie-talkie while running over Iridium Certus — a 22 kbps uplink, 500–1500 ms latency, expensive-per-byte satellite link.
Every decision documented here exists to answer one question: how do you make that feel like a walkie-talkie given those constraints?
The Constraint That Drives Everything
The SKYTRAC DLS-140 satellite router on each aircraft is outbound-only. The Iridium network uses carrier-grade NAT — no inbound connections are possible. This makes direct aircraft-to-aircraft communication physically impossible. Every phone connects outbound to a relay server on DigitalOcean, and the server fans audio out.
This is not a design choice. It is a hardware constraint we designed around.
What This Site Documents
Architecture
Relay design, client-side floor control, key management, and the physical data path from aircraft to ground.
Stack & Tradeoffs
Every technology choice — Fastify, Prisma, WebSocket, React Native — with the specific constraints that drove it.
Infrastructure
DigitalOcean droplet, Docker Compose services, Postgres schema, and environment configuration.
API Reference
All REST endpoints and the full WebSocket protocol with payload schemas, error codes, and floor control behaviour.
UI / UX
Design philosophy, PTT interaction model, HIG principles, and accessibility for the mobile app and admin portal.
Runbook
Local dev setup, DigitalOcean deployment steps, and a troubleshooting guide for common failure modes.
The Team
| Person | Package | Role |
|---|---|---|
| Shri | packages/server | Backend relay server, Postgres, DigitalOcean infra |
| Saim | packages/comms | Comms library, audio pipeline, DLS-140 client |
| Maisam + Annie | packages/mobile, packages/portal | React Native app and admin web portal |