Getting Started

Getting Started

Prerequisites

Tip: Bun handles the workspace dependencies used by OpenCut. If you run into workspace:* errors with npm, upgrade to npm 9+ or switch to Bun/PNPM.

Clone and bootstrap

git clone https://github.com/OpenCut-app/OpenCut.git
cd OpenCut

# App web frontend
cd apps/web
cp .env.example .env.local
bun install
bun run dev

The development server runs at http://localhost:3000.

Environment variables

# Database (matches docker-compose.yaml)
DATABASE_URL="postgresql://opencut:opencutthegoat@localhost:5432/opencut"

# Better Auth
BETTER_AUTH_SECRET="your-generated-secret-here"
NEXT_PUBLIC_BETTER_AUTH_URL="http://localhost:3000"

# Redis
UPSTASH_REDIS_REST_URL="http://localhost:8079"
UPSTASH_REDIS_REST_TOKEN="example_token"

# Optional blogging integration
MARBLE_WORKSPACE_KEY=cm6ytuq9x0000i803v0isidst
NEXT_PUBLIC_MARBLE_API_URL=https://api.marblecms.com

NODE_ENV="development"

Generate the secret with one of these commands:

openssl rand -base64 32               # Unix/macOS
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"  # cross-platform

Optional: database + Redis

# From the repo root
docker-compose up -d

# Apply migrations from apps/web
bun run db:migrate

Project layout

apps/
├── web/               # Next.js application
├── desktop/           # Tauri desktop client
├── bg-remover/        # Python background removal pipeline
└── transcription/     # Audio transcription service

packages/
├── config/            # Shared configuration (eslint, tsconfig, etc.)
├── ui/                # Reusable UI components
└── ...

Next steps

Last updated on