Odisha · Public Health Engineering Department

Kandhamal
Drinking Water Supply

A unified, offline-first platform for the Jal Jeevan Mission in Kandhamal.

Audience
Odisha PHED Leadership
Document
Project Briefing
Date
May 2026
Crafted by APIE Technologies
Vision02 / 21
Vision

A platform built for rural water supply

Verifiable. Offline-first. Designed around the field.

Kandhamal Drinking Water Supply gives the Public Health Engineering Department a single, accountable view of every pump, scheme, complaint and operator across the district — even when the field has no network.

1000+
Pumps under management
12+
Blocks across Kandhamal
100%
Offline-capable workflow
< 5m
Target alert SLA to JE
Operators are remote
Local caretakers across hundreds of villages with limited training and no consistent reporting channel.
Network is intermittent
Field areas have weak cellular coverage. Web-only systems do not reach the operator at the pump.
Accountability is weak
Pump downtime, complaint resolution time and quality testing are not traceable end-to-end today.
Platform03 / 21
Platform

Three surfaces, one source of truth

Each role gets the right interface for the task

WEB
Admin Panel
Next.js · for officials
Dashboard, pumps, schemes, complaints, users, timings, analytics, locations and map. Role-gated for super-admin / district-admin / block-admin.
MOBILE
Mobile App
Flutter · for field teams
Map, pumps, complaints, daily logs, sync, offline maps and in-app navigation. Works without network and reconciles on next sync.
CORE
API & Database
Fastify · PostgreSQL
Sync-aware REST API. Push (local changes) + pull (server changes since watermark) with entity-specific conflict resolution.
Reference04 / 21
Reference

Built on the Jal Jeevan Mission tree

We mirror the same hierarchy as ejalshakti.gov.in

  • National portal of the Jal Jeevan Mission, Ministry of Jal Shakti.
  • Confirmed administrative tree: State → District → Block → Panchayat → Village → Habitation.
  • Reports include scheme list, FHTC coverage and water-quality test results.
  • Odisha → Kandhamal browseable on the portal — used as the ground-truth benchmark for our schema.
  • Our app reproduces the hierarchy with offline-first lat/lng on every habitation.
Source: ejalshakti.gov.in/JJM
State
District
Block
Panchayat
Village
Habitation
Hierarchy05 / 21
Hierarchy

The full hierarchy: District to Habitation

Six administrative levels — from district down to individual habitation

Each habitation carries lat/lng and is fully cached on device.

Migration auto-creates a default panchayat per existing block until ejalshakti imports populate the real GP list.
Kandhamal · District Phulbani · Block G. Udayagiri · Block Tumudibandh · Block GP-01 · Panchayat GP-02 · Panchayat GP-03 · Panchayat Village A Village B Village C Hab-1 Hab-2 Hab-3
Schemes06 / 21
Schemes

Two scheme types, one common record

Single Village vs Multi Village systems

SVS / Solar PWS
Single Village
One source feeds one village. Smaller footprint, simpler O&M, often solar.
1 source → 1 village
MVS / Mega PWS
Multi Village
One bulk source feeds many villages. Larger contract, broader monitoring footprint.
MEGA 1 source → many villages
GP-prefixed scheme codes · KDH-PHB-PCH01-SVS-001  ·  Initial bulk-load via ejalshakti CSV  ·  Each scheme carries: agency, contract, source, capacity, status, photos, complaints, daily ops.
People07 / 21
People

The people who use the platform

A mix of login users and directory records

RoleApp login?Purpose
VWSC members
President / Secretary / member. Raise complaints. Log daily ops.
Operator
Local pump caretaker. Pump on/off log. Raise complaints.
JE (Junior Engineer)
Receives alerts on complaints in their panchayat. Resolves and closes.
Sarpanch + PEO
Directory only Per panchayat. Contact info for outreach.
FTK members
Directory only Per village. SHG / AWAC / CRP / BRC. Water-quality testers.
Operations08 / 21
Operations

Daily operations & recognition

A repeatable loop that rewards consistency

