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
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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
| Dimension | Paper process | Platform |
|---|---|---|
| Form delivery | Printed, filled, photographed, forwarded by hand | Role-specific digital surveys inside one app |
| Consistency | Each officer's own format; reports not comparable | One validated schema per inspection type, every submission complete |
| Evidence | Loose photos, no location or time | Photo, video, GPS and timestamp attached to every submission |
| Low connectivity | Inspection skipped or delayed | Saved offline, queued, synced automatically — 95% sync error resolution |
| Follow-up | Informal, lost between visits | Headmaster confirms fixes; pending → verified → resolved workflow |
| Oversight | Unknown until paper arrived | District 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.