Company · Flutter App · Production · 2025-2026
Bigtablet Intranet
Connecting collaborative work and state inside one Flutter app
Built a Flutter mobile app shell connecting Home, Messenger, and Work apps, then designed cache and real-time boundaries for mail, approvals, notifications, deep links, and partial failures.
- Flutter
- iOS and Android app
- BLoC + SQLite
- State and offline cache
- SSE + FCM
- Real-time and push
Mobile work cannot stop with the network
Messages, mail, approvals, and notifications had to remain understandable when requests were slow, duplicated, or partially failed. Real-time events and push notifications could also arrive out of order.
Separate immediate feedback from eventual truth
I used cache-then-network reads, explicit stale states, and optimistic actions with rollback. SSE handled in-app freshness while FCM handled background delivery, with idempotent reconciliation between them.
Critical transitions were covered with focused tests so reconnects, partial failures, and stale responses produced predictable UI states.
A calmer experience under unreliable conditions
Users can continue reading and acting with clear feedback while the system reconnects. The interface exposes uncertainty instead of silently replacing state.
Trace
Flutter app shell, messenger, mail and approval screens, offline data, notification deep links, and failure recovery
Flutter app shell · BLoC architecture · Offline-first · Real-time sync
Flutter · Dart · BLoC · Clean Architecture · SQLite · WebSocket · SSE · FCM · go_router · Y-CRDT
Internal business data is excluded. The case focuses on implementation structure and reproducible behavior.