Operators and VWSC members submit a daily check on every pump and FHTC. Streak + completeness score awards points; the leaderboard publishes per panchayat, block and district on the public website.

1
Operator submits
Daily pump log
2
System scores
Streak + completeness
3
Leaderboard
Per panchayat / block
4
Recognition
Public website + badges
↻ Repeats every day
Complaints09 / 21
Complaints

Grievance redressal

Many channels in, one ticket, many ways out

SOURCES JE ALERTS 🌐 Department portal 📱 Officer mobile app 👤 VWSC raises on app Operator at the pump IVR phone tree TICKET · #c-1024 Pump dry · Village A Auto-routes to JE in this panchayat 🔔 Push 💬 SMS 💬 WhatsApp Email
Comms10 / 21
Comms

Multi-channel JE alerts

Reach the field within seconds

TARGET SLA
< 5 min
From complaint creation to alert delivery on the JE phone — across whichever channel the JE is reachable on.
Push notification
Native FCM via mobile · arrives instantly when JE is online.
SMS
Provider-agnostic adapter · works on any handset.
WhatsApp
Business API / BSP · richer messages with templates.
Email
Transactional ESP · audit-friendly trail.
Operations11 / 21
Operations

Agencies & contracts

Who runs the scheme, and how to reach them

Agency record
One row per O&M agency
  • Name · registration · address · GSTIN
  • Primary contact · escalation contact
  • Per-scheme contract — tenure, O&M scope, payment terms, signed-doc URL
  • Audit trail of every message sent — channel, recipient, status, timestamp
  • Renewal alerts — contracts expiring < 30 days surface on the dashboard
One-click outreach
Reach the agency from any record
WhatsApp
Business API / BSP — templated messages.
SMS
Provider-agnostic adapter.
Email
Transactional ESP (SES / SendGrid).
Engineering12 / 21
Engineering

Offline-first sync architecture

Why the field experience holds up without network

  • Drift (SQLite) on-device store is the source of truth — every read & write hits local first.
  • WorkManager periodic sync + manual pull-to-refresh on every list.
  • Push (queued local changes) + Pull (server changes since lastSyncedAt watermark).
  • Conflict policy by entity: server-wins for pumps; append-only for timings; accept-creates for complaints.
  • Offline package per district — tiles + GraphHopper graph (~3.6 MB Kandhamal sample built end-to-end).
MOBILE Drift SQLite 3 queued PUSH local changes → server PULL server changes → device API Fastify Postgres SOURCE
Map13 / 21
Map

Maps & navigation that work offline

Already wired into the in-app navigate screen

  • MapLibre raster tile pack per district (~30–80 MB) downloaded on demand.
  • GraphHopper offline routing graph per district + 15 km buffer (~50–80 MB).
  • Routing precedence: native GraphHopper → public OSRM → cached route → straight-line.
  • Top banner badge: "· offline" / "· cached" so the user sees the data source.
  • Android plugin via Flutter platform channel; iOS GraphHopper alternative pending vendor decision.
  • Build pipeline scripted: infrastructure/routing/build-package.sh — Docker-driven.
Routing precedence
1
Native GraphHopper
On-device routing graph
2
Public OSRM
Online · fast fallback
3
Cached OSRM
Per-pump persisted route
4
Straight-line
Last-resort guidance
Media14 / 21
Media

Photos & videos per scheme

Visual evidence at fingertips for every site

  • scheme_media table — type (photo/video), URL, caption, captured_at, captured_by, scheme_id.
  • Stored on DigitalOcean Spaces (already in deployment plan).
  • Mobile capture flow: pick from camera/gallery → uploads on next online sync.
  • Admin gallery view per scheme; public catalogue surfaces a hero image + media count.
  • Per-scheme size cap to be set by PHED.
Photo
Video
Photo
Video
Photo
Video
Public site15 / 21
Public site

A read-only public website

