Reference library
- PM design (05) is design authority
- V2 JSONs (03) are content source, not design source
- rel-mis (02) is reference, not template
All notes
Single-page collated brief: context, programs, pain points, decisions, action items A1–A25, open questions, risks. §10 is the import-pipeline plan.
PM's lifecycle tracking sheet, 12 tabs. Health Screening + Livelihood form designs. BMI/HB/BP/RBS lookup tables. BP New Logic. Workflow status taxonomy. Custom Fields catalog.
13 V2 form JSONs (1000–1012, skip 1012). `order` is the universal join key. Self-link decoder. Three known dump gaps. Content source — not design source.
5 phases × 7 recipes × 3 vendored skills, 82 files. "Four files in parity" output: Doctype JSON + .py + .js + .dart. Validation _id table. ~14 anti-patterns from rel-mis.
Validations come from per-question keys + input_type-implicit, not the null `validation[].condition`. A14c resolved without mForm team input.
What good looks like in the rel-mis Frappe app. Two deltas vs Swasti called out at the top: simpler geography, import-first bootstrap.
Astro 5.14 + Tailwind 3.4 + MDX. Editorial sans, crimson + ochre. Reusable starter for all Dhwani project KBs — this site uses it.
Branch om/offline_improvement v2.1.0. Flutter pub package. Offline-first SQLite sync, dynamic form rendering from Frappe Doctype metadata, bulk-fetch.
Branch om/mobile-sync-bulk-fetch. Frappe v16.13 companion app. mobile_auth.* + mobile_sync.* APIs, bulk-fetch endpoint, Mobile Configuration Single Doctype.
Direct read access to V2 prod Mongo (mformv2_swastihealthprod). 20 collections + 4 derived files exported to JSONL — 185 schemes, 31 docs, full geography (16/31/131/1963/3967), 8 roles, 481 users. Three surprises: `forms` is header-only (questions live in `tempforms`); `formdynamicoptions` has dual semantics (master vs per-response); 107 schemes are actually 185.
PM (Fahimuddin) shared the Livelihood workflow Miro on 2026-05-06; PM (Shweta) finalised the open questions on 2026-05-27. SHG/FPCL qualification → goat-purchase check (FU1) → up to 10 monthly repayment follow-ups (FU2–FU11) → terminal close on either "Loan fully repaid, flow closed" (loan_fully_repaid=Yes) or "Loan Repayment Not Completed" (visit 10 without full repayment). Per-FU statuses: "Nth Month Payment Completed" for Regular / Irregular, "Nth Month Payment Delayed" for Defaulted (SWF-2026-00140 — non-terminal). Sequence gate enforced — Repayment FU is locked until at least one Goat Purchase FU has been filed (SWF-2026-00139). Backend + Flutter UI shipped, verified end-to-end on staging.
PM Fahim walkthrough of V2 production, 2026-05-19. One continuous scroll ordered by V2 `viewSequence` (we were rendering by `order` — wrong). Consent at top with popup gate, single "Additional Details" collapsible at viewSeq 33, Donor/Partner auto-populate on Grampanchayat, "Get" button on Individual Facilitator, post-submit branches on Civic ID Yes/No → Document App vs Scheme+Health. Source of truth for the Member screen rebuild; replaces all earlier IA decisions.
Two GitHub repos (Flutter app + Frappe app), the staging→uat→main branch flow, four environments with distinct Android applicationIds, the local build + Firebase / Play Store release path, and the per-environment Frappe backend layout. Read this before the release runbook.
How a change ships to testers end-to-end: push the Frappe app → staging auto-migrates → build the APK → upload to Firebase → notify on Teams. Includes the three things a NEW doctype needs (files + perms patch + Mobile Configuration manifest row) and the migrate-failure checklist that explains "No options available" dropdowns.
The exact steps to create a field surveyor who can log into the app. A surveyor is just a Frappe User with two roles — the non-obvious gate is "Mobile User" (mobile-control rejects any login without it), and "Swasti Surveyor" grants the data permissions. Session login, no API keys. Includes a troubleshooting table.
Link to the shared Excel tracker, how we triage tester bugs (Frappe-first; Frappe items are ours, not deferred), and a live per-item status snapshot incl. the marital ↔ scheme-eligibility decisions and the open Frappe-side items.
Reading paths
- 01 — Kickoff brief (§10 import plan)
- 05 — PM design sheet
- 03 — V2 JSON shape
- 04 — Conversion skill
Source artefacts
All notes read from kickoff materials at ~/Dhwani/swasti-mform-migration/kickoff/:
kickoff/notes/0X-*.md— the markdown source files for each notekickoff/screenshots/— 22 frames from the screenshare walkthroughkickoff/transcript/full-transcript.md— raw Fathom transcript with embedded action itemskickoff/video/kickoff.mp4— local copy of the recordingraw/mform-forms/— extracted V2 form JSONs (1000–1012)raw/mform-to-frappe-skill/— extracted conversion skill (5 phases, 82 files)raw/pm-design/— PM xlsx + per-tab extracted JSON+MDraw/sdk/frappe-mobile-sdk/— cloned SDK on om/offline_improvementraw/frappe-mobile-control/— cloned Frappe app on om/mobile-sync-bulk-fetch
Last updated 2026-06-05