Features
Every live module of the app: what it is for, who uses it, what it captures and the rules it applies.
Each card below is one live module of Urvi as it behaves today, written from the code rather than from old specs. A module page lists who can open it, how they get there, every field it captures with its validation, the decision rules it applies (as "when → then" rows), the local tables it reads and writes, the APIs it calls, and what works offline. Unused screens and dead code paths are left out here and listed once on Set-aside code.
Most modules hang off the farmer hub: a farmer is opened from the list, and a set of gate rules (profile complete, land authenticated, member category, role, server switches) decides which tiles open. Unit In-charge users start from the VO tab instead. Read the hub and roles pages first if a rule elsewhere refers to "category", "authenticated land" or "unit login".
Glossary
| Term | Meaning in Urvi |
|---|---|
| APCNF / RySS | Andhra Pradesh Community-managed Natural Farming, run by Rythu Sadhikara Samstha, the programme behind the ap.gov tenant (inferred from programme context; the code only says ap.gov and "RySS") |
| Tenant | The organisation a user belongs to. Urvi serves only RySS (ap.gov). The code still has a branch for other tenants ("Vrutti"); it is unused and listed under Set-aside code |
| IE | A farmer (or SHG/VO member) record. Code comments read it as "Individual Entrepreneur". Has a local UUID (aliasId) and, once synced, a server id shown as "IE ID" (iEOLTPId) |
| OLTP id | The server-side id of a farmer, used as the real join key across tables |
| Work node | A node in the geography and organisation tree: District > Mandal > Village > VO > Habitation > SHG |
| Mandal | Sub-district administrative unit in Andhra Pradesh, between district and village |
| Habitation | A hamlet or sub-village. A cadre picks Village → Habitation → VO at setup |
| VO | Village Organisation, a federation of self-help groups. A work-node level, not a user role |
| SHG | Self-Help Group, a women's collective inside a VO. Farmers not in an SHG are shown as "Non-SHG" |
| Cadre | The default ap.gov field worker. Works on one VO at a time |
| CRP | Community Resource Person. Appears only as farmer designations (Trainee ICRP, H&N ICRP, L3 iCRP); no CRP-specific app logic |
| Unit In-charge (UIC) | Supervisor role (unit-incharge). Gets every assigned VO, lands on the VO tab, can endorse |
| FMT | A role family (fmt_l1, fmt_l2, fmt_l3, fmt_dmmt, fmt_mt). Only fmt_l1 changes the app: it is treated like a Unit In-charge. The expansion is not in the code |
| HAN | Health and Nutrition role (role.ap.gov.han). Read-only access to farmer data |
| FCCC | Role role.ap.gov.fccc. Unlocks the District → Habitation VO filter on endorsements. The expansion is not in the code |
| DPM | District Programme Manager. Per the in-app help text, the only person who can edit authenticated land, and only on the web |
| Member category | Farmer category: Farmer, C4 (Non-Agri) or C5 (POP). Stored as text "<KAP 2021-22 category>/<current category>", for example N-A/Farmer |
| C1-C3 | Land-owning farmer categories from the KAP 2021-22 survey. C1 also appears in NF categories and KAP extents |
| C4 | Non-agricultural member. Blocked from most farm modules (land, crops, ATM, KAP) |
| C5 | "POP" member (expansion not in code; likely poorest of the poor, inferred). Landless or kitchen-garden household: no land check for ATM, one ATM at most, capped at 0.5 acre |
| Category freeze | Once the category is frozen it cannot be changed. Frozen when gapStartDate is later than an admin "last mandatory update" date, or when a Farmer's land is authenticated |
| gapStartDate | When the member category was last set |
| Land authentication | A one-time tick by the field user confirming land details. After it, the parcel is locked unless config allows edits |
| Khata number | Land account (holding) number from revenue records. Mandatory only when config says so and the land type needs it |
| Survey number | The revenue survey plot number of a parcel. Also config-gated |
| RoFR / D-Patta | Forest-rights land and assigned land, two of the land sub-categories |
| Disabled land | Land disabled server-side (by DPM or web). No new crops can be added on it |
| Portfolio | A farmer's crop record on the portfolio service. Holds many line items |
| PLI | Portfolio Line Item: one crop block on one land parcel for a season and month |
| PPLI | Portfolio Product Line Item: one crop inside a PLI, with acres and harvest state |
Tile Id (titleId) | Stable id of a crop block across versions. Every edit creates a new row with the same tile id |
| Crop Plan | A PLI of type PLANNED (seasonal plan). Hard-coded to 2023-24 and hidden by a switch today |
| Crop Actual | A PLI of type SEASON_ACTUAL: the monthly record of what is really sown. Copied forward month to month |
| Season | Current season code from app config (KEY_CURRENT_SEASON_CODE). Crop Actual is scoped to it |
| NF practices | Natural-farming practices from the practice master, at least one per crop block |
| A Grade | A crop type and practice: single main crop with at least 2 associated and 2 bio-diversity crops |
| PMDS | Pre-Monsoon Dry Sowing. A crop type with its own questions (type, kits per acre, sowing mode, 6-35 varieties, 1-999 kg seed) |
| RDS | Rabi Dry Sowing, a crop type shown when enabled |
| S2S | "Seed to Seed": 100% chemical-free natural farming practice. Compact blocks need it |
| NF Category 25-26 | Server-computed label per farmer (C0, PMDS+C1, S2SW and so on), shown as a chip and used as a filter |
| ATM | "ATM model": a small plot with 15-18 vegetables and 2-3 pulses on raised beds. Meant as "Anytime Money" (inferred; the code never expands it). Stored as farming_model type MODEL_TYPE.ATM |
| 365 DKG | 365-day Kitchen Garden: one monthly yes/no question, stored as farming_model type MODEL_TYPE.365_DKG |
| 365 DGC | 365-day green cover, asked in KAP 2025-26 with seasons (PMDS, Kharif, Rabi, RDSS1, RDSS2) (inferred expansion) |
| KAP / AAP | Annual Action Plan. The UI says "KAP 25-26", the code says AAP 2025-26. Extents, cows, DKG and ATM plans with ceilings |
| Compact Block (CB) | A cluster of geofenced S2S crop tiles from several farmers, at least 5 acres in total, managed together |
| Endorsement | Review workflow by a Unit In-charge at VO, SHG and farmer level. Statuses PENDING, ENDORSED, FLAGGED, FOR_REVIEW, with a comment thread |
| Abstract | A VO/SHG/farmer summary report (Excel or PDF) downloaded for endorsement and re-uploaded once signed |
| Geofence | A polygon (KML file) around a land parcel, crop tile or ATM |
| Lead farmer | Farmer role role.ap.gov.leadfarmer, used by the Activity Tracker pickers |
| MIS | The analytics dashboard (daily, monthly, overall counts) |
| App config / switch | Server ref-data entry such as LAND_EXTERNAL_SWITCH; "1" means on |
| Sync ledger | The app's outbox of pending server writes, with dependencies between them |
| Remote app action | An admin command (logout, clear data) the app runs at Home start |
| Device binding | Optional rule that a user may be logged in on one device at a time |