A citizen-facing window into the platform

  • Separate Next.js app (apps/public) at a TBD government-approved domain.
  • Staff directory: Sarpanch / PEO / JE / Operators / VWSC / FTK organised by district → block → panchayat → village.
  • Schemes catalogue: each scheme page shows agency, contract, photos, videos, latest status.
  • Search by village name, scheme code, GP code.
  • No auth. No write paths. CDN-cached.
  • Same Drizzle schema with a read-replica or eventual snapshot.
jjm.kandhamal.odisha.gov.in

Kandhamal Drinking Water Supply

Schemes · Staff · Recognition
Browse
Schemes
Staff
Leaderboard
Channel16 / 21
Channel

IVR — phone-tree intake

For citizens with no smartphone access

OPTIONAL · P3
  • Inbound number via Twilio / Exotel / similar.
  • Caller hears scripted prompts → keypad input or voice recording.
  • System creates a complaint with caller phone, recorded audio URL, transcribed (optional).
  • Auto-routed to the JE for the panchayat associated with the calling number.
  • Scope-flagged optional — useful for citizens unreachable through the app channels.
Call flow
Citizen calls IVR number
Choose: complaint · status · staff
Record voice / press keypad
Complaint created with audio URL
JE alerted via Push / SMS / WA
Engineering17 / 21
Engineering

System architecture

Monorepo layout & data flow

Admin Panel Next.js · recharts · shadcn-style Mobile App Flutter · Drift · MapLibre · GraphHopper API · Sync engine Fastify 5 · Drizzle ORM · Zod · JWT PUSH · PULL · CONFLICT RESOLUTION PostgreSQL 16 central transactional store Drift / SQLite on-device offline cache OSM + GraphHopper tiles + routing graphs
packages/shared (Zod schemas + types) · packages/db (Drizzle schemas + migrations) · infrastructure/routing (Docker pipeline)
Engineering18 / 21
Engineering

Data model at a glance

Key tables — one-line purpose each

Table(s)Purpose
districts / blocks / panchayats / villages / habitationsHierarchical location tree with lat/lng on habitations.
schemes / scheme_villagesPWS schemes (SVS/MVS) + many-to-many links for MVS.
agencies / agency_contactsO&M agencies and their reachable contacts.
vwsc_members / panchayat_officers / ftk_membersDirectory + login records for the people stack.
users (super_admin · district_admin · block_admin · je · operator · vwsc_member · support_staff)Single user table with role-based access.
pumps / timings / daily_ops_logs / user_pointsField operations + recognition points.
complaints / complaint_timelineGrievances + audit trail.
scheme_mediaPhotos and videos attached to schemes.
Roadmap19 / 21
Roadmap

Delivery plan

~3–5 weeks of focused engineering

PhaseDeliverableEffort
ASchema + admin CRUD (panchayat, habitation, scheme, agency, people)4–5 d
A.2Rename engineer → JE0.5 d
A.3VWSC login + role1 d
Bejalshakti import (CSV upload + parser)2–4 d
CDaily ops log + points & leaderboard2–3 d
DMessaging adapter (Push / SMS / WhatsApp / Email)2–3 d
EPublic website (apps/public)2–3 d
FPhotos & videos per scheme (DO Spaces)1–2 d
GIVR (optional)3–5 d
HMobile parity (hierarchy, scheme attach, daily ops, JE inbox)3–5 d
Total ~3–5 weeks of focused engineering · Phases A→C unblock the next milestone demo.
Alignment20 / 21
Alignment

Decisions to align before kickoff

Six points where PHED input shapes the build

?
Messaging providers — preferred WhatsApp / SMS / Email vendors?
?
Public website domain — government subdomain or APIE-hosted at a separate URL?
?
Photo/video size cap per scheme — total MB and per-asset MB?
?
JE alert SLA — how fast must the alert reach them after complaint creation?
?
ejalshakti ingestion — scrape authenticated session vs operator-uploaded CSVs?
?
Mobile / iOS — GraphHopper alternative (Mapbox SDK) or ship online-only on iOS first?
LET’S BUILD IT TOGETHER

Thank you

Questions, decisions, next steps.

Company
Apie Technologies
Private Limited
Phone
+91-88-01-800008
Email
hello@apie.tech
Website
https://apie.tech