2026Closed source
Cipher - Final Project
- Go
- Flutter
- WebRTC
- Gomobile
- Firebase
- AES-256-GCM
Overview
A peer-to-peer (P2P) mobile messaging app with no central server, built with a teammate. We compiled our Go communication core for Android and iOS with Gomobile and connected it to a Flutter app. Messages are encrypted with AES-256-GCM and sent directly over WebRTC, falling back to UDP; if they can't be delivered, the encrypted packet is left in a mailbox on Firestore. It supports one-to-one and group chats, file sharing, delivered/read receipts and online status.
01 · Problem
In common messaging apps, messages pass through central servers. If a server is compromised or goes down, both communication and privacy are at risk.
02 · Solution
We designed a P2P architecture that connects devices directly. We wrote the core in Go with a hexagonal architecture: connections use a WebRTC DataChannel with signaling over Firestore, falling back to UDP and then to an encrypted Firestore mailbox. Files are sent as 900-byte encrypted chunks, and message status is tracked with acknowledgements and retries. We shipped the app to TestFlight with GitHub Actions and fastlane.
03 · Outcome
Built as our graduation project, the system was published as "Cipher: An End-to-End Encrypted Peer-to-Peer Instant Mobile Messaging System" in the International Journal of Advanced Networking and Applications (IJANA, Vol. 18, No. 2, 2026).