A Remotion-based video project for creating animated AI chat demo videos with React components.
npm install # Install dependencies
npm run dev # Start Remotion Studio
npm run lint # Run ESLint + TypeScript checkssrc/
├── index.ts # Entry point
├── Root.tsx # Root component
├── theme.ts # Design tokens (colors, typography, timing)
├── fonts.ts # Font configuration
│
├── compositions/ # Composition definitions
│ ├── index.tsx # Exports AllCompositions
│ ├── timing.ts # Pre-calculated delays
│ ├── messages.ts # Message content for compositions
│ └── *Compositions.tsx # Grouped compositions
│
├── ChatSequence/ # Main chat interface + charts
│ ├── ChatSequence.tsx # Container with getChartWidget()
│ ├── MessageBubble.tsx # Message with animations
│ ├── schema.ts # Zod schemas
│ └── *Chart.tsx # Chart components
│
└── AthenaInspo/ # Alternative chat format
ChatSequence-EnpsTurnover- eNPS + turnover analysisChatSequence-BurnoutCapacity- Burnout/capacity stressChatSequence-PolicyImpact- Policy impact analysisChatSequence-SkillsCoverage- Skills coverage riskChatSequence-MultiTurn- Text-only conversationChatSequence-Chart- Single chart demo
ChatSequence-Short-MobileChatSequence-Long-Mobile
# Preview
npm run dev
# Render to MP4
npx remotion render ChatSequence-EnpsTurnover --output=out/video.mp4
# Custom resolution
npx remotion render ChatSequence-EnpsTurnover --width=3840 --height=2160- Add message array to
src/compositions/messages.ts - Add composition in
src/compositions/ChatSequenceCompositions.tsx:
{createComposition({
id: "ChatSequence-MyStory",
durationInFrames: 2000,
messages: myMessages,
...DESKTOP,
backgroundImage: DESKTOP_BG,
})}- Create component in
src/ChatSequence/MyChart.tsx - Add to schema enum in
src/ChatSequence/schema.ts - Add mapping in
ChatSequence.tsxgetChartWidget() - Use:
{ chartType: "my-chart", reasoningSteps: [...] }