The Problem
EXP Suite 7.0 is an enterprise Environmental Health & Safety platform used by field inspectors, safety officers, and compliance managers at industrial facilities. The previous native iOS and Android apps had diverging feature sets, and maintaining two separate codebases was consuming 60% of the engineering team's capacity on bug fixes alone rather than new feature development.
The most critical requirement was offline functionality. Field workers operate at construction sites, mines, and remote industrial locations with unreliable or zero connectivity. The existing offline mode was a fragile afterthought — forms would lose data mid-inspection, photo attachments would fail to sync, and conflict resolution when multiple inspectors worked on the same facility was essentially non-existent.
Approach
I rebuilt the entire mobile application in Flutter to serve both platforms from a single codebase, using a clean architecture pattern with distinct data, domain, and presentation layers. The offline-first design was the foundation, not an add-on: every feature was built to work without connectivity first, with sync as an enhancement. Local persistence used SQLite with a custom schema that mirrored the server-side data model for seamless round-tripping.
For the sync engine, I implemented a queue-based architecture with automatic retry and exponential backoff. Each data mutation was recorded as an immutable event in a local queue, complete with timestamps and user context. When connectivity resumed, the sync engine processed the queue in order, handling photo uploads as chunked multipart requests to avoid timeouts on slow connections.
Challenges
Conflict resolution in a multi-user enterprise environment was the most complex challenge. When two inspectors edited the same audit checklist offline, we needed deterministic resolution without data loss. I implemented a field-level merge strategy using operational transforms — non-conflicting changes merged automatically, while true conflicts surfaced a clear diff UI for manual resolution by the facility manager.
Photo and document attachments posed unique challenges in offline mode. Inspectors often captured 50+ photos per inspection, and storing high-resolution images locally while keeping the app responsive required a background processing pipeline with progressive JPEG compression, thumbnail generation, and lazy loading with placeholder shimmer effects.
Results
Development velocity increased by 45% after consolidating to a single Flutter codebase. The team shipped features to both platforms simultaneously, eliminating the 2-3 week lag that previously existed between iOS and Android releases. Bug reports related to platform inconsistencies dropped to near zero.
The offline-first architecture reduced data loss incidents from approximately 12 per month to zero over the first six months. Sync reliability reached 99.97%, and the average time to complete a safety inspection decreased by 35% thanks to streamlined workflows and instant photo capture without upload delays.
Interested in working together?
I'm available for senior and lead roles, freelance projects, and technical consulting.
Get in touch