Skip to content
OnlyProjects
BCA · Mobile App DevelopmentFor educational purposes only
Code included

Anganwadi Child Growth Monitoring & Immunisation Due-List App for ICDS Field Work (Java, Room, MVVM)

Monthly weight and height entry, WHO z-score grading, growth charts and immunisation due lists that work offline

Mapped to your syllabusUniversity of Madras CBCS 2023-24 · 320S61 Mini Project (Professional Competency Skill) · Semester 6

Overview

1 min read

Anganwadi Growth Monitor (AGM) is an offline-first Android app, written in Java with Room and MVVM, that helps an anganwadi worker do two jobs properly: monthly growth monitoring of children under six, and follow-up of the immunisation due list. In an Integrated Child Development Services (ICDS) project area, the worker weighs dozens of children every month, plots growth by hand in the MCP card, and must spot children slipping into moderate or severe underweight. Readings that live in a paper register mean a child who missed three weighings is noticed late, and the supervisor's monthly report is compiled from memory.

AGM registers each child (name, date of birth, gender, mother's name, centre code — no government ID numbers), records monthly weight, height and optional MUAC, and grades every reading against the WHO Child Growth Standards: it computes the weight-for-age z-score and classifies the child as normal, moderately underweight (−3 to −2 SD) or severely underweight (below −3 SD), with a referral flag. A colour-coded growth chart per child, a catch-up list of children due for measurement and an immunisation due list from the standard schedule complete the picture.

Everything is stored locally in Room (SQLite), so the app works through power cuts and patchy networks; the supervisor can export or import the centre's data as CSV. The z-score engine, Room schema, MVVM flow and WorkManager reminders are each explainable in the viva — exactly what a strong Madras CBCS mini project needs.

Relevant for
Tamil Nadu
Level
Advanced · 6 weeks · team of 2
Common at
University of Madras, University of Kerala, Guru Gobind Singh Indraprastha University
Updated
Nov 2026

Syllabus alignment

University of Madras · CBCS 2023-24

320S61 · Mini Project (Professional Competency Skill) · Semester 6 · 2 credits · 40 + 60

Subjects this project applies
  • Java (220C4A)
  • RDBMS (320C5B) — SQLite relational design
  • Data Structures (220C3A) — indexed LMS table lookup
  • Web Technology (320C5C) — CSV/JSON interchange formats
How it is evaluated

See your department's project guidelines.

Also fits: Kerala University FYUGP 2024, GGSIPU 4-year BCA 2024, MDSU CBCS 2024.

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

6 min read

Problem statement

An anganwadi worker monitors the growth of 25–40 children under six every month, plus their immunisation status, using a paper register and hand-plotted growth cards. Because each weight must be compared against WHO age-and-gender tables to classify underweight, classification is slow and inconsistent, and a child drifting into severe underweight can be noticed weeks late. Children who miss a weighing are not systematically followed up, immunisation due dates are tracked from memory or wall calendars, and the monthly summary for the ICDS supervisor is compiled by hand from the register.

The problem is to build an offline-first Android app that makes the monthly measurement entry fast and validated, computes the WHO weight-for-age z-score and grade automatically, keeps a growth chart and catch-up list per centre, generates the immunisation due list from the standard schedule, and exports clean CSV summaries for the supervisor — while storing only the minimum personal data and never a government ID number.

Synopsis

Abstract

Growth monitoring is ICDS's core preventive service: a weight trend caught early lets supplementary nutrition and referral act before malnutrition turns severe. In practice the worker records weights in a paper register and a hand-plotted card, classification against WHO standards is mental or lookup-based, and the monthly underweight list for the supervisor is slow and error-prone. This project delivers Anganwadi Growth Monitor (AGM), an offline-first Android app in Java that stores monthly measurements, computes WHO weight-for-age z-scores with the LMS formula, classifies and colour-codes every reading, plots the growth chart and maintains an immunisation due list. It is built with Room on SQLite, MVVM with ViewModel and LiveData, Material Components and WorkManager reminders.

Introduction

I visited an anganwadi centre in an ICDS project area near Chennai (name changed) on a weighing day. She measured 34 children in two hours, wrote each weight in a register and later transcribed it into the MCP card. The classification lines (−2 SD, −3 SD) come from the WHO standards, but applying them means comparing each weight with an age-and-gender table; a tired worker at 4 pm guesses. Children who miss a weighing are found only when the register is reviewed. The Centre's Poshan Tracker is the official platform, but field reality still involves paper first, connectivity gaps and a worker who needs her own simple tool.

Existing system and its limitations

  • Paper register and MCP card — transcription errors, lost cards, no backup.
  • Manual z-score lookup — slow and wrong under time pressure.
  • No automatic catch-up list for children who missed a monthly weighing.
  • Immunisation follow-up kept separately, often from a wall calendar.
  • Monthly reporting to the supervisor is compiled by hand.

Proposed system

  • Child enrolment (name, DOB, gender, mother's name, centre code; no Aadhaar or ID numbers).
  • Monthly measurement entry with range validation and a database-enforced one-reading-per-month rule.
  • A z-score engine implementing z = ((value ÷ M)^L − 1) ÷ (L × S) from WHO LMS tables bundled as JSON, normal (≥ −2 SD), moderate (−3 to −2) and severe (< −3) underweight, with a referral flag.
  • Colour-coded growth chart per child and a centre dashboard (grade counts, missed-weighing list).
  • Immunisation due list from the standard schedule (BCG at birth, Pentavalent at 6/10/14 weeks, MR at 9–12 months, boosters at 16–24 months) with WorkManager reminders.
  • CSV export/import so the supervisor can consolidate centre data offline.

Feasibility study

  • Technical: Java (220C4A) is the programming core of the Madras CBCS BCA syllabus; Room, MVVM and WorkManager are the standard offline-capable Android stack. The LMS computation is a few lines of arithmetic per reading.
  • Economic: runs on the worker's existing mid-range Android phone; no server or data plan needed.
  • Operational: screens follow the weighing-day sequence — pick child, enter weight, see the grade — so training takes minutes.
  • Schedule: six weeks — one study, one design, two build increments, two for testing and the report.

Objectives

  1. 01Design a normalised Room (SQLite) schema for centres, children, monthly measurements and immunisation records.
  2. 02Implement monthly measurement entry with range validation and a database-level one-reading-per-child-per-month rule.
  3. 03Build a z-score engine that applies the WHO LMS formula to weight-for-age tables (0–60 months, by gender) and grades each reading as normal, moderate or severe underweight.
  4. 04Render a colour-coded weight-for-age growth chart per child and a centre dashboard with grade counts and a missed-weighing catch-up list.
  5. 05Generate the immunisation due list from a schedule table (birth to 5 years) and schedule local reminders with WorkManager.
  6. 06Provide password-protected supervisor access, CSV export/import for consolidation, and an append-only correction log.
  7. 07Apply the MVVM pattern with ViewModel, LiveData and a repository layer so the UI, business logic and storage are separately testable.

Scope

In scope

  • One anganwadi centre per installation (25–40 children aged 0–72 months), used by one anganwadi worker on her phone.
  • Child enrolment and exit (transfer/out-migration) with history retained.
  • Monthly weight, height and optional MUAC entry; automatic WHO weight-for-age grading and referral flags.
  • Growth chart, centre dashboard, missed-weighing catch-up list and immunisation due list with local notifications.
  • CSV export/import and a correction log for audited edits.

Out of scope (v1)

  • Server or cloud sync; the app is deliberately offline-first, with CSV as the interchange format (a sync layer is future scope).
  • Height-for-age, weight-for-height and BMI-for-age engines beyond the one table bundled (the engine is written so new tables can be dropped in).
  • Clinical diagnosis — the app flags grades; medical confirmation (for example SAM by weight-for-height and MUAC per WHO protocol) stays with the health staff.
  • Aadhaar, Ration card or any government ID numbers; also out of scope are photo storage and location tracking.

Methodology

The project follows an incremental model compressed into six weeks, with a paper prototype of the entry screen validated with a real anganwadi worker before coding. Each increment ends in a runnable build shown to the guide.

PhaseWeeksActivitiesDeliverable
Study & requirements1Weighing-day observation at the centre, worker interview, feature list, WHO standard studyRequirement notes
Design2ER diagram, Room entities and DAOs, screen wireframes, LMS JSON format, test planDesign document
Increment 13–4Room schema, enrolment, measurement entry, validation, one-reading ruleWorking data layer
Increment 25Z-score engine, grades, growth chart, dashboard, immunisation due list, remindersFull feature set
Testing & hardening6 (first half)Unit tests (LMS boundaries, validation), DAO instrumented tests, worker walkthroughTest report
Documentation6 (second half)Report, screenshots, viva rehearsalFinal submission

Member-wise work split (team of 2). Member 1: requirements study, Room schema and DAOs, enrolment and measurement screens, validation and the correction log. Member 2: LMS table format and z-score engine, grading logic, growth chart, dashboard, immunisation schedule engine and WorkManager reminders. Both wrote the report; the DFD and ER diagram were drawn jointly.

Z-score rule. For a weight W of a child of completed months m and gender g: look up (L, M, S) in the WHO weight-for-age table; z = ((W ÷ M)^L − 1) ÷ (L × S), or z = ln(W ÷ M) ÷ S when L = 0. Grade: normal if z ≥ −2, moderate underweight if −3 ≤ z < −2, severe if z < −3; a missing measurement for the current month puts the child on the catch-up list. Z-scores are rounded to two decimals and stored with the reading so charts and reports never recompute from changed tables.

Architecture & tech stack

2 diagrams · 7 technologies · 2 min read

  • Java 17
  • Android SDK 14
  • Room (SQLite)
  • MVVM (ViewModel + LiveData)
  • Material Components
  • WorkManager
  • MPAndroidChart (industry-standard extra)

AGM is a single-process, offline-first Android app arranged in MVVM layers: Activities/Fragments → ViewModels (LiveData) → Repository → Room DAO → SQLite, with two pure-Java services — the z-score engine and the immunisation schedule engine — sitting beside the repository so they can be unit-tested without Android.

Layer diagram

flowchart TD
  UI["Entry screens, chart, dashboard (Fragments)"] --> VM["ViewModels + LiveData"]
  VM --> REP["Repository"]
  REP --> DAO["Room DAOs"]
  DAO --> DB[("SQLite database")]
  REP --> ZS["Z-score engine (WHO LMS tables)"]
  REP --> IMM["Immunisation schedule engine"]
  IMM --> WM["WorkManager reminders"]
  REP --> CSV["CSV exporter / importer"]

ER diagram

erDiagram
  CENTRE ||--|{ CHILD : enrols
  CHILD ||--o{ MEASUREMENT : "is measured"
  CHILD ||--o{ IMMUNISATION_RECORD : "receives"
  APP_USER ||--o{ CORRECTION_LOG : writes

  CENTRE {
    int id PK
    string centre_code UK
    string project_area
    string worker_name
  }
  CHILD {
    int id PK
    int centre_id FK
    string child_code UK
    string full_name
    date dob
    string gender
    string mother_name
    date enrolled_on
    date exited_on
  }
  MEASUREMENT {
    int id PK
    int child_id FK
    string period_month
    decimal weight_kg
    decimal height_cm
    decimal muac_cm
    decimal z_score
    string grade
    boolean flagged
  }
  IMMUNISATION_RECORD {
    int id PK
    int child_id FK
    string vaccine
    string dose_label
    date given_on
    string source
  }
  APP_USER {
    int id PK
    string role
    string pin_hash
  }
  CORRECTION_LOG {
    int id PK
    int user_id FK
    string entity
    string old_value
    string new_value
    datetime created_at
  }

Design decisions worth defending in the viva. MEASUREMENT is separate from CHILD because one child accrues up to 72 monthly readings, and the chart is a query over that history. The unique index on (child_id, period_month) enforces the one-reading-per-month rule in the database. The z-score and grade are stored on the measurement row — computed once with the bundled WHO tables — so later table updates cannot silently rewrite history, mirroring how immunisation records freeze what was actually given. The immunisation due list is computed, not stored: doses are derived from DOB against a schedule JSON, so only what was administered is inserted (IMMUNISATION_RECORD). WorkManager requests are persisted in SQLite by the library itself, so reminders survive reboots. Passwords (worker PIN) are hashed with PBKDF2 via Android Keystore-backed salt, and all screens behind the PIN enforce a query scope limited to the installed centre.

Modules

6 modules

  1. Module 01

    Enrolment & Centre Register

    Registers children with child code, name, DOB, gender, mother's name and enrolment date; handles exits (migration) with dates while preserving history. Age in completed months is computed from DOB for every table lookup. Owner: Member 1.

  2. Module 02

    Monthly Measurement Entry

    A weighing-day screen that lists children due this month, accepts weight, height and optional MUAC with range validation (weight 1–30 kg for under-sixes), blocks duplicates via the unique (child, month) index, and shows the computed grade immediately. Owner: Member 1.

  3. Module 03

    WHO Z-Score Engine

    Loads WHO weight-for-age LMS tables (0–60 months, boys and girls) from bundled JSON, computes z with the LMS formula including the L = 0 logarithmic case, grades normal/moderate/severe and sets the referral flag; unit-tested at the −2 and −3 boundaries. Owner: Member 2.

  4. Module 04

    Growth Chart & Centre Dashboard

    A colour-coded weight-for-age line chart per child with the −3/−2 SD bands, plus a dashboard of grade counts, referral list and the catch-up list of children who missed the current month. Owner: Member 2.

  5. Module 05

    Immunisation Due List & Reminders

    Derives due and overdue doses from DOB against the standard schedule (BCG at birth, Pentavalent at 6/10/14 weeks, MR at 9–12 months, boosters at 16–24 months), records administered doses, and posts WorkManager reminders for children with overdue doses. Owner: Member 2.

  6. Module 06

    PIN Security, Correction Log & CSV

    PBKDF2-hashed PIN gate for supervisor functions, an append-only log of every edit to measurements and immunisation records, and CSV export/import (Storage Access Framework) so the supervisor can consolidate centres offline. Owner: Member 1.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    Anganwadi Child Growth Monitor

  2. Slide 2

    Where the idea comes from

  3. Slide 3

    Problem

  4. Slide 4

    Objectives

  5. Slide 5

    Tools and justification

  6. Slide 6

    App architecture

  7. Slide 7

    Data design

  8. Slide 8

    The z-score engine

  9. Slide 9

    Who built what

  10. Slide 10

    Demo

  11. Slide 11

    Testing

  12. Slide 12

    Conclusion and future scope

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 16 answered free · 13 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    What is the MVVM pattern and why did you choose it for this app?

    MVVM separates the screen (View) from state-holding logic (ViewModel) and data access (Repository/Model). The ViewModel survives configuration changes like rotation, exposes state through LiveData that the UI observes, and contains no Android UI code, so our grading logic and DAOs are testable without launching a screen. In a weighing-day app, where the same screen is used hundreds of times, that separation keeps behaviour predictable.

  2. 02Concept

    Why Room instead of raw SQLiteOpenHelper?

    Room is an abstraction over SQLite that gives compile-time-checked queries from annotated DAOs, automatic mapping of rows to Java objects, and a migration framework for schema versions. With raw SQLiteOpenHelper every query is an unchecked string, so a typo appears at runtime. Room also flows changes to LiveData automatically, which drives our dashboard without manual refresh code.

  3. 03Concept

    What exactly is a z-score and what does it mean here?

    A z-score states how many standard deviations a child's weight is from the median weight of healthy children of the same age and gender in the WHO reference population. Weight-for-age z below −2 means moderate underweight, below −3 severe. It is the number the anganwadi worker currently finds by eye against a printed chart; our engine computes it exactly from the WHO LMS values.

+13 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

5 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

5 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

269 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

269 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

318 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

318 words · ~2 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

7 sources

  1. Android Developers — Save data in a local database using Room
  2. Android Developers — Guide to app architecture (UI layer, domain layer, data layer)
  3. Android Developers — WorkManager for persistent background work
  4. World Health Organization — Child Growth Standards (weight-for-age tables and z-scores)
  5. Poshan Tracker — Nutrition Monitoring & Management System, Ministry of Women and Child Development, Government of India
  6. Bill Phillips, Chris Stewart and Kristin Marsicano, Android Programming: The Big Nerd Ranch Guide, 5th ed., Pearson
  7. Ramez Elmasri and Shamkant B. Navathe, Fundamentals of Database Systems, 7th ed., Pearson

Cite this bundle

OnlyProjects. (2026). Anganwadi Child Growth Monitoring & Immunisation Due-List App for ICDS Field Work (Java, Room, MVVM): BCA Mobile App Development project bundle [Educational resource]. https://onlyprojects.online/projects/bca-mobile-anganwadi-growth-monitoring-app

Future scope

1 min read

  • Sync layer to a district server (or an export-compatible integration with the government's Poshan Tracker workflow) with conflict-free merge by child and month.
  • Height-for-age and weight-for-height engines plus BMI-for-age by bundling the remaining WHO tables — the engine already takes any LMS table.
  • MUAC grading (colour bands per WHO cutoffs) with the referral protocol printed on screen.
  • Multi-centre mode for supervisors with consolidated dashboards across centres.
  • Tamil/Malayalam localisation and voice prompts for low-literacy use.
  • Growth-alert analytics: children crossing two grade lines in three months, flagged automatically for the supervisor's visit.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.

BCACode included

Web Development

Smart Hostel Management System

Room allocation, complaints and mess billing without the register

  • Next.js
  • TypeScript
  • Node.js
  • +3

intermediate8 wk2 students