A browser-based video analysis tool built with SceneryStack. Load a physics video, calibrate real-world distances, and track or digitize object motion with kinematics graphs and CSV export.
- Built-in sample videos, local upload, and webcam recording
- Draggable coordinate system and calibration tool for real-world units
- OpenCV auto-tracking and manual frame-by-frame digitizing with magnifier
- Kinematics graph, data table, measuring tape, and angle tool
- English, French, and Spanish UI, projector color profile, and installable PWA
- OpenCV.js WASM tracking in a Web Worker (requires COOP/COEP headers)
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 test | Run Vitest unit tests (includes memory-leak suite) |
npm run preview | Preview the production build locally |
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 generate-svg-icon | Generate public/icons/icon.svg from bouncing ball script |
npm run icons | Regenerate PNG icons from public/icons/icon.svg |
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 |
| OpenCV.js | 4.x (WASM) | Object tracking |
| vite-plugin-pwa | ^1 | PWA + service worker |
GNU Affero General Public License v3.0 — see OpenPhysics org license.
See OpenPhysics contributing guidelines. Report bugs via GitHub Issues; use org issue templates.