This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a Remotion + Next.js project for creating promotional video content for Raven House. It uses Remotion for programmatic video generation with React components and Next.js for the web interface/player.
# Install dependencies
bun install
# Start Next.js dev server (web player interface)
bun run dev
# Open Remotion Studio (video editing/preview)
npx remotion studio
# Render video locally
bunx remotion render
# Run linter
bun run lint
# Deploy to AWS Lambda (after configuring .env)
node deploy.mjs
# Upgrade Remotion
bunx remotion upgradeVideo compositions are defined in src/remotion/Root.tsx. Each <Composition> registers a renderable video with an ID. Current compositions:
RavenHouseIntro- Intro animationRavenHouseDemo- Product demo with screenshotsTopCollections,createButton,selectCollectionType,fillDetails- Individual scene compositions
Individual animated scenes live in src/remotion/MyComp/. Each scene is a React component that uses Remotion primitives:
AbsoluteFill,Sequencefor layout/timinguseCurrentFrame(),interpolate(),spring()for animationsstaticFile()to reference assets from/public
Frame rates, dimensions, and timing constants are defined in types/constants.ts:
VIDEO_FPS: 30VIDEO_WIDTH: 1280,VIDEO_HEIGHT: 720- Duration constants in frames and seconds for each scene
src/app/page.tsx- Main player page with composition selectorsrc/app/api/lambda/- API routes for AWS Lambda renderingsrc/components/- UI components for the web player (RenderControls, ProgressBar, etc.)
Place images, audio, and icons in /public/img, /public/audio, /public/icons. Reference them in Remotion components using staticFile('/img/...').
AWS Lambda config is in config.mjs (region, RAM, timeout). Run node deploy.mjs after changing video templates or upgrading Remotion.
Uses flat config format (eslint.config.mjs). The Remotion ESLint plugin is applied only to files in src/remotion/**.