A dynamic video presentation generator built with Remotion and a WebSocket backend, integrated into the BMAD agent framework for automated showcase generation.
Live: https://mibracy.github.io/showcase/ Live Demo: https://mibracy.github.io/showcase/remotion/index.html
This project generates professional presentation videos automatically from structured data or scripts. It's used by the BMAD agent framework to showcase capabilities, release notes, features, and more.
- β Script-Driven Generation - Regenerate presentations from Markdown scripts
- β Remotion-Powered - High-quality video rendering with React animations
- β Real-Time Control - WebSocket backend for interactive presentations
- β Theme Consistency - Dark theme matching BMAD's aesthetic
- β Docker-Ready - Containerized development and deployment
- β Make Automation - Simple commands for common tasks
- β Hot Reload - Live preview while editing slides
.
βββ _bmad-output/
β βββ presentations/
β βββ showcase/
β βββ remotion/ # Remotion frontend app
β β βββ src/
β β β βββ Root.tsx # Main composition
β β β βββ slides/ # Slide components
β β β βββ theme.ts # Theme config
β β βββ server/ # WebSocket backend
β β β βββ ws-server.js
β β βββ package.json
β β βββ Dockerfile
β β βββ remotion.config.ts
β βββ data/
β β βββ release-notes.json # Content data
β βββ assets/
β βββ README.md # Showcase-specific guide
βββ Makefile # Build automation
βββ docker-compose.yml # Container orchestration
βββ index.md # BMAD framework index
βββ docs/
βββ SHOWCASE_PROJECT_DOCUMENTATION.md # Detailed docs
- Node.js 18+ Download
- npm (comes with Node.js)
- Git
(Alternatively, use Docker - no Node.js required)
# 1. Install dependencies
make install
# 2. Start both frontend and backend
make start
# Opens Remotion studio at http://localhost:3000
# WebSocket server runs on ws://localhost:3001
# 3. Open browser and preview presentation
# 4. When done, Ctrl+C to stop servers# 1. Start services (runs in background)
make docker-up
# Or: docker compose up -d
# 2. Access Remotion studio
# Open http://localhost:3000
# 3. View logs
docker compose logs -f frontend
docker compose logs -f backend
# 4. Stop services
make docker-down
# Or: docker compose down| Command | Description |
|---|---|
make help |
Show all available commands |
make install |
Install dependencies for both services |
make start |
Start frontend (3000) + backend (3001) |
make start-frontend |
Start only Remotion studio |
make start-backend |
Start only WebSocket server |
make docker-up |
Start with Docker Compose |
make docker-down |
Stop Docker containers |
make docker-build |
Build Docker images |
make clean |
Remove node_modules and builds |
Content lives in _bmad-output/presentations/showcase/data/release-notes.json:
{
"title": "Your Title",
"highlights": ["Point 1", "Point 2"],
"features": [...],
"metrics": {}
}Edit slide components in:
_bmad-output/presentations/showcase/remotion/src/slides/
TitleSlide.tsxHighlightsSlide.tsxFeaturesSlide.tsxFixesSlide.tsxChartSlide.tsxThankYouSlide.tsx
Changes hot-reload in the studio.
Edit remotion/src/theme.ts:
export const theme = {
colors: {
background: '#0f0f23', // Your background
primary: '#64ffda', // Your accent color
// ...
}
};Once you're happy with the preview:
cd _bmad-output/presentations/showcase/remotion
npm run build
# Output: remotion/out/video.mp4You can upload this video to YouTube, Vimeo, or use it in presentations.
The showcase presentation is auto-generated from a script file via the BMAD Showcase agent.
To regenerate:
# From BMAD root (adjust paths as needed)
npx ts-node _bmad/bmb/skills/bmad-agent-presentation/scripts/showcase.ts \
--input _bmad/bmb/skills/bmad-agent-presentation/showcase.md \
--output _bmad-output/presentations/showcase/This re-creates the slide components, data file, and Root composition from the script.
- frontend: Based on Node.js, runs Remotion studio on port 3000
- backend: Based on Node.js, runs WebSocket server on port 3001
Containers connect via presentations-network bridge network. Frontend can reach backend at ws://backend:3001.
./_bmad-output/presentations/showcase/remotion:/app(frontend)./_bmad-output/presentations/showcase/remotion/server:/app(backend)
Mounted for hot-reload in development. Production should copy files and remove volume mounts.
This project is part of the BMAD agent framework (_bmad/). The BMAD framework provides:
- Multiple AI agents (PM, Architect, Dev, QA, UX, etc.)
- Automated workflows for product development
- Skill-based execution system
- This showcases how BMAD can generate video presentations automatically.
BMAD Modules:
| Module | Purpose |
|---|---|
_bmad/core/ |
Core framework |
_bmad/bmm/ |
Build & Manage module |
_bmad/bmb/ |
Builder module (includes Showcase agent) |
_bmad/cis/ |
Creative Intelligence Suite |
_bmad/tea/ |
Test Engineering Architecture |
- Project README: You are here.
- Detailed Docs:
docs/SHOWCASE_PROJECT_DOCUMENTATION.md - Showcase Guide:
_bmad-output/presentations/showcase/README.md - BMAD Index:
index.md
- Create component:
remotion/src/slides/MyNewSlide.tsx - Import in
remotion/src/Root.tsx:import { MyNewSlide } from './slides/MyNewSlide';
- Add to composition sequence:
<Sequence from={myStartFrame} durationInFrames={myDuration}> <MyNewSlide data={myData} /> </Sequence>
Edit remotion/server/ws-server.js. Example to broadcast slide changes:
wss.on('connection', (ws) => {
ws.on('message', (message) => {
const data = JSON.parse(message);
if (data.type === 'SLIDE_CHANGE') {
// Update frontend clients
wss.clients.forEach(client => {
if (client.readyState === WebSocket.OPEN) {
client.send(JSON.stringify({ slide: data.slide }));
}
});
}
});
});Frontend connects from Remotion code if needed:
const ws = new WebSocket('ws://localhost:3001');
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
// React to backend events
};# Find and kill
lsof -ti:3000 | xargs kill -9
lsof -ti:3001 | xargs kill -9Add user to docker group:
sudo usermod -aG docker $USER
# Log out and back inrm -rf node_modules package-lock.json
npm cache clean --force
npm install- Check browser console for errors
- Ensure
src/index.tsxrenders<RemotionRoot /> - Verify
Root.tsxexports composition withCompositioncomponent
- Confirm backend running (
make start-backendordocker compose up backend) - Check
ws://localhost:3001is accessible - Verify frontend connection code (if custom)
@remotion/remotion- Core Remotion libraryreact,react-dom- React 18typescript- TypeScript- (Optional)
tailwindcss,@remotion/tailwind- Styling
ws- WebSocket library
See individual package.json files for exact versions.
MIT - see LICENSE file for details.
- Remotion - Fantastic video creation platform
- BMAD Framework - AI agent orchestration
- Docker - Containerization made easy
- Issues: GitHub Issues
- Documentation: See
docs/ - BMAD Help: Run
make helpor seeindex.md
Made with β€οΈ and Remotion