Quickstart¶
Get the full stack running locally in a few minutes.
With Docker Compose¶
The simplest way to run everything:
This starts the frontend, landing page, API, workers, PostgreSQL, Redis, RabbitMQ, and MinIO (local S3). Once it's up:
- Frontend: http://localhost:3000
- Landing page: http://localhost:4321
- API docs: http://localhost:8000/docs
- MinIO console: http://localhost:9001 (minioadmin/minioadmin)
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¶
- Open http://localhost:3000
- Create an account → verify email → trial auto-activates (30 AI min, 7 days)
- Upload a video
- See credit estimate near the Analyze button
- Click Analyze → credits deducted
- Toggle edits on/off in the timeline
- Hit render
The render pipeline downloads clips, applies cuts with FFmpeg, and uploads the result to MinIO.