What you’ll build
A 1920x1080 video with an animated title that fades in from above — rendered to MP4 on your local machine. The entire composition is a single HTML file.Prerequisites
Create your first video
Scaffold the project
Expected output
my-video
index.html
compositions
.gitkeep
assets
.gitkeep
| Path | Purpose |
|---|---|
index.html | Root composition — your video’s entry point |
compositions/ | Sub-compositions loaded via data-composition-src |
assets/ | Media files (video, audio, images) |
Preview in the browser
Expected output
index.html reload automatically.Edit the composition
Open Three rules to remember:
index.html and replace it with this composition:index.html
- Root element must have
data-composition-id,data-width, anddata-height - Timed elements need
data-start,data-duration,data-track-index, andclass="clip" - GSAP timeline must be created with
{ paused: true }and registered onwindow.__timelines
Requirements summary
| Dependency | Required | Notes |
|---|---|---|
| Node.js 20+ | Yes | Runtime for CLI and dev server |
| bun or npm | Yes | Package manager (bun recommended) |
| FFmpeg | Yes | Video encoding for local renders |
| Docker | No | Optional — for deterministic, reproducible renders |
Next steps
Compositions
Learn how compositions, clips, and nested timelines work together
GSAP Animation
Add fade, slide, scale, and custom animations to your videos
Templates
Start from built-in templates like title-card and video-edit
Rendering
Explore render options: quality presets, Docker mode, and GPU encoding