|
1 | 1 | <table width="100%"> |
2 | 2 | <tr> |
3 | 3 | <td align="left" width="120"> |
4 | | - <img src="apps/web/public/logos/opencut/icon.svg" alt="OpenCut Logo" width="100" /> |
| 4 | + <img src="https://assets.opencut.app/branding/symbol.svg" alt="OpenCut Logo" width="100" /> |
5 | 5 | </td> |
6 | 6 | <td align="right"> |
7 | 7 | <h1>OpenCut</h1> |
8 | | - <h3 style="margin-top: -10px;">A free, open-source video editor for web, desktop, and mobile.</h3> |
| 8 | + <h3 style="margin-top: -10px;">A free and open source video editor for web, desktop, and mobile.</h3> |
9 | 9 | </td> |
10 | 10 | </tr> |
11 | 11 | </table> |
12 | 12 |
|
13 | | -## Sponsors |
14 | | - |
15 | | -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. |
16 | | - |
17 | | -<a href="https://vercel.com/oss"> |
18 | | - <img alt="Vercel OSS Program" src="https://vercel.com/oss/program-badge.svg" /> |
19 | | -</a> |
20 | | - |
21 | | -<a href="https://fal.ai"> |
22 | | - <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=" /> |
23 | | -</a> |
24 | | - |
25 | | -## Why? |
26 | | - |
27 | | -- **Privacy**: Your videos stay on your device |
28 | | -- **Free features**: Most basic CapCut features are now paywalled |
29 | | -- **Simple**: People want editors that are easy to use - CapCut proved that |
30 | | - |
31 | | -## Project Structure |
32 | | - |
33 | | -- `apps/web/`: Next.js web application |
34 | | -- `apps/desktop/`: Native desktop app built with GPUI (in progress) |
35 | | -- `rust/`: Platform-agnostic core: GPU compositor, effects, masks, and WASM bindings. We're actively migrating business logic here from TypeScript. |
36 | | -- `docs/`: Architecture and subsystem documentation |
37 | | - |
38 | | -## Getting Started |
39 | | - |
40 | | -### Prerequisites |
41 | | - |
42 | | -- [Bun](https://bun.sh/docs/installation) |
43 | | -- [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) |
44 | | - |
45 | | -> **Note:** Docker is optional but recommended for running the local database and Redis. If you only want to work on frontend features, you can skip it. |
46 | | -
|
47 | | -### Setup |
48 | | - |
49 | | -1. Fork and clone the repository |
50 | | - |
51 | | -2. Copy the environment file: |
52 | | - |
53 | | - ```bash |
54 | | - # Unix/Linux/Mac |
55 | | - cp apps/web/.env.example apps/web/.env.local |
56 | | - |
57 | | - # Windows PowerShell |
58 | | - Copy-Item apps/web/.env.example apps/web/.env.local |
59 | | - ``` |
60 | | - |
61 | | -3. Start the database and Redis: |
62 | | - |
63 | | - ```bash |
64 | | - docker compose up -d db redis serverless-redis-http |
65 | | - ``` |
66 | | - |
67 | | -4. Install dependencies and start the dev server: |
68 | | - |
69 | | - ```bash |
70 | | - bun install |
71 | | - bun dev:web |
72 | | - ``` |
73 | | - |
74 | | -The application will be available at [http://localhost:3000](http://localhost:3000). |
75 | | - |
76 | | -The `.env.example` has sensible defaults that match the Docker Compose config — it should work out of the box. |
77 | | - |
78 | | -### Desktop setup |
| 13 | +[](https://discord.gg/zmR9N35cjK) |
| 14 | +[](https://x.com/opencutapp) |
| 15 | +[](LICENSE) |
79 | 16 |
|
80 | | -Desktop is opt-in. If you're only working on the web app, skip this entirely. |
| 17 | +## Status |
81 | 18 |
|
82 | | -If you want to get ready for `apps/desktop`, see [`apps/desktop/README.md`](apps/desktop/README.md). It's a two-step setup: Rust toolchain first, then desktop native dependencies. |
| 19 | +**OpenCut is being rewritten from the ground up.** What's coming: |
83 | 20 |
|
84 | | -### Local WASM development |
| 21 | +- An Editor API as the shared foundation |
| 22 | +- First-class third party plugins (made possible by a plugin-first architecture) |
| 23 | +- Desktop, mobile, and browser from one codebase (Rust core) |
| 24 | +- MCP support |
| 25 | +- A scripting tab directly in the editor |
85 | 26 |
|
86 | | -Only needed if you're editing `rust/wasm` and want the web app to use your local build instead of the published package. |
87 | | - |
88 | | -**Prerequisites** — install these once before anything else: |
89 | | - |
90 | | -```bash |
91 | | -# Rust toolchain |
92 | | -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh |
93 | | - |
94 | | -# build the WASM package |
95 | | -cargo install wasm-pack |
96 | | - |
97 | | -# reruns the build on file changes, used by bun dev:wasm |
98 | | -cargo install cargo-watch |
99 | | -``` |
100 | | - |
101 | | -1. Build the package once from the repo root: |
102 | | - |
103 | | - ```bash |
104 | | - bun run build:wasm |
105 | | - ``` |
106 | | - |
107 | | -2. Register the generated package for linking: |
108 | | - |
109 | | - ```bash |
110 | | - cd rust/wasm/pkg |
111 | | - bun link |
112 | | - ``` |
113 | | - |
114 | | -3. Link `apps/web` to the local package: |
115 | | - |
116 | | - ```bash |
117 | | - cd apps/web |
118 | | - bun link opencut-wasm |
119 | | - ``` |
120 | | - |
121 | | -4. Rebuild on changes while you work: |
122 | | - |
123 | | - ```bash |
124 | | - bun dev:wasm |
125 | | - ``` |
126 | | - |
127 | | -To switch `apps/web` back to the published package, run: |
128 | | - |
129 | | -```bash |
130 | | -cd apps/web |
131 | | -bun add opencut-wasm |
132 | | -``` |
133 | | - |
134 | | -### Self-Hosting with Docker |
135 | | - |
136 | | -To run everything (including a production build of the app) in Docker: |
137 | | - |
138 | | -```bash |
139 | | -docker compose up -d |
140 | | -``` |
141 | | - |
142 | | -The app will be available at [http://localhost:3100](http://localhost:3100). |
| 27 | +You can still find the previous version at [opencut-app/opencut-classic](https://github.com/opencut-app/opencut-classic), which is the one to reach for today. [opencut.app](https://opencut.app) still runs the classic version; the rewrite will live at [new.opencut.app](https://new.opencut.app) until it's ready to take over. |
143 | 28 |
|
144 | 29 | ## Contributing |
145 | 30 |
|
146 | | -We welcome contributions! While we're actively developing and refactoring certain areas, there are plenty of opportunities to contribute effectively. |
| 31 | +We're not set up to take outside contributions yet while the architecture is being designed. If you want to follow along, ask questions, or just hang out, [join the Discord](https://discord.gg/zmR9N35cjK) or [open an issue](https://github.com/opencut-app/opencut/issues). |
147 | 32 |
|
148 | | -**🎯 Focus areas:** Timeline functionality, project management, performance, bug fixes, and UI improvements outside the preview panel. |
149 | | - |
150 | | -**⚠️ Avoid for now:** Preview panel enhancements (fonts, stickers, effects) and export functionality - we're refactoring these with a new binary rendering approach. |
151 | | - |
152 | | -See our [Contributing Guide](.github/CONTRIBUTING.md) for detailed setup instructions, development guidelines, and complete focus area guidance. |
153 | | - |
154 | | -**Quick start for contributors:** |
| 33 | +## Sponsors |
155 | 34 |
|
156 | | -- Fork the repo and clone locally |
157 | | -- Follow the setup instructions in CONTRIBUTING.md |
158 | | -- Working on `apps/desktop`? See [`apps/desktop/README.md`](apps/desktop/README.md) for setup |
159 | | -- Create a feature branch and submit a PR |
| 35 | +[fal.ai](https://fal.ai?utm_source=github-opencut&utm_campaign=oss) supports OpenCut and open-source software. |
160 | 36 |
|
161 | 37 | ## License |
162 | 38 |
|
163 | | -[MIT LICENSE](LICENSE) |
164 | | - |
165 | | ---- |
166 | | - |
167 | | - |
| 39 | +[MIT](LICENSE) |
0 commit comments