Live site: https://danialht.github.io/Physics-Olympiad-Experiments/
A small Svelte + Vite site collecting virtual physics experiments. Each experiment is a problem statement rendered from Markdown with KaTeX math, often paired with a downloadable program that simulates the experiment's measurements.
Every year the IPhO has a theory section and an experimental section, the latter normally involving real apparatus, measurements, and data analysis. IPhO 2022 was held online for most countries, and with no time to ship apparatus to students, it relied on "virtual experiments" — a format that had already started gaining traction during COVID. We found it a genuinely useful way to practice experimental skills (data collection, error propagation, regression) without physical equipment, so we put together this collection.
- Geometrical and Wave Optics
- Pendulum on Another Planet
- The Fall
- Charged Projectile in a Rotating Field
- Mapping a Mountain
- Magnetic Field of an Orbiting Charge
- Magnetic Blackbox
- Potential of a Charged Disk
- Acoustic Blackbox
npm install
npm run devOpen the local URL Vite prints (defaults to http://localhost:5173/Physics-Olympiad-Experiments/).
npm run buildOutput goes to dist/.
Pushing to main triggers .github/workflows/static.yml, which builds the site with Vite and deploys it to GitHub Pages automatically — no manual gh-pages step needed.
src/experiments/expN.md— problem statement for experiment N, rendered withmarked+ KaTeXsrc/experiments/expN.js— metadata for experiment N (English/Persian title, simulator filename)public/experiments/expN/— downloadable simulator programs, source, and answer keys for experiment Nsrc/App.svelte— page shell, language toggle, and experiment list/detail routingsrc/MarkdownRenderer.svelte— renders experiment Markdown and LaTeX as HTML
MIT — see LICENSE.