Skip to content
VibeFather
Sign up free

2 cases built from this template

Same prompt, different [VARIABLES]. Click one to preview it above.

About this template

Jet Engine Interactive Explainer is a single-page engineering lesson built around an original procedural Three.js turbofan, not a downloaded model or a video. The default case presents Aerofield Lab’s AF-09 high-bypass engine for engineering students. It also fits educators, museum teams, technical creators, and aviation communicators who need to show how air moves through a machine and how each major stage contributes to thrust.

The first screen pairs a large rotating engine with a concise introduction and a working throttle. During the main scroll sequence, the nacelle and core casings open in five states: complete engine, fan and bypass, compressor, combustor, and turbine with exhaust. Cool bypass particles, a separate core stream, and heated exhaust make the two airflow paths visible. The fan and low-pressure components share one visual spool speed, while the high-pressure spool turns faster, helping visitors connect the shafts to the parts they drive.

A throttle lab brings rotation, airflow, and explanatory readouts into one synchronized control. Four stage guides link back to precise positions in the tour, and a short knowledge check turns the page from a visual showcase into a usable lesson. Space Grotesk headings, Inter body copy, mono instrumentation, graphite surfaces, and cyan and amber accents create a clear technical exhibit without a crowded cockpit aesthetic.

Everything is drawn from original Three.js primitives, instanced blade geometry, particles, and inline SVG. No photographs, CAD files, textures, or generated images are required. Five variables change the brand, engine type, audience, action label, and model identifier; an alternate turboprop case demonstrates how the same structure can explain another engine. The finished site is static, responsive, keyboard accessible, touch friendly, and usable with reduced motion or without WebGL.

The template prompt

The live demo was built from exactly this text — nothing added. The other cases only change the values of the [VARIABLES].

# Jet Engine Interactive Explainer

Build this website exactly as described below. Replace the [VARIABLES] with your own values; keep everything else.

## Brief
Build a one-page interactive engineering explainer for [BRAND]'s [ENGINE] ([MODEL_ID]), aimed at [AUDIENCE]. The default is an original high-bypass turbofan modeled entirely from Three.js primitives and custom blade geometry. A large working engine leads into five scroll-driven cutaway states covering the fan and bypass, compressor, combustor, and turbine with exhaust. A synchronized throttle changes two coaxial spool groups and directional airflow particles. When variable values change, redesign the procedural engine architecture, stage data, captions, guide, and quiz to fit the new [ENGINE] while preserving the layout, interaction model, and visual system.

- Audience: [AUDIENCE], plus educators, museum interpreters, technical creators, and aviation enthusiasts who need a clear visual explanation without CAD software or prior thermodynamics knowledge. The default copy welcomes engineering students and explains specialist terms in plain language.
- Goal: Help visitors identify the major engine stages, trace bypass and core airflow, connect each turbine to the components it drives, and test their understanding. The primary action, [PRIMARY_CTA], enters the scroll tour. A persistent throttle and motion pause control make cause and effect inspectable rather than a passive animation.
- Tone: Precise, curious, calm, and educational. Use short declarative explanations, concrete mechanical relationships, and honest labels for simplified sample data. The page should feel like a carefully art-directed engineering exhibit, not an aircraft cockpit, military interface, game HUD, or generic technology landing page.

