Skip to content
All case studies
MobileNDA9 min read

Statewide Field Inspection Platform

An offline-first React Native app that replaced paper inspections for thousands of government field officers across schools, hostels and childcare centres — 500,000+ downloads.

Anonymized under NDA — the state, program and agency names are omitted, and screenshots are not shown. The engineering is real.

A state education initiative oversees school performance, student welfare and infrastructure across urban and remote regions, with field teams inspecting facilities every week against safety, attendance, nutrition and operational standards. Before this platform, those inspections were paper. I built the Android and iOS app that made them role-based, offline-capable and verifiable — from the sync engine to the evidence pipeline — and the app went on to 500,000+ downloads.

500k+

Downloads

5

Functionary roles with their own inspection sets

95%

Error-resolution rate on offline/online sync issues

30%

Performance gain for low-end devices

Load-time optimization across 2G/3G regions

Role
Senior Software Engineer (contract)
Timeline
Sep 2022 – Feb 2023
Type
Contract · Government (state)
Scope
Mobile architecture, offline sync, device integrations, release quality

Stack

React NativeTypeScriptReduxRedux SagaRedux PersistReact NavigationNative BaseAxiosFirebase CrashlyticsFirebase AnalyticsJest

Chapter 01

Where it started

Weekly inspections were paper forms — filled by hand, photographed, and forwarded up the chain, or not forwarded at all. Multiple officer roles used inconsistent formats for the same facility, so two inspections of the same school could not be compared, let alone aggregated.

Nobody could answer the oversight questions the program existed for. Which facilities were visited this week, and by whom? Was the broken water point from last month fixed? Headmasters had no visibility into what was reported about their own schools, and district and state leaders had no real-time picture to direct attention with.

Each functionary role — education assistants, engineering assistants, women's police officers, health workers, headmasters and secretariat staff — carried its own long list of surveys covering attendance, infrastructure, meals, safety, health and welfare schemes. One app had to serve all of them without ever showing a user a form that was not theirs.

And the geography was unforgiving: many facilities sit in areas where 2G is a good day. A form that fails to submit on a weak network is a form that never gets filled in again — so connectivity could not be a precondition for any part of the job.

The result of all of it was slow issue resolution, weak accountability, and inspection data that could not survive an audit. The platform had to turn a paper ritual into a verifiable, closed-loop oversight system.

Chapter 02

What I built

The system first, then the people it serves, then the build log of how it came together.

The system

Client

  • React Native app (Android / iOS)
  • Role-based navigation
  • Offline outbox (Redux Persist + Saga)
  • Camera, video, GPS capture

Core

  • Sync engine with retry and NetInfo awareness
  • Form schema per role and facility type
  • Field-level validation before submission
  • Media compression pipeline
  • RSA-encrypted auth, OTP, JWT

Services & data

  • State-provided backend APIs (Axios)
  • Cloud photo-evidence repository
  • District & state analytics dashboards
  • Firebase Crashlytics & Analytics
  • Push notifications and in-app update prompts

Everything a field officer does works offline; the network is only needed to sync.

The React Native app owns the entire field experience: role-scoped forms, evidence capture and the offline outbox. A Saga-driven sync engine watches connectivity and drains the queue in order — compressed media alongside form payloads — into the state's backend APIs, with RSA-encrypted credentials, OTP login and JWT sessions securing every call. Evidence lands in a cloud repository, submissions feed district and state dashboards, and Crashlytics plus analytics watch release quality across thousands of low-end devices.

Who uses it

Education assistant

  • School surveys: attendance, infrastructure, meals, safety, health, kits
  • Capture photo/video evidence with GPS
  • Work offline and sync later

Engineering assistant

  • Infrastructure and works inspections
  • Hostel infrastructure surveys
  • Track completion per secretariat

Women's police / health worker

  • Child and girl safety flows
  • Safety and awareness surveys
  • Nutrition programme checks

Headmaster

  • See inspections reported on their facility
  • Confirm fixes to close the loop
  • Track pending actions in real time

Secretariat / district staff

  • Beneficiary lists and supplement reporting
  • SDG indicator surveys (SDG 1–8)
  • Review, verify and resolve pending actions
  • Monitor coverage dashboards

The build log

  1. 01

    Process mapping before code: every inspection type — safety, nutrition, attendance, complaints, infrastructure — was mapped to the exact workflow its officers follow, before a single form was digitized.

  2. 02

    Role-based navigation: after login the app shows only the inspections assigned to that role, so a headmaster and a police officer see different products inside one binary.

  3. 03

    Offline-first by design: Redux Persist, Saga and NetInfo queue completed forms, photos and video in an outbox and retry when connectivity returns — the network is only needed to sync, never to work.

  4. 04

    Evidence that holds up: photo and video capture, GPS tagging and timestamps attached to every submission, with strong field-level validation so incomplete or malformed reports cannot be submitted at all.

  5. 05

    Bandwidth discipline: hardware-accelerated image and video compression before upload, plus payload and load-time optimization that made the app ~30% faster on the low-end devices officers actually carry.

  6. 06

    A closed loop on findings: issues flow to the headmaster to confirm fixes, a pending → verified → resolved workflow tracks follow-up, and district and state dashboards aggregate trends, delays and high-risk facilities in real time.

Chapter 03

Turning points

