MabMess: Komplexní technická dokumentace a přehled funkcí
MabMess je moderní, bezpečná a multiplatformní komunikační platforma postavená na frameworku Flutter. Cílem projektu je poskytnout uživateli naprosté soukromí díky end-to-end šifrování (E2EE) a zároveň nabídnout pokročilé funkce, které známe z velkých platforem, ovšem s důrazem na čistotu kódu a vlastní kontrolu nad daty.
1. Architektura systému
Aplikace MabMess je rozdělena do několika logických vrstev, což zajišťuje snadnou údržbu a rozšiřitelnost.
Klientská část (Frontend)
- Framework: Flutter (Dart) pro mobilní zařízení (Android, iOS) a desktop (Windows).
- State Management: Riverpod 2.x – reaktivní správa stavu, která zajišťuje, že se UI okamžitě aktualizuje při změně dat.
- Lokální databáze: Drift (SQLite) – výkonné relační úložiště s podporou reaktivity a migrací schémat.
- Komunikace: WebSocket (Socket.io protokol) pro real-time zprávy a HTTPS (Dio) pro přenos médií a doplňkové API.
Serverová část (Backend)
- Runtime: Node.js.
- Databáze: MySQL (uložiště relací, metadat zpráv a uživatelských profilů).
- Real-time engine: Socket.io pro udržování permanentního spojení s klienty.
- File Storage: Dočasné úložiště pro nahraná média s automatickou čistící logikou (soubory jsou mazány po doručení nebo po krátkém časovém okně).
2. Bezpečnost a šifrování (E2EE)
Bezpečnost je jádrem MabMess. Na rozdíl od běžných aplikací MabMess nepoužívá šifrování pouze na cestě k serveru, ale přímo mezi koncovými zařízeními.
Kryptografický zásobník
- Výměna klíčů: Protokol ECDH (Elliptic Curve Diffie-Hellman) nad křivkou X25519.
- Symetrické šifrování: AES-256-GCM – každá zpráva je zašifrována unikátním klíčem odvozeným z privátního klíče odesílatele a veřejného klíče příjemce.
- Identita: Každé zařízení generuje svůj vlastní pár EC klíčů. Při párování desktopu se privátní identita bezpečně přenáší z telefonu přes jednorázový šifrovaný kanál.
- Safety Numbers: Možnost ověření identity kontaktu pomocí číselného otisku klíče (bezpečnostní kód).
3. Klíčové funkce aplikace
Real-time messaging
- Stavy doručení: Čtyřfázový systém: Čeká se (Pending) -> Odesláno na server (Sent) -> Doručeno na zařízení (Delivered) -> Přečteno (Read).
- Indikátory psaní: Real-time vizualizace, když protějšek píše zprávu, včetně podpory pro skupiny.
- Úpravy a mazání: Podpora pro editaci textu po odeslání a funkci „Smazat pro všechny“ (Delete for all), která fyzicky odstraní data z databází všech příjemců.
- Reakce: Možnost reagovat na jakoukoliv zprávu pomocí emoji.
Multimédia a soubory
- Chytrá optimalizace: Před odesláním aplikace automaticky komprimuje fotky a videa, aby šetřila data (nastavitelný limit až 75 MB).
- Audio zprávy: Integrovaný rekordér s vizualizací waveformy a možností poslechu před odesláním.
- Galerie médií: Přehledné zobrazení všech fotek a videí z chatu v karuselu nebo v celoobrazovkovém prohlížeči.
- Správa dokumentů: Podpora pro PDF a ZIP soubory s integrovaným prohlížečem (pdfrx).
Pokročilé typy zpráv
- Sdílení polohy: Odesílání aktuálních GPS souřadnic s adresou a možností otevření v externích mapách.
- Ankety (Polls): Vytváření interaktivních hlasování v 1v1 i skupinových chatech s real-time aktualizací výsledků.
- Události (Events): Možnost navrhnout termín schůzky a nechat ostatní hlasovat o datech.
4. Multiplatformní synchronizace
MabMess vyniká schopností udržovat všechna vaše zařízení v dokonalém souladu bez nutnosti centrálního cloudu.
Párování přes QR kód
Uživatel se na desktopu nepřihlašuje heslem. Místo toho naskenuje QR kód telefonem. Během tohoto procesu dojde k:
- Výměně veřejných klíčů.
- Zašifrování identity telefonu klíčem zobrazeným v QR kódu.
- Bezpečnému přenosu historie a kontaktů.
Automatický Sync (Peer-to-Peer)
Jakmile se dvě vaše zařízení uvidí online (např. zapnete PC), spustí se ChatSyncService:
- Fáze 1 (Texty): Porovnají se ID zpráv a chybějící texty se okamžitě přenesou.
- Fáze 2 (Média): Velké soubory se přenášejí na pozadí, aby se nezpomalovalo UI.
- Prioritizace: Nejnovější zprávy se synchronizují jako první, aby mohl uživatel ihned pokračovat v konverzaci.
5. Logika serveru (Backend)
Server MabMess funguje jako „inteligentní pošťák“, nikoliv jako archivář.
- Temporary Buffering: Pokud je příjemce offline, server zprávu uloží do fronty. Jakmile je doručena, server ji okamžitě maže.
- Privacy First: Server nikdy nevidí obsah 1v1 zpráv (jsou E2E šifrované). Server vidí pouze metadata nutná pro doručení (komu, od koho, typ).
- Self-Cleanup: Nahrané soubory (obrázky/videa) jsou na serveru uchovávány pouze po dobu nutnou k doručení (standardně 60 sekund po potvrzení doručení).
- Push Brána: Integrace s Firebase Cloud Messaging (FCM) pro probuzení zařízení při příchozí zprávě nebo hovoru.
6. Integrace a UX vychytávky
- Vlastní klávesnice: Možnost přepnout na interní bezpečnou klávesnici, která neposílá data výrobcům OS (Gboard/Samsung).
- Biometrie: Zabezpečení celé aplikace otiskem prstu nebo FaceID.
- Ochrana snímků obrazovky: Možnost zakázat pořizování screenshotů v celé aplikaci.
- Adaptivní design: Rozhraní se automaticky přizpůsobuje od malých telefonů až po širokoúhlé monitory (Sidebar v desktopové verzi).
- Tray integrace: Na Windows se aplikace po zavření okna minimalizuje do systémové lišty (ikonka u hodin), aby uživatel nezmeškal hovory.
7. Systém aktualizací
MabMess obsahuje vlastní mechanismus pro distribuci nových verzí mimo oficiální obchody:
- Android: Aplikace kontroluje version.txt na serveru, v případě nové verze stáhne APK přímo v aplikaci a nabídne instalaci.
- Windows: Stáhne se instalační balíček .exe, aplikace se korektně ukončí a spustí instalátor pro přepsání souborů.
8. Plánované funkce a rozvoj
- WebRTC Videohovory: Plná integrace peer-to-peer hovorů s nízkou latencí.
- AI Asistent: Implementace lokálního nebo zabezpečeného vzdáleného AI pro generování odpovědí nebo sumarizaci dlouhých konverzací.
- Fulltext v DB: Možnost prohledávat tisíce zpráv bleskově přímo na zařízení pomocí FTS5.
- Mizící zprávy: Nastavení času, po kterém se zpráva automaticky smaže ze všech zařízení.
Tento systém je navržen tak, aby poskytoval maximální komfort moderního chatu bez kompromisů v oblasti soukromí. Všechna data patří uživateli a server slouží pouze jako dočasný prostředník pro jejich přenos.