|
apps/web/ – Main Next.js web applicationsrc/components/ – UI and editor componentssrc/hooks/ – Custom React hookssrc/lib/ – Utility and API logicsrc/stores/ – State management (Zustand, etc.)src/types/ – TypeScript typesBefore you begin, ensure you have the following installed on your system:
npm alternative)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, you're all set to go!
Fork the repository
Clone your fork locally
Navigate to the web app directory: cd apps/web
Copy .env.example to .env.local:
# Unix/Linux/Mac
cp .env.example .env.local
# Windows Command Prompt
copy .env.example .env.local
# Windows PowerShell
Copy-Item .env.example .env.local
Install dependencies: bun install
Start the development server: bun dev
Start the database and Redis services:
# From project root
docker-compose up -d
Navigate to the web app directory:
cd apps/web
Copy .env.example to .env.local:
# Unix/Linux/Mac
cp .env.example .env.local
# Windows Command Prompt
copy .env.example .env.local
# Windows PowerShell
Copy-Item .env.example .env.local
Configure required environment variables in .env.local:
Required Variables:
# 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"
# Marble Blog
MARBLE_WORKSPACE_KEY=cm6ytuq9x0000i803v0isidst # example organization key
NEXT_PUBLIC_MARBLE_API_URL=https://api.marblecms.com
# Development
NODE_ENV="development"
Generate BETTER_AUTH_SECRET:
# 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
Run database migrations: bun run db:migrate from (inside apps/web)
Start the development server: bun run dev from (inside apps/web)
The application will be available at http://localhost:3000.
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 for detailed setup instructions, development guidelines, and complete focus area guidance.
Quick start for contributors: