Off Chat: A Decentralized Digital Concierge
Bachelor Thesis Project | CTU FEE, Prague
Off Chat is an offline-first, peer-to-peer communication platform built with Flutter. It utilizes Bluetooth Low Energy (BLE) to enable device discovery, relative location tracking (Radar), and secure messaging without any reliance on internet or cellular connectivity.
🛰 The Off-Chat Protocol
Hybrid Discovery Strategy
To overcome standard BLE advertisement limits (31 bytes) and iOS background restrictions, this project implements a specialized binary payload strategy:
1. The 13-Byte Payload
Essential metadata is packed into a compact structure:
- Byte 0: Flags (Platform, Location Visibility)
- Bytes 1-4: Profile Hash (CRC32 of username/avatar)
- Bytes 5-8: Latitude (Float32)
- Bytes 9-12: Longitude (Float32)
2. Connection Logic
Foreground: Data is broadcasted via Scan Response packets for instant peer updates.
Background: On iOS, the app initiates a silent GATT connection to read an "Identity Characteristic" when packets are stripped by the OS.
📱 User Experience Journey
A walk-through of the premium "Aurelian Noir" interface and the application flow.
Entry
The Arrival
Users are greeted by the minimalist splash screen, establishing the high-end digital concierge aesthetic immediately.
Step 01
Node Identification
The onboarding process begins by explaining the decentralized nature of the network. Every device acts as a secure Node.
Step 02
Offline Security
Communication occurs directly between devices. No servers, no logs, no internet required.
The Hub
Node Discovery
The main interface scans for nearby active pulses. Discovered users appear with their custom aliases and proximity status.
Spatial Tracking
The Radar
A custom-built visualization engine. By combining GPS coordinates and the device's internal compass, it paints the relative position of peers in real-time.
Communication
Secure Messaging
Direct peer-to-peer GATT communication. Supports text and media (images) through automated chunking and reassembly protocols.
Management
Identity & Settings
Manage your Node's appearance, toggle spatial visibility, and configure notification alerts.
🏗 Technical Architecture
lib/src/
├── features/
│ ├── onboarding/ # Security setup protocol
│ ├── discovery/ # BLE Scanning & Peer management
│ ├── location/ # Radar math, Compass, & UI Canvas
│ ├── profile/ # Local identity & Settings
│ └── chat/ # Messaging logic & Media chunking
├── core/
│ ├── routing/ # Reactive GoRouter
│ ├── theme/ # Centralized Aurelian Noir
│ └── database/ # Isar persistence layer
└── app.dart # Root Application
🧪 Verification & Quality
Netsim Testing
Simulates BLE radio signals between multiple Android emulators, allowing local verification of discovery and GATT sync logic.
CI/CD Pipeline
GitHub Actions automatically builds release APKs and App Bundles on every push to the master branch.
Off Chat: Decentralizovaný Digitální Concierge
Bakalářská práce | ČVUT FEL, Praha
Off Chat je offline peer-to-peer komunikační platforma postavená na Flutteru. Využívá Bluetooth Low Energy (BLE) pro objevování zařízení, sledování relativní polohy (Radar) a bezpečnou výměnu zpráv bez závislosti na internetu nebo mobilním signálu.
🛰 Protokol Off-Chat
Hybridní Strategie Objevování
K překonání limitů BLE reklamy (31 bajtů) a omezení iOS na pozadí projekt implementuje specializovanou binární strategii:
1. 13-Bajtový Payload
Klíčová metadata jsou zabalena do kompaktní struktury:
- Byte 0: Příznaky (Platforma, Viditelnost polohy)
- Bytes 1-4: Hash profilu (CRC32 jména a avataru)
- Bytes 5-8: Zeměpisná šířka (Float32)
- Bytes 9-12: Zeměpisná délka (Float32)
2. Logika Připojení
Popředí: Data jsou vysílána přes pakety Scan Response pro okamžitou aktualizaci.
Pozadí: Na iOS aplikace zahájí tiché GATT připojení pro přečtení identity, pokud jsou pakety ořezány operačním systémem.
📱 Uživatelská Cesta
Prohlídka prémiového rozhraní "Aurelian Noir" a průběhu používání aplikace.
Vstup
První Dojem
Uživatelé jsou přivítáni minimalistickou úvodní obrazovkou, která okamžitě definuje estetiku digitálního concierge.
Krok 01
Identifikace Uzlu
Proces nastavení začíná vysvětlením decentralizované povahy sítě. Každé zařízení funguje jako zabezpečený uzel.
Krok 02
Offline Bezpečnost
Komunikace probíhá přímo mezi zařízeními. Žádné servery, žádné záznamy, žádný internet.
Centrum
Objevování Uzlů
Hlavní rozhraní skenuje aktivní pulzy v okolí. Objevení uživatelé se zobrazí s vlastními přezdívkami a stavem blízkosti.
Prostorové Sledování
Radar
Vlastní vizualizační engine. Kombinací GPS souřadnic a vnitřního kompasu vykresluje relativní polohu ostatních v reálném čase.
Komunikace
Zabezpečené Zprávy
Přímá peer-to-peer komunikace přes GATT. Podporuje text i média (obrázky) díky protokolu pro automatické dělení a skládání dat.
Správa
Identita a Nastavení
Spravujte vzhled svého uzlu, přepínejte prostorovou viditelnost a konfigurujte upozornění.
🏗 Technická Architektura
lib/src/
├── features/
│ ├── onboarding/ # Protokol zabezpečeného nastavení
│ ├── discovery/ # BLE Skenování & správa peerů
│ ├── location/ # Matematika radaru, Kompas & UI Canvas
│ ├── profile/ # Lokální identita & Nastavení
│ └── chat/ # Logika zpráv & dělení médií
├── core/
│ ├── routing/ # Reaktivní GoRouter
│ ├── theme/ # Centralizovaný Aurelian Noir
│ └── database/ # Perzistentní vrstva Isar
└── app.dart # Kořenová aplikace
🧪 Ověřování a Kvalita
Testování Netsim
Simuluje BLE rádiové signály mezi emulátory Android, což umožňuje lokální ověření logiky objevování a GATT synchronizace.
CI/CD Pipeline
GitHub Actions automaticky sestavuje instalační APK a App Bundle při každém nahrání do hlavní větve.