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.