The open-source CapCut alternative
Go to file
Anwarul Islam f1fed51502 docs: update setup instructions to include environment file copying steps 2025-07-17 19:52:42 +06:00
.github docs: update setup instructions to include environment file copying steps 2025-07-17 19:52:42 +06:00
apps/web fix handlebars 2025-07-16 23:28:26 +02:00
packages refactor: remove google auth 2025-07-15 12:35:08 +02:00
.cursorignore chore: add .cursorignore file to exclude specific files from cursor tracking 2025-06-24 01:48:06 +02:00
.gitignore .gitignore modified 2025-06-26 20:26:10 +05:30
.npmrc fix: CDN instead of app for databooty 2025-07-02 16:25:08 +03:00
LICENSE change app name from AppCut to OpenCut 2025-06-22 22:22:08 +02:00
README.md docs: update setup instructions to include environment file copying steps 2025-07-17 19:52:42 +06:00
biome.json feat: added biome, fixed input hydration issue from uncontrolled input being used as controlled input 2025-06-23 08:55:55 +03:00
bun.lock man idk 2025-07-16 14:52:53 +02:00
docker-compose.yaml refactor: remove google auth 2025-07-15 12:35:08 +02:00
netlify.toml oh god (netlify) 2025-06-25 19:06:41 +02:00
package.json Update package.json 2025-07-08 13:25:13 +05:00
turbo.json chore: add missing env variables to turbo.json 2025-07-14 13:07:20 +02:00

README.md

OpenCut Logo

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 application
  • src/components/ UI and editor components
  • src/hooks/ Custom React hooks
  • src/lib/ Utility and API logic
  • src/stores/ State management (Zustand, etc.)
  • src/types/ TypeScript types

Getting Started

Prerequisites

Before you begin, ensure you have the following installed on your system:

Additional requirements for full-stack development:

If you're working on the UI/frontend and don't need authentication or database features:

  1. Fork the repository

  2. Clone your fork locally

  3. Navigate to the web app directory: cd apps/web

  4. Copy .env.example to .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
    
  5. Install dependencies: bun install

  6. Start the development server: bun dev

The application will be available at http://localhost:3000.

Note: This setup runs without Docker and is perfect for frontend development, UI improvements, and most feature work.

Full Development Setup (Database + Auth)

Only follow this if you need to work with authentication, user accounts, or database features.

  1. Start the database and Redis services:

    # From project root
    docker-compose up -d
    
  2. Navigate to the web app directory:

    cd apps/web
    
  3. Copy .env.example to .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
    
  4. 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
    
  5. Run database migrations: bun run db:migrate from (inside apps/web)

  6. Start the development server: bun run dev from (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.

Vercel OSS Program

Deploy with Vercel

License

MIT LICENSE


Star History Chart