A SceneryStack port of the PhET Ladybug Motion 2D simulation. Explore 2D motion, position, velocity, and acceleration by dragging the ladybug or choosing automated motion paths.
- Single-screen 2D kinematics in a circular play area
- Drag the ladybug directly, or use the Remote Control pad to set position, velocity, or acceleration
- Motion presets: manual, linear, circular, and elliptical paths
- Toggle velocity and acceleration vectors; trace the path as a line, dots, or off
- Record and replay motion with a timeline seek bar
- Default and projector color profiles
- English, Spanish, and French localization
- Progressive Web App with GitHub Pages deployment via GitHub Actions
npm install
npm run icons # generate PNG icons from public/icons/icon.svg
npm start # dev server → http://localhost:5173| Command | Description |
|---|---|
npm start / npm run dev |
Start Vite dev server |
npm run build |
Type-check + production build → dist/ |
npm run preview |
Preview the production build locally |
npm test |
Run Vitest unit tests (includes memory-leak suite) |
npm run test:fuzz |
Optional Playwright fuzz smoke: pointer (?fuzz) + keyboard (?fuzzBoard), with ?ea, 30s each |
npm run test:fuzz -- 90 |
Same fuzz for 90 seconds (--duration 90 or FUZZ_DURATION=90 also work) |
npm run test:fuzz:quick |
Shorter fuzz smoke (10s) |
npm run test:fuzz:long |
Longer fuzz smoke (300s) |
npm run check |
TypeScript type check |
npm run lint |
Biome lint check |
npm run format |
Auto-format all files |
npm run fix |
Lint + auto-fix |
npm run icons |
Regenerate PNG icons from public/icons/icon.svg |
npm run release |
check && lint && build && test, then version patch + push tags |
npm run clean |
Remove dist/ |
| Tool | Version | Purpose |
|---|---|---|
| SceneryStack | ^3.0.0 | Simulation framework |
| Vite | ^8 | Build tool + dev server |
| TypeScript | ^7 | Type-safe JavaScript |
| Biome | ^2.5 | Linting + formatting |
| vite-plugin-pwa | ^1 | PWA + service worker |
GNU Affero General Public License v3.0 — see OpenLyceum org license. The original PhET simulation is Copyright © University of Colorado; this is an independent reimplementation.
See OpenLyceum contributing guidelines. Report bugs via GitHub Issues; use org issue templates.