Skip to content
md ~/projects/cipher-bitirme-projesi
Project archive

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).