ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
An interactive, educational 3D visualization of the conceptual stages of ballistic-missile defense. Fictional environment, simplified physics.
Translation pending
EducationTypeScript · CSSGitHub @SubashRandikaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
An interactive, cinematic 3D visualization that explains, step by step, the conceptual stages of ballistic-missile defense systems works.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
An interactive, cinematic 3D visualization that explains, step by step, the conceptual stages of ballistic-missile defense: launch, ascent, radar detection, track establishment, threat assessment, the decision to engage, interceptor launch, interception and post-event analysis.
Educational visualization. The place, objects, distances, timings and the "Patriot-like" defensive system are fictional and deliberately simplified. Nothing here represents the real performance, parameters or procedures of any real system.Read the full README ↗An interactive, cinematic 3D visualization that explains, step by step, the conceptual stages of ballistic-missile defense: launch, ascent, radar detection, track establishment, threat assessment, the decision to engage, interceptor launch, interception and post-event analysis.
Educational visualization. The place, objects, distances, timings and the "Patriot-like" defensive system are fictional and deliberately simplified. Nothing here represents the real performance, parameters or procedures of any real system.
A procedural landscape: rolling hills, forests, a meandering river with flowing water, and roads linking a fictional battery to the town it protects.
A living town: Aldmere has houses with gardens, apartment blocks, shops with flats above, an office tower, warehouses, a church and a town hall. It has streets with markings, sidewalks and crossings, two stone bridges, street lights and parked cars, and its windows light up at night.
Realistic explosions:
Sound:
Every sound is synthesized in the browser, so there are no audio files and no licenses. Switch it off with M or set the volume in Settings.
Everything is first-party: models, textures and sounds are generated by the project itself. Nothing is downloaded from third parties, and the app works offline once loaded.
| Area | Technology |
|---|---|
| App | Next.js 16 (App Router), React 19, TypeScript (strict) |
| 3D | three.js, React Three Fiber, drei, postprocessing (bloom, ACES tone mapping) |
| Simulation | Framework-free deterministic engine in src/engine (no React, no three.js) |
| State and data | Zustand stores, Zod-validated scenarios |
| UI | Tailwind CSS 4, Radix primitives, lucide icons |
| Animation | React Three Fiber frame loop; GSAP for camera transitions |
| Sound | Web Audio API, with the sound material generated in a Web Worker |
| Testing | Vitest, Testing Library, Playwright |
Requirements: Node.js 22+ and pnpm 10 (corepack enable provides pnpm).
pnpm install
pnpm dev # http://localhost:3000
Production build:
pnpm build && pnpm start
AeroShield is a standard Next.js app with no backend, database, API keys or environment variables.
pnpm build. It first regenerates the 3D models (pnpm assets:generate, which uses the tsx dev dependency), so the build environment must install dev dependencies. Most hosts do by default.pnpm start. It serves the production build and uses the PORT environment variable if set.packageManager field in package.json.On Vercel, import the repository: it detects Next.js and pnpm from the lockfile, and the default settings work. On any other Node.js host:
pnpm install --frozen-lockfile
pnpm build
PORT=8080 pnpm start
After deploying, put the URL at the top of this README (the line marked LIVE DEMO).
| Command | What it does |
|---|---|
pnpm dev | Development server with hot reload |
pnpm build | Regenerates the GLB models, then builds for production |
pnpm start | Serves the production build |
pnpm typecheck | Strict TypeScript check |
pnpm lint | ESLint (includes a rule keeping the engine free of React/three) |
pnpm format | Prettier (with Tailwind class sorting) |
pnpm test | Unit and component tests (Vitest + Testing Library) |
pnpm test:e2e | End-to-end tests (Playwright; run pnpm build first) |
pnpm verify | Typecheck, lint, unit tests and build in one go |
pnpm assets:generate | Exports the procedural models to public/assets/models/*.glb |
First-time Playwright setup: pnpm exec playwright install chromium.
| Key | Action |
|---|---|
Space | Play / pause |
→ | Step to the next timeline event |
. | Step a single simulation tick |
R | Restart |
1–6 | Camera: Cinematic, Free, Follow target, Follow interceptor, Overview, Top down |
L | Open Learn |
I | Toggle the inspector |
H | Compact or expand both side panels |
M | Sound on / off |
Shift + D / ?debug | Developer diagnostics |
Timeline focused: ← → Home End | Scrub (Shift for 5 s steps) |
On wider screens the side panels follow playback: while the simulation plays they compact to a one-line summary (current stage, decision chain) so the scene stays in view, and they open again when you step (→), pick a timeline event, or the run ends. A plain pause leaves them compact. Each panel has its own compact/expand button; a panel you compact yourself stays compact until you open it. Turn the automatic behaviour off under Settings → Compact panels while playing.
src/
engine/ Deterministic simulation (pure TypeScript: no React, no three.js)
scenarios/ Scenario data, validated with Zod at load
features/ Runtime (engine ↔ app bridge), education content, camera modes, timeline maths, sound start-up
stores/ Zustand stores: simulation view, scenario, camera, UI, settings
components/ React UI: HUD, timeline, panels, accessible primitives
three/ React Three Fiber scene: environment, town, entities, overlays, explosions, cameras
audio/ Synthesized soundscape (Web Audio), driven by simulation state and the camera
app/ Next.js entry (layout, page, global styles)
e2e/ Playwright tests
scripts/ Asset generation
docs/ README screenshots
The 3D view needs WebGL 2 (current Chrome, Edge, Firefox and Safari). Without WebGL the app explains why, and the timeline, controls and explanations keep working. Phones get a simplified layout and the low graphics profile automatically. Sound needs the Web Audio API (all current browsers); where it is missing, the sound controls are hidden.
This project visualizes concepts at the level of a museum exhibit. It does not and must not contain real coordinates, real engagement envelopes, classified or proprietary specifications, real guidance or firing solutions, deployment optimization, or vulnerability analysis. See CONTRIBUTING.md.