Add a standalone effects package that extracts effect definitions, GLSL shaders, and registry from @opencut/web into a reusable package. ## Package (@opencut/effects) - Registry: register/get/has/getAll effects with Map-based lookup - Categories: COLOR_TONE, ARTISTIC, BEAUTY with display metadata - Types: Effect, EffectDefinition, EffectContext, WebGLEffectPass ### Effects (24 total) **Color & Tone (8):** brightness, contrast, saturation, hue-shift, temperature, exposure, gamma, color-balance **Artistic (10):** blur, vignette, film-grain, sharpen, pixelate, chromatic-aberration, glitch (2-pass), neon-glow (2-pass), sketch (2-pass), oil-paint (2-pass) **Beauty (6):** skin-smooth (bilateral filter), face-brighten, eye-enhance, teeth-whiten, blush, slim-face ### Presets (12) - Instagram: clarendon, juno, lark, gingham, valencia, nashville - Cinematic: teal-and-orange, vintage-film, noir, bleach-bypass - Beauty: soft-glow, portrait ## Web App Integration - Migrate blur effect from web app to package - Update imports via re-export pattern (backward compatible) - Pass time param for animated effects (film-grain, glitch) - Add face-mesh service using MediaPipe Face Mesh (lazy-loaded) - Beauty effects auto-detect faces and pass EffectContext - Async renderVisual for face detection pipeline ## Tests 152 unit tests covering registry, all effect definitions, and presets |
||
|---|---|---|
| .cursor | ||
| .github | ||
| .vscode | ||
| apps/web | ||
| docs | ||
| packages | ||
| .dockerignore | ||
| .gitignore | ||
| .npmrc | ||
| AGENTS.md | ||
| LICENSE | ||
| README.md | ||
| biome.json | ||
| bun.lock | ||
| docker-compose.yml | ||
| package.json | ||
| tsconfig.json | ||
| turbo.json | ||
README.md
|
OpenCutA free, open-source video editor for web, desktop, and mobile. |
Sponsors
Thanks to Vercel and fal.ai for their support of open-source software.
Why?
- Privacy: Your videos stay on your device
- Free features: Most basic CapCut features are now paywalled
- Simple: People want editors that are easy to use - CapCut proved that
Features
- Timeline-based editing
- Multi-track support
- Real-time preview
- No watermarks or subscriptions
- Analytics provided by Databuddy, 100% Anonymized & Non-invasive.
- Blog powered by Marble, Headless CMS.
Project Structure
apps/web/– Main Next.js web applicationsrc/components/– UI and editor componentssrc/hooks/– Custom React hookssrc/lib/– Utility and API logicsrc/stores/– State management (Zustand, etc.)src/types/– TypeScript types
Getting Started
Prerequisites
- Bun
- Docker and Docker Compose
Note: Docker is optional but recommended for running the local database and Redis. If you only want to work on frontend features, you can skip it.
Setup
-
Fork and clone the repository
-
Copy the environment file:
# Unix/Linux/Mac cp apps/web/.env.example apps/web/.env.local # Windows PowerShell Copy-Item apps/web/.env.example apps/web/.env.local -
Start the database and Redis:
docker compose up -d db redis serverless-redis-http -
Install dependencies and start the dev server:
bun install bun dev:web
The application will be available at http://localhost:3000.
The .env.example has sensible defaults that match the Docker Compose config — it should work out of the box.
Self-Hosting with Docker
To run everything (including a production build of the app) in Docker:
docker compose up -d
The app will be available at http://localhost:3100.
Contributing
We welcome contributions! While we're actively developing and refactoring certain areas, there are plenty of opportunities to contribute effectively.
🎯 Focus areas: Timeline functionality, project management, performance, bug fixes, and UI improvements outside the preview panel.
⚠️ Avoid for now: Preview panel enhancements (fonts, stickers, effects) and export functionality - we're refactoring these with a new binary rendering approach.
See our Contributing Guide for detailed setup instructions, development guidelines, and complete focus area guidance.
Quick start for contributors:
- Fork the repo and clone locally
- Follow the setup instructions in CONTRIBUTING.md
- Create a feature branch and submit a PR