Fieldkit · Environmental research

Offline-first data collection for field ecologists

A survey app that keeps working in valleys without signal and syncs safely when researchers get back in range.

Role
Engineer and technical adviser
Year
2025
Duration
4 months
Stack
TypeScript, SQLite, Service Workers, Go, CRDTs
Concentric rings with scattered points, representing survey locations syncing to a central store

Outcomes

  • Offlineby default, with no lost surveys during field trials
  • 2researchers editing the same site record without conflicts
  • 1 weekto add a new survey type, down from a full release cycle

Demo content: replace these figures with your own, verifiable results.

The challenge

Researchers recorded species counts on paper because the previous app lost data when it went offline mid-survey.

Surveys change every season, and each change used to need a developer and a new app release.

The approach

  • Audited the old app and wrote up why it lost data before proposing a rebuild.
  • Stored every survey locally in SQLite and synced with a simple, append-only change log instead of last-write-wins.
  • Defined survey forms as versioned JSON schemas so the research team can add questions without a release.
  • Tested sync on throttled and flaky networks in CI, not just on the office Wi-Fi.

The result

The team ran a full season of field work on the new app. Survey types are now edited by the researchers themselves and reviewed in a pull request.

More work

Related projects

Available for new projects from January 2027

Need something similar?

Tell me what you're building and where you're stuck. I'll reply within two working days with honest next steps, even if I'm not the right fit.