← back to projects
PROJECT 04 · 2024

Fieldnote

An offline-first data collection tool for field researchers and NGO teams working in areas with unreliable connectivity.

Product Shipped Product engineer
React NativeSQLiteGraphQL

The problem

Field teams collecting survey and monitoring data in rural areas were losing work when connectivity dropped mid-form. Existing tools treated offline mode as an afterthought rather than the default condition.

The approach

Designed offline as the primary state and online sync as the exception, not the other way around. Every form is fully usable with zero connectivity, and sync happens quietly in the background whenever a connection appears.

OBSERVEREDUCEMODELBUILDTESTSHIP

System diagram

Focus or hover a node for what it does.

Field device
Local form store
Background sync
Server record
Team dashboard
A field device holds a complete copy of active forms.
Every response is written locally the instant it's entered.
Sync runs opportunistically, never blocking data entry.
The server reconciles records and flags true conflicts for review.
A team dashboard shows collection progress in near real time when connected.

By the numbers

100%
Forms usable fully offline
21
Interface states
4
Field pilots
6
Releases

Decisions I kept

  • Conflict resolution surfaces the conflict rather than guessing a winner
  • Sync status is always visible, never hidden behind a spinner
  • Forms compile to a single portable file for easy distribution

Things I didn't build

  • Real-time collaboration on the same form — collection happened one device at a time
  • Complex form branching logic beyond simple conditional questions
  • A web version — the field context was overwhelmingly mobile

What changed

Used across four field pilots without data loss during connectivity gaps, which had been the single biggest complaint about the tool it replaced.