All work

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
01

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.

02

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.

03

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.

04

Trace

Role

Flutter app shell, messenger, mail and approval screens, offline data, notification deep links, and failure recovery

Focus

Flutter app shell · BLoC architecture · Offline-first · Real-time sync

Stack

Flutter · Dart · BLoC · Clean Architecture · SQLite · WebSocket · SSE · FCM · go_router · Y-CRDT

Disclosure

Internal business data is excluded. The case focuses on implementation structure and reproducible behavior.

Next work Boundra