Skip to content

Quickstart

Get the full stack running locally in a few minutes.

With Docker Compose

The simplest way to run everything:

cp backend/.env.example backend/.env
docker compose up

This starts the frontend, landing page, API, workers, PostgreSQL, Redis, RabbitMQ, and MinIO (local S3). Once it's up:

What's Running

Service Port What It Does
frontend 3000 Vite dev server with hot reload
landing 4321 Astro static marketing site
web 8000 FastAPI backend
taskiq-analysis-worker Transcription + detection pipeline
taskiq-render-worker FFmpeg video rendering
taskiq-download-worker YouTube downloads, audio extraction, waveform, thumbnail
taskiq-proxy-worker FFmpeg re-encode to web-compatible H.264 480p for HEVC/ProRes/4K clips
taskiq-asset-edit-worker Asset trimming/extraction
taskiq-email-worker Email sending via Postmark
db PostgreSQL 13 (internal network only)
redis 6379 Cache + SSE pub/sub + sessions + result backend
rabbitmq 5672/15672 Message broker (AMQP) + management UI (guest/guest)
minio 9000/9001 Local S3-compatible storage + console

The minio-setup sidecar automatically creates the required buckets (sapari-raw, sapari-exports, sapari-assets) and configures CORS on first run.

Stripe Setup (Optional — for billing testing)

# Install Stripe CLI and login
brew install stripe/stripe-cli/stripe
stripe login

# Forward webhooks (keep running in separate terminal)
stripe listen --forward-to localhost:8000/api/v1/webhooks/stripe

# Add the webhook secret to your .env, then restart backend

# Stripe products are seeded automatically on `docker compose up`
# (if STRIPE_SECRET_KEY is configured in .env)

First Project

  1. Open http://localhost:3000
  2. Create an account → verify email → trial auto-activates (30 AI min, 7 days)
  3. Upload a video
  4. See credit estimate near the Analyze button
  5. Click Analyze → credits deducted
  6. Toggle edits on/off in the timeline
  7. Hit render

The render pipeline downloads clips, applies cuts with FFmpeg, and uploads the result to MinIO.


← Home Local Development →