Offline-first field inspection platform for Flaha Agri Tech landscape, farm, irrigation, and softscape work in Qatar.
Field inspectors capture geotagged photos with a single category (Defect / Normal / Note), optional notes, and GPS accuracy metadata. Data is stored locally first and synced when connectivity returns. Managers review color-coded maps on a web dashboard, edit remarks/procedures/status, and export client-ready PDF reports.
Core field loop: Login → Select project → High-accuracy GPS → Photo + category → Save offline → Sync → Dashboard edit → PDF report.
| Item | State |
|---|---|
| Product name | FlahaINSPECT (legacy docs may say FlahaINSPCT) |
| Repository | Docs + design baseline; application code not scaffolded yet |
| Design of record | Docs/FlahaINSPECT - Technical Design (MVP).md |
| Layer | Technology |
|---|---|
| Mobile | Flutter (com.flaha.inspect) — offline-first, Drift SQLite, TUS photo upload |
| API | NestJS — JWT auth, projects, inspections, sync, reports |
| Worker | Separate Node process — PDF, thumbnails, durable jobs table |
| Web | Next.js (App Router) + Tailwind + Leaflet — manager dashboard |
| Data | PostgreSQL + PostGIS, S3-compatible object storage, tusd |
| Node monorepo | pnpm + Turborepo (apps/api, apps/web, apps/worker, packages/*) |
| Mobile layout | Sibling Flutter app under apps/mobile (own toolchain/CI) |
Target layout (from technical design):
FlahaINSPECT/
apps/
api/ # NestJS
worker/ # background jobs
web/ # Next.js
mobile/ # Flutter
packages/
api-client/ # OpenAPI-generated TS client
infra/
docker-compose.yml
Docs/ # product & design docs (current)
openapi/
Makefile
| Document | Purpose |
|---|---|
| Technical Design (MVP) | Locked scope, architecture, schemas, API, PR plan |
| Overview | Product feasibility and roadmap notes |
| System Schematics | Flow diagrams / system sketch |
| Offline sync | Outbox and sync strategy |
| Resumable photo uploads | TUS approach |
| Offline map tile caching | Field maps without connectivity |
| External GNSS receivers | Post-MVP precision GPS |
| UI mockups | Dashboard and mobile screen references |
This repo is set up for a secure monorepo baseline:
.gitignore— secrets, build artifacts, Flutter/Node/Docker local data.gitattributes— LF in repo, binary assets, Linguist documentation flags.editorconfig— consistent indentation and charsetSECURITY.md— vulnerability reporting
Do not commit: .env files, private keys, keystores, Firebase/Google service account JSON, real production credentials, or local Postgres/MinIO volume data.
Scaffolding will follow the technical design PR plan (monorepo + Docker Compose + Flutter app). Until then:
- Read the Technical Design (MVP).
- Keep secrets out of git; use
.env.examplepatterns once apps exist. - Prefer pnpm for Node workspaces; Flutter via its own CLI in
apps/mobile.
# After monorepo scaffold (not available yet)
# pnpm install
# make up # docker compose: Postgres+PostGIS, MinIO, tusd, api, worker
# pnpm --filter @flaha/inspect-api dev
# pnpm --filter @flaha/inspect-web dev
# cd apps/mobile && flutter pub get && flutter runSee SECURITY.md for how to report vulnerabilities. Field photos and site locations are sensitive operational data — treat them as confidential by default.
Proprietary — Flaha Agri Tech. All rights reserved unless a license file is added later.