SAPOT Platform
A LAN-first communication platform enabling reliable data sync and coordination for emergency response and remote areas without internet access
Problem
During disasters or in remote areas where internet and cellular infrastructure is unavailable, teams and individuals still need a reliable way to communicate, coordinate, and share information.
Goals
- Develop a robust mobile application capable of functioning seamlessly both with and without a central server
- Implement offline-first capabilities to ensure reliable communication for on-the-ground responders during internet outages
- Design a user interface that gracefully transitions between online and offline modes without disrupting the user experience
- Integrate local networking protocols to facilitate peer-to-peer data synchronization and communication when a server is unreachable
Approach
Mobile Client
Development Workflow
Security
Networking
Deployment
Decisions
WebRTC for Media
Why: Chosen to allow direct peer-to-peer communication over the LAN without relying on external internet servers
Tradeoff: More complex to establish connections offline compared to simple centralized WebSockets
React Native / Expo
Why: Selected to ensure the mobile client could be quickly deployed across various responder devices from a single codebase
Tradeoff: Potential performance overhead compared to native apps
Strict CI/CD Workflows
Why: Relied on GitHub Actions and robust PR reviews to maintain high code quality while iterating quickly
Tradeoff: Slight overhead in setting up and maintaining the pipeline initially
Challenges
End-to-End Encryption over LAN
Designing and implementing a robust end-to-end encryption mechanism for peer-to-peer offline communications proved to be highly complex, handled via custom localized key exchange
Offline WebRTC
Establishing connections without traditional external STUN/TURN servers required creating a custom signaling system over the isolated LAN
Data Synchronization
Resolving data conflicts and ensuring data consistency across multiple independent offline nodes
Outcomes
Working Proof-of-Concept
System Status
Successfully demonstrated a system capable of secure message and media transmission without internet access
Accelerated Delivery
Velocity
Established a highly efficient development pipeline that accelerated feature delivery
Learnings
The Technical Deep-Dive (WebRTC & Networking)
Building offline WebRTC taught me the intricacies of local network discovery. Without traditional STUN/TURN servers, I had to deeply understand mDNS and TCP sockets to build a custom signaling system from scratch.
The Architecture/Mindset Shift (Offline-First Data)
Designing a strictly offline-first system completely changed how I approach state management. I learned that handling data synchronization and conflict resolution across independent nodes requires a fundamentally different architecture than standard client-server applications.
The Workflow/Process Angle (CI/CD & Velocity)
Setting up strict CI/CD pipelines, Docker, and structured PR reviews early on wasn't just overhead—it was a velocity multiplier. It taught me that investing heavily in your development workflow upfront is critical for maintaining code quality while iterating quickly.