The moments that shaped the build, and the roads not taken.

Five roles, dozens of surveys, each with sections like attendance, infrastructure, meals, safety and health — previously submitted in whatever format each officer preferred.
Challenge
Keep large, role-specific survey sets usable in one mobile app, make submissions consistent enough to aggregate, and never show a user a form that is not theirs.
Approach
Form definitions keyed by role and facility type, with role-based navigation scoping each user's world and field-level validation enforcing one schema per inspection type. The workflows came from process mapping with the officers, not from a requirements document.
Result
One app served all functionaries with zero cross-role confusion, and reporting consistency went from 'every officer their own format' to one comparable dataset statewide.
Facilities in remote areas with 2G at best, and officers whose week of work could hinge on one failed upload.
Challenge
Save inspection data without connectivity and sync it later without losing a single submission — on low-end Android devices.
Approach
An offline outbox persisted with Redux Persist, Saga-driven retry keyed to NetInfo changes, compressed media queued alongside form payloads, and payload optimization that cut load times ~30% on weak networks.
Result
Inspections completed offline synced automatically when signal returned; sync-related issues reached a 95% resolution rate, and the app scaled to 500,000+ downloads.
Findings without evidence were disputed, and findings without follow-up quietly expired.
Challenge
Capture verifiable evidence on low-end devices, then close the loop so reported issues actually get fixed — and the fix gets confirmed.
Approach
Camera, video, GPS and timestamps integrated into the form flow with on-device compression; submitted issues route to the facility's headmaster to confirm resolution, and a pending → verified → resolved workflow tracks everything in between.
Result
Every submission carried evidence that holds up, headmasters gained real-time visibility into their own facilities, and 'reported but never fixed' stopped being invisible.
District and state leaders had been directing a statewide program on weeks-old paper summaries.
Challenge
Turn a stream of field submissions from thousands of officers into live, decision-grade oversight.
Approach
Submissions feed district- and state-level dashboards showing coverage (completed vs. total per secretariat), delays and problem clusters, with Crashlytics and analytics instrumenting the app side so reliability itself was measurable.
Result
Leadership could see where attention was needed while it still mattered, audits traced any finding to its evidence, and the ecosystem shifted from paper-dependent to data-driven.

Forks in the road

Product shape

Took this road

One app with role-scoped views

Not this one

One app per functionary role

A single binary to release, update and support, while each role still sees only its own inspections. For a statewide rollout, one release train and one support surface is the difference between maintainable and abandoned.

Connectivity

Took this road

Offline outbox with automatic retry

Not this one

Blocking submit that requires network

The job is done in the field, where 2G is a good day. A form saved locally and synced later is a form that actually gets submitted — the outbox made the network an implementation detail instead of a job blocker.

Evidence pipeline

Took this road

Compress on device before upload

Not this one

Upload originals and process server-side

On 2G/3G the upload is the bottleneck. Hardware-accelerated compression made photo and video evidence practical to send from exactly the places where evidence matters most.

Data quality

Took this road

Strict validation at the point of capture

Not this one

Accept everything, clean up later

Audit-ready data has to be complete when it's created. Mandatory fields and format validation inside the form flow meant the dashboards upstream never had to guess what an officer meant.

Sync orchestration

Took this road

Redux Saga for the sync engine

Not this one

Ad-hoc effects in components

Retry, ordering and conflict handling live in one testable place — which is exactly where the Jest coverage went, and why sync issues could be driven to a 95% resolution rate.

Chapter 04

Did it work?

What changed, what shipped, and the notes I kept for next time.

Paper vs. platform

Paper vs. platform
DimensionPaper processPlatform
Form deliveryPrinted, filled, photographed, forwarded by handRole-specific digital surveys inside one app
ConsistencyEach officer's own format; reports not comparableOne validated schema per inspection type, every submission complete
EvidenceLoose photos, no location or timePhoto, video, GPS and timestamp attached to every submission
Low connectivityInspection skipped or delayedSaved offline, queued, synced automatically — 95% sync error resolution
Follow-upInformal, lost between visitsHeadmaster confirms fixes; pending → verified → resolved workflow
OversightUnknown until paper arrivedDistrict and state dashboards: coverage, delays, high-risk facilities

Shipped and standing

  • 500,000+ downloads for a single statewide field app — one binary serving five functionary roles.
  • Paper inspections replaced by role-specific, validated digital surveys with photo, video and GPS evidence on every submission.
  • Forms completed offline sync automatically when connectivity returns; sync issues reached a 95% resolution rate.
  • Reporting became consistent enough to aggregate — weekly inspections now feed comparable, audit-ready data statewide.
  • Headmasters confirm fixes and district/state dashboards surface coverage, delays and high-risk facilities in real time.
  • A ~30% performance gain kept the app usable on the low-end devices and 2G/3G networks where the work actually happens.

Notes to self

  • Note 01

    In the field, offline is not a feature; it is the baseline. Design the sync engine before the first screen, because everything else inherits its guarantees.

  • Note 02

    Role-scoping inside one app beats many apps: one release train, one support surface, zero confusion for users.

  • Note 03

    Validation at capture time is what makes dashboards trustworthy. Clean data at the source beats any amount of cleanup downstream.

  • Note 04

    A report without a closed loop is a complaint. Routing fixes back through the headmaster for confirmation is what turned inspections into accountability.