## Stack
- Framework: Vite 6 + React 19 + TypeScript
- Styling: Vanilla CSS
- Libraries: three (MIT), lucide-react (ISC), @fontsource/space-grotesk (OFL), @fontsource/inter (OFL), @fontsource/ibm-plex-mono (OFL)
- Build: `npm run build` → static files in `dist/`. No backend, no server code, no external APIs.
- Setup:
  - Use Vite with React and TypeScript. Set base: './' and build.sourcemap: false in vite.config.ts; the production command must emit only static files to dist/. Do not substitute another framework, renderer, styling system, physics engine, or state library.
  - Install and import three, lucide-react, and the three listed Fontsource packages locally. Import OrbitControls and RoomEnvironment from three/examples/jsm; use PMREMGenerator with RoomEnvironment for metallic reflections instead of downloading an HDRI.
  - Create src/content.ts as the single source for resolved variable values, navigation labels, hero copy, tour states, geometry parameters, stage records, airflow explanations, quiz questions, and footer copy. Include the default [BRAND], [ENGINE], [AUDIENCE], [PRIMARY_CTA], and [MODEL_ID] values there, rewrite all engine-specific content when those values change, and never leave square-bracket variable tokens visible in the rendered site.
  - Build the default engine along the X axis from original lathed nacelle and casing bands, an exhaust cone, two coaxial shafts, 22 wide fan blades, three low-pressure and six high-pressure compressor rotor rows with static stator rows between them, an annular combustor with 12 small fuel-nozzle markers, one high-pressure turbine row, and three low-pressure turbine rows. Use custom tapered, slightly twisted BufferGeometry blades and InstancedMesh for repeated blades. Keep the model recognizably turbofan-like but do not copy any real engine or CAD design.
  - Use MeshStandardMaterial for titanium, steel, and dark casing, a neutral procedural environment, one broad key light, a cooler rim light, and a code-generated contact-shadow plane. Enable antialiasing and alpha; cap pixel ratio at 1.6 on desktop and 1.35 on mobile. Use one Points geometry for 160 desktop or 80 mobile airflow particles with deterministic seeded paths, and pause requestAnimationFrame work while the scene is offscreen or the document is hidden.
  - Keep one shared React engine state: throttle, motionPaused, showCoreFlow, showBypassFlow, scrollProgress, activeStage, selectedStage, and controlMode. At throttle 0 all rotors and particles stop; at throttle 1 the N1 fan, low-pressure compressor, and low-pressure turbine rotate at 4.8 radians per second while the N2 high-pressure compressor and turbine rotate at 12.5 radians per second. Interpolate linearly between those endpoints and label the 2.6:1 relationship as a visual teaching ratio, not measured RPM. Drive particle velocity from the same throttle value.
  - Create a reusable EngineScene component for the hero, tour, and lab, with shared geometry definitions and only the visible scene rendering. Provide an original inline SVG longitudinal cutaway as a no-WebGL fallback, including intake, fan, compressor, combustor, turbine, bypass duct, exhaust, and stage labels; all controls must still update the HTML readouts when WebGL is unavailable.
  - Use Lucide icons only for ArrowDown, Play, Pause, RotateCcw, Gauge, Wind, Layers3, Check, X, ChevronRight, and Menu. Give every icon button an accessible text label and 44px minimum touch targets.
  - Centralize responsive rules and keyframes in src/styles.css. Support 1440×900 and 390×844 without horizontal overflow or console errors, include visible keyboard focus, and implement prefers-reduced-motion by stopping continuous rotor and particle movement, removing camera easing and entrance animation, and retaining instant cutaway states, manual controls, quiz feedback, and all explanatory content.

## Variables
- [BRAND] — Brand (default: "Aerofield Lab"). Invented educational studio or engineering lab name used in the header, lesson copy, and footer.
- [ENGINE] — Engine subject (default: "High-Bypass Turbofan"). An air-breathing engine that can be modeled from code and divided into four meaningful teaching stages.
- [AUDIENCE] — Audience (default: "engineering students"). Lowercase descriptive audience phrase that fits naturally after for in the hero copy.
- [PRIMARY_CTA] — Primary action (default: "Explore the engine"). Short button label that scrolls to the engine tour and remains suitable for the selected subject.
- [MODEL_ID] — Model identifier (default: "AF-09"). Short invented alphanumeric identifier used in technical labels and the lesson recap, never a real engine designation.
- [CREDIT] — keep a small "Template by VibeFather" link to https://vibefather.ai/t/jet-engine-interactive-explainer in the footer (default: yes; delete this line to remove it)

The copy under Pages & Sections is written for the default values. If your values differ, rewrite every headline, paragraph, label and image for them — same length, tone and structure. Layout, colors, type and motion stay as described.
Keep all copy, image paths and links in one content file (for example `src/content.ts`), keyed by section, so the content can be swapped later without touching components.

Pro template. The design, sections, motion and assets parts of this prompt are for Pro members. The live demo and DESIGN.md stay free.

DESIGN.md

The design system on its own — colors, type, spacing and motion. Apply this look to a project you already have.

---
name: "Jet Engine Interactive Explainer"
colors:
  deep_hangar: "#080B10"
  instrument_panel: "#10161D"
  raised_graphite: "#17212B"
  frost: "#EDF3F6"
  cool_gray: "#92A3AD"
  blueprint_line: "#283642"
  flow_cyan: "#62D7F2"
  combustion_amber: "#FF9A4D"
  brushed_titanium: "#A9B4BA"
  gunmetal: "#4C5A64"
typography:
  display_and_section_headings: { family: "Space Grotesk", weights: [500, 600, 700] }
  body_buttons_guide_rows_and_quiz_answers: { family: "Inter", weights: [400, 500, 600] }
  eyebrows_model_ids_airflow_labels_and_instrument_readouts: { family: "IBM Plex Mono", weights: [400, 500] }
spacing: "Use an 8px base unit, a maximum content width of 1520px, 32px desktop gutters, and 20px mobile gutters. Desktop section padding is 120px 0; mobile is 76px 0. Use a 12-column desktop grid with 24px gaps. Keep body measure between 52 and 68 characters, control gaps at 10–12px, and stage-row padding at 24px 0."
radius: "Use 3px on buttons and inputs, 8px on scene panels and inspectors, and no rounding on major sections or stage-guide rows. Reserve pills for compact airflow legends and circles for transport icon buttons."
---

