Offline-First Aquaculture Operations Platform
Field-ready feeding, inventory, and approvals for shrimp farms with poor connectivity

Overview
We replaced handwritten feeding sheets with a mobile PWA that works offline on low-end Android, syncs safely when connectivity returns, and enforces farm business rules like two-day edit windows and owner approvals.
Context
Shrimp aquaculture farms in rural India rely on paper feeding reports. Supervisors have limited smartphone experience, connectivity is unreliable, and owners need audit trails, inventory deductions, and PDF/Excel reports — without forcing field staff to learn complex software.
Real-world scenario
A supervisor walks pond-to-pond recording feed quantities in kilograms. The app saves locally even with no signal. When sync runs, late entries trigger owner approval. The owner reviews dashboards, approves pending items, and exports feeding reports for the week.
Constraints
- Offline-first on low-end Android (360px minimum, PWA installable)
- Phone + 6-digit PIN auth — no email required for field staff
- Farm timezone-aware two-day edit rule for supervisors
- Immutable inventory ledger — no editable stock fields
- Idempotent sync to prevent duplicate feeding entries
- English + Telugu-ready i18n architecture
What we built
- Built React PWA with IndexedDB (Dexie) queue and background sync worker
- NestJS API with Prisma on PostgreSQL — role-based owner vs supervisor permissions
- Automatic DOC, Total Daily Feed, and cumulative feed calculations mirroring manual sheets
- Late offline submissions route to owner approval workflow with audit history
- PDF and Excel report generation (PDFKit, ExcelJS) with share/export
- Deployed to GCP Cloud Run (aquafarm.kaana.in) with Cloud SQL Auth Proxy and Secret Manager
Architecture
- Supervisor PWA → local IndexedDB → sync queue → REST API → PostgreSQL
- Owner dashboard: approvals, historical edits, reports, farm/pond/cycle setup
- Cloud Run Jobs for demo seeding and data fix migrations
- Monorepo: npm workspaces + Turborepo (web, api, shared packages)
Reliability & security
- Idempotent API endpoints for offline replay
- JWT access + refresh tokens in Secret Manager
- Health check at /health; deployed image tagged per git commit
Outcomes
- Supervisors adopt immediately — workflow matches existing paper process
- Owners gain real-time visibility and approval control over field data
- Works in ponds with intermittent connectivity
- Production live at aquafarm.kaana.in with dedicated API subdomain
Technology stack
Frontend
Backend
Infrastructure
FAQ
Does the app work without internet?
Yes. Supervisors record feeding offline; data syncs when connectivity returns, with owner approval for late submissions.
What auth do field staff use?
Phone number and 6-digit PIN — no email required for pond supervisors.
Can owners export reports?
Yes. PDF and Excel feeding reports are generated from confirmed entries and inventory deductions.
Related services
For social · LinkedIn hook
Paper feeding sheets don't fail offline. Your software shouldn't either.
- → Problem: handwritten aquaculture reports + no connectivity in the field
- → Solution: offline PWA + sync queue + owner approval workflow
- → Rules: two-day edit window, immutable inventory ledger, idempotent sync
- → Live: aquafarm.kaana.in on GCP Cloud Run + PostgreSQL
Running field operations where connectivity fails? We build offline-first systems with sync, approvals, and audit trails.
Discuss a similar project


