An interactive educational visualization explaining the React2Shell vulnerability - a critical CVSS 10.0 remote code execution flaw in React Server Components.
A 5-step narrated walkthrough that explains:
hasOwnProperty check that prevents the attackEach step features:
The visualization is fully responsive with a mobile-optimized experience:
The visualization supports three audience levels, each with tailored narration:
| Level | Audience | Style |
|---|---|---|
| Expert | Security engineers, senior devs | Precise terminology, deep mechanics |
| Practitioner | Developers, IT pros | Concepts with practical examples |
| Stakeholder | Leadership, PMs | Business impact, key takeaways |
Users can switch between levels in real-time via the "Target Audience" dropdown in the video controls.
├── scripts/ # Narration scripts (source of truth)
│ ├── expert/
│ │ ├── ssr-narration.txt
│ │ ├── rsc-narration.txt
│ │ ├── exploit-narration.txt
│ │ ├── fix-narration.txt
│ │ └── lessons-narration.txt
│ ├── practitioner/
│ │ └── ... (same files)
│ ├── stakeholder/
│ │ └── ... (same files)
│ └── transcribe.py # Whisper transcription script
├── static/audio/ # Generated MP3 files
│ ├── expert/
│ │ ├── ssr.mp3
│ │ ├── rsc.mp3
│ │ ├── exploit.mp3
│ │ ├── fix.mp3
│ │ └── lessons.mp3
│ ├── practitioner/
│ │ └── ... (same files)
│ └── stakeholder/
│ └── ... (same files)
├── src/lib/data/ # Whisper JSON output (word timestamps)
│ ├── expert/
│ │ ├── ssr-whisper.json
│ │ └── ...
│ ├── practitioner/
│ │ └── ...
│ └── stakeholder/
│ └── ...
└── src/lib/utils/triggers/ # Animation trigger phrases per level
├── expert/
├── practitioner/
└── stakeholder/
npm install
npm run dev
Scripts are in scripts/{level}/:
ssr-narration.txtrsc-narration.txtexploit-narration.txtfix-narration.txtlessons-narration.txtEach script includes trigger phrase comments at the bottom for animation sync.
Upload the script to ElevenLabs and download the MP3.
Drop the MP3 in static/audio/{level}/ with the step name (e.g., static/audio/expert/ssr.mp3).
Single file:
python scripts/transcribe.py ssr expert
python scripts/transcribe.py rsc practitioner
Batch mode (all files for a level):
python scripts/transcribe.py --batch expert
python scripts/transcribe.py --batch practitioner
python scripts/transcribe.py --batch stakeholder
python scripts/transcribe.py --batch all # All 15 files
Options:
--model small - Use a larger Whisper model for better accuracy--dry-run - Preview what would be transcribed without runningThe script outputs JSON to src/lib/data/{level}/ with word-level timestamps.
If the narration wording changed significantly, update the trigger phrases in src/lib/utils/triggers/{level}/ to match the new script.
src/lib/utils/triggers/) finds key phrases per levelsrc/lib/stores/timeline.svelte.ts) syncs audio with animationcurrentTime using getAnimationState()npm run build
npm run preview
Educational purposes. Created for security awareness.