# Jet Engine Interactive Explainer — Design System

Apply this design system to an existing project. It describes the look and feel only; for the full site, use prompt.md.

## Colors
- **Deep hangar** `#080B10` — Page background and canvas clear color.
- **Instrument panel** `#10161D` — Header, stage inspector, lab controls, and quiz surfaces.
- **Raised graphite** `#17212B` — Control groups, selected rows, and subtle scene panels.
- **Frost** `#EDF3F6` — Primary headings, important values, and high-contrast body copy.
- **Cool gray** `#92A3AD` — Secondary copy and inactive labels; never use for text smaller than 13px.
- **Blueprint line** `#283642` — Hairline borders, construction grid, table rules, and leader lines.
- **Flow cyan** `#62D7F2` — Primary action, bypass airflow, active stage, focus outline, and progress only.
- **Combustion amber** `#FF9A4D` — Combustor, heated core particles, and exhaust highlights only.
- **Brushed titanium** `#A9B4BA` — Three.js blades and bright machined surfaces, with darker variants for depth.
- **Gunmetal** `#4C5A64` — Three.js shafts, casings, stators, and secondary metal surfaces.

## Typography
- **Display and section headings** — Space Grotesk (OFL), weights 500/600/700. Self-host the font files.
- **Body, buttons, guide rows, and quiz answers** — Inter (OFL), weights 400/500/600. Self-host the font files.
- **Eyebrows, model IDs, airflow labels, and instrument readouts** — IBM Plex Mono (OFL), weights 400/500. Self-host the font files.

## Spacing & shape
- Spacing: Use an 8px base unit, a maximum content width of 1520px, 32px desktop gutters, and 20px mobile gutters. Desktop section padding is 120px 0; mobile is 76px 0. Use a 12-column desktop grid with 24px gaps. Keep body measure between 52 and 68 characters, control gaps at 10–12px, and stage-row padding at 24px 0.
- Radius: Use 3px on buttons and inputs, 8px on scene panels and inspectors, and no rounding on major sections or stage-guide rows. Reserve pills for compact airflow legends and circles for transport icon buttons.

## Motion
- On hero entry, fade the copy upward by 14px over 420ms and ease the engine from scale 0.97 and opacity 0 to its final state over 560ms. Rotors and airflow then follow the throttle continuously; there is no separate idle camera spin or decorative background animation.
- Drive every cutaway directly from normalized scroll progress through five explicit keyframes. Interpolate casing opacity, hinge rotation, stage highlight, camera position, and label visibility from the same keyframe records so scrolling cannot drift from the visible engine state.
- Rotate the N1 and N2 groups around the engine X axis at their specified relative speeds. Keep stators, combustor, shafts, and nacelle stationary. Clamp frame delta after tab restoration and use deterministic particle wrapping so returning to the page never causes a jump or burst.
- Enable OrbitControls damping at 0.08 with zoom limited to 0.8×–1.65× of the default camera distance and polar angle limited to 35°–110°. Reset view restores camera, target, and selected stage over 240ms without changing throttle or scroll progress.
- Airflow particles follow two separate deterministic longitudinal paths: the larger bypass annulus remains outside the core and rejoins behind it, while the core stream narrows through compressor rows, expands and shifts from cyan to amber in the combustor, then accelerates through turbine and exhaust. Hide each stream immediately when its legend toggle is off.
- Buttons, stage disclosures, labels, and quiz feedback use 160ms opacity and 2–4px transform transitions. Avoid glitch effects, camera shake, excessive bloom, lens flares, arbitrary part explosions, and unrelated parallax.
- For prefers-reduced-motion, stop rotor and particle loops, remove smoothing and entrance transitions, and update scroll scenes to discrete keyframe states instantly. Throttle changes still update numeric readouts and static flow-path emphasis, and the complete lesson remains usable without animation.

## Imagery
The only hero visual is an original, high-craft procedural Three.js [ENGINE], shown large in three-quarter view with machined metal, a restrained construction grid, fine stage callouts, and a soft contact shadow. The default turbofan must be recognizable immediately through its wide front fan, long nacelle, coaxial compressor and turbine rows, central shafts, annular combustor, and exhaust cone. Casing wedges open progressively to reveal the interior. No photographs, AI-generated images, downloaded 3D models, HDRIs, texture maps, logos, people, or branded objects are used. HTML labels and an SVG leader-line overlay track projected 3D anchors; Lucide supplies only interface icons.

## Tone
Precise, curious, calm, and educational. Use short declarative explanations, concrete mechanical relationships, and honest labels for simplified sample data. The page should feel like a carefully art-directed engineering exhibit, not an aircraft cockpit, military interface, game HUD, or generic technology landing page.

