How mrdolph/af2s works
AF2S is an educational physics and mathematics site centered on interactive simulations: learners browse a catalog, open a topic, adjust parameters, and explore animated visualizations and readouts. Topic pages coordinate canvas components; sampled code shows simulation components calling physics helpers and reporting live values back to pages. The product also includes embeddable simulations, a passcode-gated Minitab area with visit analytics, and an AI prompt endpoint. The README is only the Next.js starter template, so broader capabilities are evidenced by the source tree and sampled catalog/page code; unsampled wiring is left out.
Main entry points: oscillations/page.tsx Oscillations page · simulation Simulation canvases · minitab/page.tsx Minitab pages · redis.ts Analytics storage
Components 20
Learning experience
- Simulation catalog
src/app/simulations/page.tsx - Oscillations page
src/app/simulations/oscillations/page.tsx - Motion topics
src/app/simulations/consequences-of-motion/page.tsx - Mathematics pages
src/app/mathematics/page.tsx - Embed pages
src/app/embed/layout.tsx
Simulation runtime
- Simulation canvases
src/components/simulation - Simulation graphs
src/components/simulation - Simulation controls
src/components/simulation/SimulationControls.tsx - Physics models
src/lib/physics - Canvas sizing
src/hooks/useResponsiveCanvasSize.ts
Minitab access and analytics
- Minitab pages
src/app/minitab/page.tsx - Minitab authentication
src/app/api/minitab-auth/route.ts - Admin authentication
src/app/api/minitab-admin-auth/route.ts - Visit tracking
src/app/api/minitab-track/route.ts - Analytics summary
src/app/api/minitab-analytics/route.ts
API and integrations
- Analytics storage
src/lib/analytics/redis.ts - AI prompt bar
src/components/ai/PromptBar.tsx - AI prompt API
src/app/api/ai/route.ts - Prompt parser
src/lib/ai/parse-prompt.ts
Other components
- Learner
Connections 23
- Learner → Simulation catalog: browse
- Simulation catalog → Oscillations page: opens topic
- Learner → Oscillations page: adjusts parameters
- Oscillations page → Simulation canvases: renders topic
- Motion topics → Simulation canvases: selects canvas
- Oscillations page → Simulation graphs: renders graph
- Oscillations page → Simulation controls: uses controls
- Simulation canvases → Physics models: calculates models
- Simulation canvases → Oscillations page: reports ticks
- Oscillations page → Canvas sizing: sizes canvas
- Mathematics pages → Simulation canvases: renders visuals
- Embed pages → Simulation canvases: renders visuals
- Learner → Minitab pages: opens tools
- Minitab pages → Minitab authentication: submits login
- Minitab authentication → Analytics storage: records login
- Minitab pages → Visit tracking: tracks visit
- Visit tracking → Analytics storage: records visit
- Minitab pages → Analytics summary: requests summary
- Analytics summary → Analytics storage: reads summary
- Minitab pages → Admin authentication: submits admin login
- Learner → AI prompt bar: enters prompt
- AI prompt bar → AI prompt API: submits prompt
- AI prompt API → Prompt parser: parses prompt