Case study · Field Operations / Environmental
FieldNest: Field data, collected anywhere.
Huffman Environmental runs field surveys in places where there is often no signal. Their data collection lived on a commercial SaaS whose per-seat cost grew with the team, and they wanted more control over their data and how the tool behaved. FieldNest is the platform they own instead: an admin web app, an offline-first mobile app and a custom API.
- Client: Huffman Environmental
- Role: Full-stack design & development
- Platforms: Web admin + mobile app + API
- Stack: Flutter, TypeScript, Express, MongoDB
Problem
Field surveys ran on a commercial data-collection SaaS. Every new seat raised the bill, the company had limited say over features, and survey data lived in someone else's product.
Solution
A custom platform owned outright. Admins build forms themselves with a drag-and-drop builder, field crews collect records offline with photos and GPS, and everything syncs into one records table with CSV and PDF exports.
Result
Crews capture records with or without signal and sync when coverage returns. Admins change surveys without filing requests. The subscription is gone and the company owns the platform end to end.
The admin console
Admins log in to a dashboard with recent activity and a notifications feed that shows who created, updated or deleted records in which form. Forms can be searched, sorted, edited, duplicated, published, unpublished or deleted.
- Drag-and-drop form builder with 11 field types: text, numeric, yes/no, date, time, single choice, multiple choice, photo, label, sections and repeatable groups
- Nested fields, form name, description and cover image
- Save as draft, review, then publish when the survey is ready
- Records browsing per form with CSV downloads and per-record PDF reports
The field app
The mobile app is offline-first by design. Records save to a local database with photos and GPS location, so a day of surveying continues with zero bars. When coverage returns, one tap syncs everything to the server.
- Works fully offline: records, photos and location wait in a local database
- Manual sync button pushes the day's records when connectivity returns
- Drafts, submission editing, account management and password recovery
- GPS location saved with every submission
Under the hood
A TypeScript and Node.js API with MongoDB sits behind both clients, with S3 for photo storage, JWT authentication, spreadsheet exports and templated PDF reports. The Flutter client shares one codebase across mobile and web, with a local SQLite database driving the offline story.
- TypeScript, Express and MongoDB, self-hosted by the client
- S3 file storage, JWT auth, generated API docs
- Flutter with Riverpod, a local SQLite database and background-safe sync
- CSV and Excel exports plus per-record PDF reports
Faizan Malik, Flutter and full-stack mobile app developer · contact@faizanmalik.com