4.6 KiB
|
OpenCut (prev AppCut)A free, open-source video editor for web, desktop, and mobile. |
Why?
- Privacy: Your videos stay on your device
- Free features: Every basic feature of CapCut is paywalled now
- 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.
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
Before you begin, ensure you have the following installed on your system:
- Bun
- Docker and Docker Compose
- Node.js (for
npmalternative)
Setup
- Fork the repository
- Clone your fork locally
- Navigate to the web app directory:
cd apps/web - Install dependencies:
bun install - Start the development server:
bun dev
Development Setup
Prerequisites
- Node.js 18+
- Bun (latest version)
- Docker (for local database)
Local Development
-
Start the database and Redis services:
# From project root docker-compose up -d -
Navigate to the web app directory:
cd apps/web -
Copy
.env.exampleto.env.local:# Unix/Linux/Mac cp .env.example .env.local # Windows Command Prompt copy .env.example .env.local # Windows PowerShell Copy-Item .env.example .env.local -
Configure required environment variables in
.env.local:Required Variables:
# Database (matches docker-compose.yaml) DATABASE_URL="postgresql://opencut:opencutthegoat@localhost:5432/opencut" # Generate a secure secret for Better Auth BETTER_AUTH_SECRET="your-generated-secret-here" BETTER_AUTH_URL="http://localhost:3000" # Redis (matches docker-compose.yaml) UPSTASH_REDIS_REST_URL="http://localhost:8079" UPSTASH_REDIS_REST_TOKEN="example_token" # Development NODE_ENV="development"Generate BETTER_AUTH_SECRET:
# Unix/Linux/Mac openssl rand -base64 32 # Windows PowerShell (simple method) [System.Web.Security.Membership]::GeneratePassword(32, 0) # Cross-platform (using Node.js) node -e "console.log(require('crypto').randomBytes(32).toString('base64'))" # Or use an online generator: https://generate-secret.vercel.app/32 -
Run database migrations:
bun run db:migratefrom (inside apps/web) -
Start the development server:
bun run devfrom (inside apps/web)
The application will be available at http://localhost:3000.
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
Sponsors
Thanks to Vercel for their support of open-source software.