2025-06-26 22:40:25 +05:30
<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 style="font-size: 0.7em; font-weight: normal;">(prev AppCut)</span></h1>
2025-07-02 01:39:32 +02:00
<h3 style="margin-top: -10px;">A free, open-source video editor for web, desktop, and mobile.</h3>
2025-06-26 22:40:25 +05:30
</td>
</tr>
</table>
2025-06-22 10:02:50 +02:00
2025-06-22 22:07:06 +02:00
## Why?
2025-06-22 10:02:50 +02:00
2025-06-22 22:07:06 +02:00
- **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
2025-06-24 22:40:19 +03:00
- Analytics provided by [Databuddy ](https://www.databuddy.cc?utm_source=opencut ), 100% Anonymized & Non-invasive.
2025-06-22 22:07:06 +02:00
2025-06-23 15:33:06 +07:00
## Project Structure
2025-06-22 22:07:06 +02:00
2025-06-23 15:33:06 +07:00
- `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
2025-06-23 20:59:31 +00:00
### Prerequisites
Before you begin, ensure you have the following installed on your system:
- [Bun ](https://bun.sh/docs/installation )
- [Docker ](https://docs.docker.com/get-docker/ ) and [Docker Compose ](https://docs.docker.com/compose/install/ )
- [Node.js ](https://nodejs.org/en/ ) (for `npm` alternative)
### Setup
2025-07-12 17:05:53 +05:30
## Getting Started
2025-07-01 19:26:42 +02:00
2025-07-12 17:05:53 +05:30
1. Fork the repository
2. Clone your fork locally
3. Navigate to the web app directory: `cd apps/web`
4. Install dependencies: `bun install`
5. Start the development server: `bun run dev`
2025-06-23 20:59:31 +00:00
2025-07-12 17:05:53 +05:30
## Development Setup
2025-07-01 19:26:42 +02:00
2025-07-12 17:05:53 +05:30
### Prerequisites
2025-06-23 20:59:31 +00:00
2025-07-12 17:05:53 +05:30
- Node.js 18+
- Bun (latest version)
- Docker (for local database)
2025-07-01 19:26:42 +02:00
2025-07-12 17:05:53 +05:30
### Local Development
2025-06-25 14:28:56 +08:00
2025-07-12 17:05:53 +05:30
1. Start the database and Redis services:
2025-07-01 19:26:42 +02:00
2025-07-12 17:05:53 +05:30
```bash
# From project root
docker-compose up -d
` ``
2025-06-25 14:28:56 +08:00
2025-07-12 17:05:53 +05:30
2. Navigate to the web app directory:
2025-07-01 19:26:42 +02:00
2025-07-12 17:05:53 +05:30
` ``bash
cd apps/web
` ``
2025-07-01 19:26:42 +02:00
2025-07-12 17:05:53 +05:30
3. Copy ` .env.example` to ` .env.local`:
2025-06-23 20:59:31 +00:00
2025-07-12 17:05:53 +05:30
` ``bash
# Unix/Linux/Mac
cp .env.example .env.local
2025-07-01 19:26:42 +02:00
2025-07-12 17:05:53 +05:30
# Windows Command Prompt
copy .env.example .env.local
2025-06-23 20:59:31 +00:00
2025-07-12 17:05:53 +05:30
# Windows PowerShell
Copy-Item .env.example .env.local
` ``
2025-06-23 20:59:31 +00:00
2025-07-12 17:05:53 +05:30
4. Configure required environment variables in ` .env.local`:
2025-07-01 19:26:42 +02:00
2025-07-12 17:05:53 +05:30
**Required Variables:**
2025-06-23 20:59:31 +00:00
2025-07-12 17:05:53 +05:30
` ``bash
# Database (matches docker-compose.yaml)
DATABASE_URL="postgresql://opencut:opencutthegoat@localhost:5432/opencut"
2025-06-23 20:59:31 +00:00
2025-07-12 17:05:53 +05:30
# Generate a secure secret for Better Auth
BETTER_AUTH_SECRET="your-generated-secret-here"
BETTER_AUTH_URL="http://localhost:3000"
2025-07-01 19:26:42 +02:00
2025-07-12 17:05:53 +05:30
# Redis (matches docker-compose.yaml)
UPSTASH_REDIS_REST_URL="http://localhost:8079"
UPSTASH_REDIS_REST_TOKEN="example_token"
2025-06-23 20:59:31 +00:00
2025-07-12 17:05:53 +05:30
# Development
NODE_ENV="development"
` ``
**Generate BETTER_AUTH_SECRET:**
` ``bash
# 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
` ``
**Optional Variables (for Google OAuth):**
` ``bash
# Only needed if you want to test Google login
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
` ``
5. Run database migrations: ` bun run db:migrate` from (inside apps/web)
6. Start the development server: ` bun run dev` from (inside apps/web)
2025-06-23 20:59:31 +00:00
2025-07-02 01:39:32 +02:00
The application will be available at [http://localhost:3000 ](http://localhost:3000 ).
2025-06-22 22:07:06 +02:00
## Contributing
2025-06-22 15:23:11 +02:00
2025-07-02 01:39:32 +02:00
**Note** : We're currently moving at an extremely fast pace with rapid development and breaking changes. While we appreciate the interest, it's recommended to wait until the project stabilizes before contributing to avoid conflicts and wasted effort.
2025-07-01 19:26:42 +02:00
## Visit [CONTRIBUTING.md](.github/CONTRIBUTING.md)
2025-06-24 02:09:43 +02:00
We welcome contributions! Please see our [Contributing Guide ](.github/CONTRIBUTING.md ) for detailed setup instructions and development guidelines.
2025-07-02 01:39:32 +02:00
**Quick start for contributors:**
2025-06-24 02:09:43 +02:00
- Fork the repo and clone locally
- Follow the setup instructions in CONTRIBUTING.md
- Create a feature branch and submit a PR
2025-07-05 02:57:41 +02:00
## Sponsors
Thanks to [Vercel ](https://vercel.com?utm_source=github-opencut&utm_campaign=oss ) for their support of open-source software.
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FOpenCut-app%2FOpenCut&project-name=opencut&repository-name=opencut)
2025-06-22 15:23:11 +02:00
## License
2025-06-24 05:06:21 +08:00
[MIT LICENSE ](LICENSE )
2025-07-11 15:59:56 +02:00
---
[]