An original, static 10–15 minute statistics investigation for learners around age15. Explore graph framing, sampling coverage and association versus causation, then write a cautious conclusion about a fresh fictional headline. All content and data are bundled. No account, payment, runtime AI, analytics or backend is used. The code and lesson text were created with AI assistance; this is an original demonstration, not a client case study or a classroom-validated product.
Tested runtime: Node.js26.2.0, npm11; supported runtime expectation: Node24–26. No packages need installing and there is no dependency lockfile because there are no third-party dependencies.
From this extracted folder:
npm run devOpen http://127.0.0.1:4178. Stop with Ctrl+C. To test and build:
npm test
npm run buildStop the development server before running the production preview on the same port:
npm run previewThe preview serves dist/ at http://127.0.0.1:4178. Equivalent commands without npm are node server.mjs, node --test domain.test.mjs, node build.mjs, and node server.mjs dist. The local server binds only loopback. It is a convenience server, not a public production server.
Upload the five files in dist/ to any HTTPS static host, preserving their names. Build command: npm run build. Output directory: dist. There are no runtime environment variables, secrets, databases or URL rewrite requirements. Every view is client-side state on the same page. The source remains runnable without a hosting account or subscription.
Public working preview: https://data-detective-fieldnotes.jianqiang8977.chatgpt.site. Published on 2026-09-10. Anonymous HTTP access and a full Chrome learner journey were checked after publication. No hosting account is required to use the lesson or run the attached source locally. The public preview is available for evaluation. The public verification record is included in TEST_REPORT.md.
domain.mjs: original synthetic datasets, seeded sampling, calculations and structured-answer feedback.DATA_DICTIONARY.mddocuments every field, unit, formula and simplification.content.mjs: lesson prompts, choices, hints and fresh transfer scenario.EDUCATOR_GUIDE.mdincludes intended outcomes, prerequisites, pacing, differentiation, limitations and three primary educational references.app.js: small in-memory UI state; chart/table rendering; navigation, notebook, feedback and reset. Changing an axis updates its chart in place so pointer dragging and keyboard focus remain intact. Other experiment controls redraw with focus restored.styles.cssandindex.html: responsive original presentation, semantic controls, focus styles and no animation requirement.domain.test.mjs: reproducible calculation, sampling, invalid-state and feedback tests.TEST_REPORT.mdmaps actual evidence to acceptance criteria.build.mjs: copies exactly the five runtime files intodist; no compiler or bundler.server.mjs: local static preview.
Multiple-choice checks explain specific misconceptions and permit unlimited retries. A checked section records practice, not mastery. The final three text fields are never automatically graded: learners use an exemplar and self-review checklist. Editing a finished response removes the completion summary and returns progress from4 to3 until it is reviewed again.
All learner state is held in page memory. Refresh and Reset whole lesson clear it. No learner text is transmitted or saved to local storage. Do not enter personal information. The hosting provider can maintain ordinary access logs and inject Cloudflare browser-security code; the app adds no analytics and sends no learner notes. The independently runnable source includes no provider scripts.
Controls support keyboard access, native range arrow/Home/End keys, selects and non-drag buttons. Essential charts have labelled units and tables. Colours are accompanied by labels; scatter groups also have different shapes. All animation is absent in normal use; a reduced-motion media rule also disables animation/transition if added during styling.
Actually tested on Windows Chrome152.0.7977.83 at CSS viewport widths360,768,1280. Modern Chromium is the verified browser family; current Firefox and Safari are expected to support the native features but were not tested. See TEST_REPORT for exact observations.
Desktop pointer actions at phone-sized viewports simulate learner interaction; no physical touchscreen or child participant was tested. Reduced-motion review found no computed animation in any of the twelve page/viewport combinations; browser emulation additionally confirmed the reduced-motion preference and a touch-start/touch-end onboarding action; a physical OS-preference toggle and screen-reader walkthrough were not performed. These are limits of verification, not claims of accessibility certification.
Reading groups and game correlations are deliberately tidy, synthetic examples, not scientific estimates. Intended age and duration are design goals, not validated learning outcomes. The app uses English only. Notes cannot be recovered after refresh. If JavaScript is disabled, a notice appears; the interactive lesson needs JavaScript and must be served over HTTP(S), not opened through file:// ES-module restrictions.
Original code, synthetic data and lesson text: MIT, copyright2026 Jianqiang Tools. See LICENSE and ATTRIBUTION.md. No downloaded images, fonts or third-party code are bundled.
Jianqiang Tools offers Codex-assisted development for focused frontend fixes and small static interactive pages. For a small project, email jianqiang8977@gmail.com with the expected behavior, a sanitized example or reproduction, and the browser/runtime version. Do not send passwords or production credentials.
A narrowly scoped trial is typically proposed around US$20, subject to reviewing the issue. Scope, acceptance checks, timing and payment are agreed before work starts. AI assistance is part of the workflow and should be acceptable to the client.