stemedb/applications/video-renderer/README.md
jordan 157dbbb9eb feat: Complete Aphoria Phase 8-9 + UAT suite (90/90 tests passing)
## Phase 8: Enterprise Extractor Improvements 
- 14 security extractors (TLS, JWT, SQL injection, XSS, etc.)
- 10 framework-specific extractors (Spring, Django, Rails, etc.)
- Config file security detection (YAML, TOML)

## Phase 9: Autonomous Extractor Generation 
- Shadow mode executor with TP/FP tracking
- Graduation pipeline with confidence thresholds
- Auto-rollback on regression detection
- Cross-project pattern syncing

## UAT Suite Complete (14 scripts, 90 tests)
- test-core-detection.sh (6 tests)
- test-declarative-extractors.sh (5 tests)
- test-domain-frameworks.sh (5 tests)
- test-domain-unreal.sh (3 tests)
- test-llm-extraction.sh (6 tests)
- test-eval-harness.sh (5 tests)
- test-cross-language.sh (3 tests)
- test-precommit-performance.sh (4 tests)
- test-output-formats.sh (8 tests)
- test-drift-detection.sh (6 tests)
- test-exit-codes.sh (12 tests)
+ 3 more scripts

## Other Changes
- Updated roadmap to mark Phase 8-9 complete
- Added .gitignore entries for build artifacts
- Updated pre-commit: 800 line limit, exclude tests/data/cmd

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 22:50:55 -07:00

2.7 KiB

Video Renderer

Remotion-based video renderer for StemeDB marketing and pitch videos.

Compositions

Composition Purpose Aspect Ratio
ExpertConversation TikTok/Reels style product discovery videos 9:16
PitchVideo Pitch presentations with slide → app demo transitions 16:9

Quick Start

# Install dependencies
pnpm install

# Open Remotion Studio (preview/edit)
pnpm studio

# Render PitchVideo
pnpm render:pitch

Pitch Video Structure

The pitch video is built from "blocks" - each with its own MP3 audio file:

Block Type Visual Example
stat Big number with count-up animation "79% of FDA Warning Letters..."
slide Full-screen headline with optional subheadline "With AI making more decisions..."
problem Problem statement with icon "Sources disagree"
feature Feature card with icon and description "Conflict Visibility"
app-demo Dashboard screenshot with animated callouts Skeptic Query page
closing CTA with animated button "Schedule a Demo"

Assets

Audio Files

Place MP3 voiceover files in public/audio/:

public/audio/
├── 01-hook-stat.mp3
├── 02-hook-reveal.mp3
├── 03-problem-1.mp3
...
├── 30-close.mp3
└── background-music.mp3 (optional)

Screenshots

Place dashboard screenshots in public/screenshots/:

public/screenshots/
├── skeptic-query.png
├── weight-distribution.png
├── audit-trail.png
├── sources-page.png
├── impact-preview.png
├── quarantine-source.png
├── time-travel.png
└── circuit-breaker.png

Capture at 1920x1080 for 16:9 aspect ratio.

Scripts

Script Description
pnpm studio Open Remotion Studio for preview
pnpm render:pitch Render full pitch video to out/stemedb-pitch.mp4
pnpm render:pitch:preview Render lower quality preview (faster)
pnpm render:pitch:api Programmatic render with custom script

Customizing the Script

Edit src/data/stemedb-pitch.ts to modify:

  • Block order and content
  • Audio file paths and durations
  • Callout positions and timing
  • Captions and headlines

Audio Sync

Each block's duration is determined by its audio.durationMs value. Update these values after generating audio:

{
  id: 'hook-stat',
  type: 'stat',
  audio: {
    src: 'audio/01-hook-stat.mp3',
    durationMs: 5000,  // Update to actual audio duration
  },
  content: { ... }
}

Development

# Type check
npx tsc --noEmit

# Preview specific composition
pnpm studio  # Then select composition in UI