Skip to content

What Data We Store for Every River — The Schema

Every river page in Nadikosh is built from a fixed set of data fields — the same fields for every river, every time, without exception.

This page documents those fields: what they mean, what they contain, and how they behave.


Think of a schema as a form that every river must fill out completely.

Just like a passport has fixed fields — name, date of birth, nationality — every river in Nadikosh has fixed fields: length, origin, zone, pollution index, and so on.

The page you see when you visit a river is built automatically from that filled-out form. Nobody writes the page by hand. This is why every river page looks identical in structure, even if the data inside is completely different.


Here is what the frontmatter of a river page looks like — using Kaveri as the example:

kaveri/overview.mdx — frontmatter
---
river_name: "Kaveri"
also_known_as: ["Cauvery", "Kaveri Amma", "Ponni"]
zone: "kaveri"
river_type: "main-stem"
origin_point: "Talakaveri, Kodagu district, Karnataka"
confluence_or_mouth: "Bay of Bengal, near Poompuhar, Tamil Nadu"
length_km: 800
states_covered: ["Karnataka", "Tamil Nadu", "Kerala", "Puducherry"]
flow_direction: "east-flowing"
avg_annual_flow_cumecs: 678
pollution_index: "moderate"
is_holy: true
last_data_updated: 2026-03-01
triveni_net_id: "TN-KVR-001"
status: "published"
---

FieldWhat it meansExample
river_nameThe official or most widely recognised name of the riverKaveri
also_known_asOther names the river is known by — regional, historical, devotionalCauvery, Ponni
zoneWhich of the 9 major river zones this river belongs tokaveri
river_typeWhat kind of river this is — main river, tributary, or independentmain-stem
origin_pointWhere the river begins — place name and stateTalakaveri, Kodagu, Karnataka
confluence_or_mouthWhere it ends — either joining another river, or reaching the seaBay of Bengal, Tamil Nadu
length_kmApproximate length in kilometres800
states_coveredWhich Indian states the river flows throughKarnataka, Tamil Nadu, Kerala
flow_directionDoes it flow toward the east coast or west coast?east-flowing
avg_annual_flow_cumecsAverage amount of water flowing per second, per year678 cumecs
pollution_indexOverall pollution level — updated weeklymoderate
is_holyIs this river considered sacred in Hindu, Jain, or other traditions?true
last_data_updatedWhen was this river’s data last reviewed or updated?2026-03-01
triveni_net_idThe ID used by Triveni-net to find live sensor data for this riverTN-KVR-001
statusIs this page published, a stub, or coming soon?published

Not all 15 fields behave the same way. They belong to one of three layers:

Layer 1 — Static fields (manually curated, rarely change)

These facts are entered once, verified, and updated only if a genuine error is found or a major geographic/political change occurs (e.g., a state bifurcation).

river_name · also_known_as · zone · river_type · origin_point · confluence_or_mouth · length_km · states_covered · flow_direction · is_holy


Layer 2 — Periodic fields (updated via weekly automated rebuild)

These fields reflect real-world conditions that change over time but do not need to be updated in real time.

pollution_index · avg_annual_flow_cumecs · last_data_updated

The site rebuilds from the latest database state once a week via a cron job. Every river page shows a “Last updated X days ago” badge sourced from last_data_updated.


Layer 3 — Live fields (handled by Triveni-net, not stored in this DB)

Real-time readings — dissolved oxygen, BOD, turbidity, current flow rate — are not stored in the Nadikosh database at all.

They are fetched and displayed by a React component that mounts at the top of each river’s health page and communicates directly with Triveni-net. Nadikosh only stores the triveni_net_id field to tell the component which river to query. All states (live, offline, no sensor, error) are handled inside the component.

Triveni-net: Early Phase

Live data is not yet connected. The component currently shows a “coming soon” state for all rivers. triveni_net_id is reserved as a forward-looking field.


The status field controls how a river page is presented to readers:

StatusWhat the reader sees
publishedFull page rendered. All available data shown.
stubPage exists with a banner: “This river has been identified. Data entry is in progress.” Only river_name, zone, river_type are guaranteed to be filled.
coming-soonZone or folder exists but individual river page not yet created. A placeholder card shown in the zone overview grid.

The 15-field schema covers the structured, queryable facts about a river.
It is intentionally narrow.

For content that cannot fit into a structured field — a specific dam controversy, a unique geological formation, a contested administrative boundary — each river has a /misc page where free-form markdown content can live.

See Folder & Page Structure for how /misc fits into the overall page anatomy.


Continue reading: Folder & Page Structure →