Inspiration
Faqir Farms had a Google Form and Sheet for milk entries, but a number alone could not answer the questions an absent owner actually has: Who reported it? When was it received? Was a shift missed? What changed after review? Was the correction preserved?
The worker doing the recording has low literacy and communicates mainly in Punjabi and Urdu. The owner needs trustworthy answers without standing in the field. That shaped the product more than any framework choice.
What it does
Faqir Farms Ops is an Urdu-first, mobile farm-accountability PWA. Milking is its first implemented event type, not the product itself.
A worker can record a complete morning or evening milking event in one flow:
- each cow's measured yield and any cow-specific issue
- where the milk went: sold, caretaker, home, or spoiled
- optional private photo evidence
- device time, trusted server-received time, reporter identity, and the GPS permission/result
- a read-back confirmation before submission
The owner sees shift coverage, review queues, the complete append-only history, approved-only insights, and explicit gaps. A missing shift means only that no record exists; it never claims no milk was produced.
Managers can approve, reject, or return a record with a reason. A correction creates a new linked version and keeps the original intact.
Trust model
This is deliberately not an autonomous accounting or surveillance system.
- AI may later propose structure, but it can never establish a material farm fact.
- GPS is context, not proof of where a photo was taken.
- farmOS will own confirmed farm operations.
- Actual Budget will own approved finance.
- Nothing posts a financial transaction automatically.
How I built it
The app uses Next.js 16, strict TypeScript, Supabase Postgres, Row Level Security, private Storage, server-side security-definer RPCs, and Vercel. Client code cannot write directly to user-facing tables. Deterministic client submission IDs make retries safe on weak connections.
The release checks currently include 43 application tests and 50 local pgTAP database/RLS tests. Every migration is rehearsed locally before it can reach a hosted database.
How I used Codex and GPT-5.6
I used Codex with GPT-5.6 as an engineering and product collaborator, not as an authority over farm facts.
It helped turn rough multilingual field requirements into a bounded workflow, inspect and maintain the repository context, challenge unsafe shortcuts, implement the Urdu-first worker experience, complete the correction/evidence security paths, resolve kilogram-versus-litre aggregation, and build the acceptance tests that prove those boundaries.
The most useful part was the decision loop: specify the trust boundary, implement the smallest slice, run typecheck/lint/unit/database/build checks, and record the confirmed decision. The repository's decision log attributes work accurately, including iterations that used other assistants.
Challenges
The hard problems were operational rather than visual:
- making a low-literacy workflow simple without weakening auditability
- supporting unreliable connectivity without duplicate records
- allowing corrections without destroying history
- showing accountability without turning GPS into false proof
- keeping kilograms and historical litres visible without silently mixing or dropping rows
- separating operational records from approved finance
What I learned
Process before tools matters. The safest architecture came from deciding who may claim a fact, who may review it, and what must remain immutable before choosing integrations.
Absence is also information. A visible missing record is more honest and useful than a dashboard that quietly displays zero.
What's next
The next phase is a reviewed, read-only farmOS mapping for plots, animals, and approved farm events. Actual Budget reporting comes after that, with explicit human approval before any financial posting. Other farm event types—watering, feed, animal health, spray, and harvest—will reuse the same accountability contract.
Built With
- codex
- gpt-5.6
- next.js
- postgresql
- pwa
- row-level-security
- supabase
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.