---
Inspired by Kimi 3D Make Showcase — https://www.kimi.com/showcases/3dmake
— Prompt by VibeFather · https://vibefather.ai/t/jet-engine-interactive-explainer · CC BY-NC 4.0 (non-commercial; commercial use needs a VibeFather Pro license) · Request removal: https://vibefather.ai/takedown

Make it yours

  • A university aerospace department: set BRAND to your lab name, ENGINE to your teaching turbofan, and AUDIENCE to first-year mechanical engineering students.
  • A science museum exhibit team: keep the turbofan, set PRIMARY_CTA to Start the tour, and point the stage guides at a kiosk-friendly touch layout.
  • A technical content creator: set BRAND to your channel, ENGINE to a turboprop, and rewrite the quiz to match your audience's level.
  • An aviation training provider: set MODEL_ID to your course engine code, AUDIENCE to maintenance trainees, and adjust the stage captions to your syllabus.

Jet Engine Interactive Explainer: questions and answers

How does the Jet Engine Interactive Explainer show how air moves through a turbofan?

The Jet Engine Interactive Explainer makes airflow visible with three particle streams: cool bypass particles around the core, a separate core stream through the compressor and combustor, and heated exhaust leaving the turbine. As you scroll, the nacelle and core casings open in five states, and the throttle lab ties particle velocity to the same control that spins the rotors, so visitors can see how each stage contributes to thrust.

Can I use the Jet Engine Interactive Explainer template to teach a different engine, like a turboprop?

Yes. The Jet Engine Interactive Explainer template is built so that changing the ENGINE variable redesigns the procedural engine architecture, stage data, captions, guide, and quiz while keeping the layout, interaction model, and visual system. The published demos include both a high-bypass turbofan and a turboprop engine, so the same structure can explain another air-breathing machine with four meaningful teaching stages.

What can I change in the Jet Engine Interactive Explainer template without editing code?

The Jet Engine Interactive Explainer template exposes five variables: BRAND, ENGINE, AUDIENCE, MODEL_ID, and PRIMARY_CTA. Setting BRAND changes the header, lesson copy, and footer, ENGINE and MODEL_ID change the subject and technical labels, AUDIENCE adjusts the hero wording, and PRIMARY_CTA renames the button that enters the scroll tour. All copy lives in one content file so the text can be swapped later without touching components.

Does the Jet Engine Interactive Explainer work if a visitor's browser cannot run WebGL?

The Jet Engine Interactive Explainer template includes an original inline SVG longitudinal cutaway as a no-WebGL fallback, showing intake, fan, compressor, combustor, turbine, bypass duct, exhaust, and stage labels. All controls still update the HTML readouts when WebGL is unavailable, and the template respects reduced-motion settings by stopping continuous rotor and particle movement while keeping instant cutaway states, manual controls, quiz feedback, and explanatory content.

What does the throttle lab and knowledge check add to the Jet Engine Interactive Explainer?

The throttle lab in the Jet Engine Interactive Explainer brings rotation, airflow, and explanatory readouts into one synchronized control. At throttle 0 all rotors and particles stop; at throttle 1 the fan, low-pressure compressor, and low-pressure turbine turn at 4.8 radians per second while the high-pressure compressor and turbine turn at 12.5 radians per second, labeled as a visual teaching ratio rather than measured RPM. A short knowledge check and four stage guides turn the page into a usable lesson.

How do I build a jet engine interactive explainer with AI?

Copy the full prompt (Pro) from this page or run npx vibefather add jet-engine-interactive-explainer, replace [BRAND], [ENGINE], [AUDIENCE] and [MODEL_ID] with your own content, and paste it into Claude Code, Codex, Cursor or another AI coding agent. The live demos were built from exactly that text.

Which AI model built the Jet Engine Interactive Explainer demo?

The High-bypass turbofan case was built by Kimi K3.1 Pro in Kimi Code; the Turboprop engine case was built by DeepSeek V4.1 Flash in DeepSeek Harness. Each build used the published prompt with nothing added, so you can compare the models side by side.

What tech stack and pages does the Jet Engine Interactive Explainer template use?

Jet Engine Interactive Explainer is a single-page site built with Three.js and React, with scroll animation, 3d / webgl and micro-interactions. The prompt fixes the stack so every AI tool builds the same kind of project, and the result runs as a static site you can host anywhere.

Is the Jet Engine Interactive Explainer template free to use?

Jet Engine Interactive Explainer is a Pro template: the brief, stack and variables are public, and the full prompt, the source code of the live demo and a commercial license come with VibeFather Pro. Its DESIGN.md is free for personal projects.

Does the Jet Engine Interactive Explainer template work on mobile?

Yes. Every Jet Engine Interactive Explainer build was tested on a phone-sized screen as well as desktop before it went live, checking layout, text size and touch targets. Open the live demo on your phone, or switch the preview on this page to mobile view, to check it yourself.