Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
217 changes: 105 additions & 112 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,183 +1,176 @@

<table width="100%">
<tr>
<td align="left" width="120">
<img src="apps/web/public/logo.png" alt="OpenCut Logo" width="100" />
</td>
<td align="right">
<h1>OpenCut</span></h1>
<h1>🎬 OpenCut</h1>
<h3 style="margin-top: -10px;">A free, open-source video editor for web, desktop, and mobile.</h3>
</td>
</tr>
</table>

## Why?
---

## ✨ Why OpenCut?

- 🔒 **Privacy first**: Your videos stay on your device
- 🆓 **Truly free**: No subscriptions, no watermarks, no paywalls
- 🎯 **Simple**: Easy-to-use timeline editor, inspired by CapCut
- 📊 **Analytics**: Powered by [Databuddy](https://www.databuddy.cc?utm_source=opencut), 100% anonymized & non-invasive
- 📰 **Blog**: Managed via [Marble](https://marblecms.com?utm_source=opencut), a headless CMS

---

- **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

## Features
- Timeline-based editing
- Multi-track support
- Real-time preview
- No subscriptions or hidden fees
- Works across **Web**, **Desktop**, and **Mobile**

- Timeline-based editing
- Multi-track support
- Real-time preview
- No watermarks or subscriptions
- Analytics provided by [Databuddy](https://www.databuddy.cc?utm_source=opencut), 100% Anonymized & Non-invasive.
- Blog powered by [Marble](https://marblecms.com?utm_source=opencut), Headless CMS.
---

## Project Structure
## 🛠️ 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
- `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
## ⚡ Getting Started

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

- [Node.js](https://nodejs.org/en/) (v18 or later)
- [Bun](https://bun.sh/docs/installation)
(for `npm` alternative)
- [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/)
Make sure you have the following installed:

> **Note:** Docker is optional, but it's essential for running the local database and Redis services. If you're planning to run the frontend or want to contribute to frontend features, you can skip the Docker setup. If you have followed the steps below in [Setup](#setup), you're all set to go!
- [Node.js](https://nodejs.org/en/) (v18 or later)
- [Bun](https://bun.sh/docs/installation) (faster alternative to npm)
- [Docker](https://docs.docker.com/get-docker/) + [Docker Compose](https://docs.docker.com/compose/install/) *(optional for DB & Redis)*

---

### Setup
### 🔧 Setup

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`:
1. Fork the repository
2. Clone your fork locally
3. Go to the web app directory:

```bash
# Unix/Linux/Mac
cp .env.example .env.local
cd apps/web

# Windows Command Prompt
copy .env.example .env.local
4. Copy .env.example → .env.local

# Windows PowerShell
Copy-Item .env.example .env.local
```
# Linux/Mac
cp .env.example .env.local

5. Install dependencies: `bun install`
6. Start the development server: `bun dev`
# Windows CMD
copy .env.example .env.local

## Development Setup
# PowerShell
Copy-Item .env.example .env.local

### Local Development

1. Start the database and Redis services:
5. Install dependencies:

```bash
# From project root
docker-compose up -d
```
bun install

2. Navigate to the web app directory:

```bash
cd apps/web
```
6. Start the dev server:

3. Copy `.env.example` to `.env.local`:
bun dev

```bash
# 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:**
🖥️ Development Setup (with Docker)

```bash
# Database (matches docker-compose.yaml)
DATABASE_URL="postgresql://opencut:opencutthegoat@localhost:5432/opencut"
1. Start DB & Redis

# Generate a secure secret for Better Auth
BETTER_AUTH_SECRET="your-generated-secret-here"
BETTER_AUTH_URL="http://localhost:3000"
docker-compose up -d

# Redis (matches docker-compose.yaml)
UPSTASH_REDIS_REST_URL="http://localhost:8079"
UPSTASH_REDIS_REST_TOKEN="example_token"

# Marble Blog
MARBLE_WORKSPACE_KEY=cm6ytuq9x0000i803v0isidst # example organization key
NEXT_PUBLIC_MARBLE_API_URL=https://api.marblecms.com
2. Navigate into apps/web

# Development
NODE_ENV="development"
```

**Generate BETTER_AUTH_SECRET:**
3. Configure .env.local

```bash
# Unix/Linux/Mac
openssl rand -base64 32
DATABASE_URL="postgresql://opencut:opencutthegoat@localhost:5432/opencut"
BETTER_AUTH_SECRET="your-secret"
BETTER_AUTH_URL="http://localhost:3000"

# Windows PowerShell (simple method)
[System.Web.Security.Membership]::GeneratePassword(32, 0)
UPSTASH_REDIS_REST_URL="http://localhost:8079"
UPSTASH_REST_TOKEN="example_token"

# Cross-platform (using Node.js)
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
MARBLE_WORKSPACE_KEY="your-key"
NEXT_PUBLIC_MARBLE_API_URL="https://api.marblecms.com"

# Or use an online generator: https://generate-secret.vercel.app/32
```
NODE_ENV="development"

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](http://localhost:3000).
4. Run migrations

## Contributing
bun run db:migrate

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.
5. Start the app

**⚠️ Avoid for now:** Preview panel enhancements (fonts, stickers, effects) and export functionality - we're refactoring these with a new binary rendering approach.
bun run dev

See our [Contributing Guide](.github/CONTRIBUTING.md) 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
👉 App runs at: http://localhost:3000

## Sponsors

Thanks to [Vercel](https://vercel.com?utm_source=github-opencut&utm_campaign=oss) and [fal.ai](https://fal.ai?utm_source=github-opencut&utm_campaign=oss) for their support of open-source software.
---

<a href="https://vercel.com/oss">
<img alt="Vercel OSS Program" src="https://vercel.com/oss/program-badge.svg" />
</a>
🤝 Contributing

We welcome all contributions!

Focus areas:

Timeline functionality

Project management improvements

Performance optimizations

UI/UX outside preview panel


⚠️ Avoid for now: preview panel (fonts, stickers, effects, export). These are being refactored.

➡️ See Contributing Guide for details.

<a href="https://fal.ai">
<img alt="Powered by fal.ai" src="https://img.shields.io/badge/Powered%20by-fal.ai-000000?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDJMMTMuMDkgOC4yNkwyMCAxMEwxMy4wOSAxNS43NEwxMiAyMkwxMC45MSAxNS43NEw0IDEwTDEwLjkxIDguMjZMMTIgMloiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=" />
</a>

---

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FOpenCut-app%2FOpenCut&project-name=opencut&repository-name=opencut)
💎 Sponsors

Thanks to our amazing sponsors:

## License
Vercel

[MIT LICENSE](LICENSE)
fal.ai


<a href="https://vercel.com/oss">
<img alt="Vercel OSS Program" src="https://vercel.com/oss/program-badge.svg" />
</a><a href="https://fal.ai">
<img alt="Powered by fal.ai" src="https://img.shields.io/badge/Powered%20by-fal.ai-000000?style=flat" />
</a>
---

![Star History Chart](https://api.star-history.com/svg?repos=opencut-app/opencut&type=Date)
📜 License

MIT LICENSE