163 lines
4.6 KiB
Markdown
163 lines
4.6 KiB
Markdown
<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>
|
||
<h3 style="margin-top: -10px;">A free, open-source video editor for web, desktop, and mobile.</h3>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
## 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](https://www.databuddy.cc?utm_source=opencut), 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:
|
||
|
||
- [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
|
||
|
||
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 dev`
|
||
|
||
## Development Setup
|
||
|
||
### Prerequisites
|
||
|
||
- Node.js 18+
|
||
- Bun (latest version)
|
||
- Docker (for local database)
|
||
|
||
### Local Development
|
||
|
||
1. Start the database and Redis services:
|
||
|
||
```bash
|
||
# From project root
|
||
docker-compose up -d
|
||
```
|
||
|
||
2. Navigate to the web app directory:
|
||
|
||
```bash
|
||
cd apps/web
|
||
```
|
||
|
||
3. Copy `.env.example` to `.env.local`:
|
||
|
||
```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:**
|
||
|
||
```bash
|
||
# 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:**
|
||
|
||
```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
|
||
```
|
||
|
||
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).
|
||
|
||
## 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](.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
|
||
|
||
## Sponsors
|
||
|
||
Thanks to [Vercel](https://vercel.com?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>
|
||
|
||
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FOpenCut-app%2FOpenCut&project-name=opencut&repository-name=opencut)
|
||
|
||
## License
|
||
|
||
[MIT LICENSE](LICENSE)
|
||
|
||
---
|
||
|
||

|