A friendly AI powered open-source alternative to Capcut, Canva.
Discord Twitter Website
✨Features
Advanced Multi‑Track Editing
Edit across unlimited tracks with precise control, snapping, and effortless layer management.
|
Real‑Time Preview
See every change instantly with low‑latency playback—no waiting, no rendering.
|
Fast Export
Render high‑quality videos quickly and export exactly where you need them.
|
 Vibe AI Assistant
Describe your idea and let Kimu generate edits, timing, and layouts automatically.
|
Smart Media Library
Organize by type, tags, and sentiment—search and filter your assets in seconds.
|
Cloud‑Synced Projects
Keep timelines and assets in sync across devices so you can pick up right where you left off.
|
transitions, offline datastore, OAuth based security, change control
and much more...
💻 Development
🛠️ Local Development
Only postgres runs in Docker. All three services run directly on your machine — Vite handles proxying so no nginx is needed.
# Install dependencies
pnpm i
cd backend && uv sync && cd ..
# 1. Start postgres
docker compose -f docker-compose.dev.yml up -d
# 2. Start FastAPI (terminal 1)
cd backend && uv run uvicorn main:app --reload --port 3000
# 3. Start renderer (terminal 2)
pnpm dlx tsx app/videorender/videorender.ts
# 4. Start frontend (terminal 3)
pnpm dev
Open http://localhost:5173. The Vite dev server proxies requests transparently:
/backend/* → FastAPI at :3000
/renderer/* → Renderer at :8000
/* → React Router SSR (Vite)
Requirements
- Node.js 20+
- Python 3.12+
- pnpm
- Docker (for postgres only)
🚀 Production
Everything runs in Docker behind nginx. One command:
docker compose up -d
With Custom Domain:
PROD_DOMAIN=yourdomain.com docker compose up -d
nginx routes:
/backend/* → FastAPI
/renderer/* → Renderer (video rendering)
/* → Frontend (React Router SSR)
Ports:
- HTTP:
80 (redirects to HTTPS)
- HTTPS:
443
⚙️ Environment Configuration
Copy .env.example to .env and fill in your values:
# Local/Docker Postgres (dev or self-hosted prod):
DATABASE_URL=postgresql://videoeditor:videoeditor@localhost:5432/videoeditor
# — OR — Supabase Session Pooler (cloud):
DATABASE_URL=postgresql://postgres.REF:[email protected]:5432/postgres
DATABASE_SSL=true # required for Supabase; omit for local/Docker Postgres
# BetterAuth
BETTER_AUTH_SECRET= # generate with: openssl rand -hex 32
BETTER_AUTH_URL=https://yourdomain.com # http://localhost:5173 for dev
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# AI Features (optional)
GEMINI_API_KEY=your_gemini_api_key
Environment Variables Explained:
DATABASE_URL: PostgreSQL connection string. Use the local Docker URL for dev/self-hosted prod, or the Supabase Session Pooler URL for cloud.
DATABASE_SSL: Set to "true" when connecting to Supabase or any remote DB that requires SSL. Leave unset for local/Docker Postgres.
BETTER_AUTH_SECRET: Random secret used to sign sessions — generate with openssl rand -hex 32.
BETTER_AUTH_URL: The public URL of the app. Used by BetterAuth for OAuth callbacks.
GOOGLE_CLIENT_ID/SECRET: Google OAuth credentials — register at console.cloud.google.com.
GEMINI_API_KEY: Required for AI-powered video editing features.
📃TODO
We have a lot of work! For starters, we plan to integrate all Remotion APIs. I’ll add a proper roadmap soon. Join the Discord Server for updates and support.
❤️Contribution
We would love your contributions! ❤️ Check the contribution guide.
📜License
This project is licensed under a dual-license. Refer to LICENSE for details. The Remotion license also applies to the relevant parts of the project.
评论