针对0–6岁儿童的十分钟里程碑检查,涵盖六大脑发育领域,附纪念报告和家庭活动。
AI 翻译
A ten-minute milestone check for children aged 0–6, across six areas of brain development, with a keepsake report and activities to do at home.
健康TypeScript · JavaScriptGitHub @mois-khan在线运营者未确认
试用过了吗? 点一下就好,无需登录。
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A proof of concept for a parent-led developmental screening tool for children
aged 0–6. A parent enters their child's details, answers around seventy short
questions, and gets a report showing how each of six areas is developing, plus
activities to do at home.
Built to demonstrate design, flow and experience. The milestone content is
real and sourced from public-domain instruments, but it is a working
placeholder — see Content and licensing.
No credentials, no database setup. Assessments persist to localStorage.
To look at a finished report without answering seventy questions:查看完整 README ↗A proof of concept for a parent-led developmental screening tool for children aged 0–6. A parent enters their child's details, answers around seventy short questions, and gets a report showing how each of six areas is developing, plus activities to do at home.
Built to demonstrate design, flow and experience. The milestone content is real and sourced from public-domain instruments, but it is a working placeholder — see Content and licensing.
npm install
npm run dev
No credentials, no database setup. Assessments persist to localStorage.
npm test # 33 tests over the scoring engine and item bank
npm run build # production build
To look at a finished report without answering seventy questions:
npx tsx scripts/seed-demo.ts
Paste the JSON it prints into localStorage under the key
kaushalya.assessments.v1, then open /report/demo.
Three decisions carry the whole thing.
Asking a 26-month-old only the 25–30 month questions tells you that something is wrong without telling you where the child actually is — which is the one thing a parent needs in order to act. So each domain is assessed across a window: the band below the child's age, the band at it, and the band above.
There are thirteen bands across 0–72 months, narrow in infancy where development moves fastest. Each band's upper bound is a CDC checkpoint age, so every item traces to a validated anchor.
If the child does not master the lowest band they were asked, we do not know where they are — the estimate is pinned to wherever we happened to start. So the assessment reaches down a band at a time until they master one, and up one band if they top out.
This matters more than it sounds. An earlier version only reached down on a
near-zero score, which left a cliff: a child at 74% of the 19–24 month band
scored a developmental age of 14 months, while one at 75% scored 24. Ten months
on a one percent difference. tests/scoring.test.ts pins this.
"Three months behind" is serious at nine months old and noise at five years. Each domain produces a developmental age, and the status comes from the ratio:
DQ = (developmental age in months ÷ age in months) × 100
| DQ | Status | What it means |
|---|---|---|
| 90+ | On track | At or ahead of expectation |
| 75–89 | Emerging | A little behind; targeted play, recheck in 3 months |
| 60–74 | Needs focus | Meaningfully behind; daily activity, mention to the doctor |
| < 60 | Worth a closer look | Suggest a developmental paediatrician |
Two corrections the maths needs:
One more rule worth knowing: a single weak domain is never averaged away. Five strong domains and one at 55 average to a comfortable 88, and that child needs attention — so the overall status is pulled down, and the report says which domain did it rather than showing a healthy number beside a cautious label.
app/ landing → intake → assessment → report
components/ UI pieces and the hand-rolled SVG charts
content/ domains, age bands, 300 items, 108 activities ← the data
lib/scoring.ts the engine: pure, no I/O, fully tested
lib/narrative.ts every sentence a parent can receive
lib/store.ts persistence — the only file Supabase changes
supabase/migrations/ the schema this is shaped around
tests/ 33 tests, incl. hand-worked example children
lib/scoring.ts is a pure function with no I/O, so it can be validated against
hand-worked children before any family sees it. The example cases are typical,
advanced, one weak domain, globally behind, preterm, and under four months.
Report wording is template-driven, never model-generated at runtime. This report tells some parents something frightening about their child, and every sentence they can receive should be reviewable in advance.
| Source | Items | Status |
|---|---|---|
| CDC Learn the Signs. Act Early. (2021) | 157 | US federal government, public domain |
| NIDCD/NIH hearing & communication checklist | 41 | US federal government, public domain |
| WHO motor milestone windows (2006) | 3 | Freely reproducible with attribution |
| Authored for this project | 99 | Vision strand, the 61–72 month band, gaps |
ASQ-3 and Denver II are commercial licensed instruments. Their items are not used here and must not be pasted in. The Trivandrum Development Screening Chart (TDSC 0–6) is the closest validated Indian equivalent — 51 items, validated against Denver, 84.6% sensitivity and 90.8% specificity — and is worth licensing if Kaushalya wants an India-normed instrument. The bank is structured so its items could replace these directly.
None of the above requires a code change. It is all data in content/.
supabase/migrations/0001_init.sql is the schema this is already shaped
around. The migration is:
content/ into the content tables.lib/store.ts with Supabase queries.scoreAssessment to a server action and persist domain_scores and
results, so reports are immutable snapshots.Two things are built in from the start because retrofitting them is painful:
item text is stored as { en, hi, kn } JSON, and every assessment records the
item bank version that produced it, so an old report still renders after the
questions are rewritten.
Until then, reports live in one browser — a report link will not open on another device. That needs the database.
item_activities is unused. Activities are currently selected per domain
at the child's developmental stage, which is already better than generic age
advice — a four-year-old with 30-month language gets 30-month language play.
Per-item mapping is the next refinement.This is a screening tool, not a diagnostic one. It is based on parent report and cannot diagnose any condition. Nothing in it should be presented to families as a diagnosis.