Standalone, reusable video-review/transcode pipeline using FastAPI and Celery.
There are two primary ways to run the project locally: fully containerized via Docker, or completely native on your host machine.
To run the entire stack (API, Worker, Postgres, Redis) in Docker:
-
Copy the environment variables:
cp .env.example .env
-
Start the services:
docker compose up -d --build
-
Check the API health:
curl http://localhost:8000/health
If you prefer to run the entire stack locally without Docker (for faster reloading and easier debugging), you must install the application, ffmpeg, Postgres, and Redis directly on your host machine.
-
Install System Dependencies (macOS via Homebrew)
brew install ffmpeg postgresql redis
-
Start background services:
brew services start postgresql brew services start redis
-
Create the database and user (if not already set up):
psql postgres -c "CREATE USER veditor WITH PASSWORD 'password';" psql postgres -c "CREATE DATABASE veditor OWNER veditor;"
-
Copy the environment variables:
cp .env.example .env
(Ensure the
POSTGRES_*andREDIS_URLvariables point to your local native instances). -
Create a virtual environment and install dependencies using uv:
uv venv source .venv/bin/activate uv sync uv run pre-commit install -
Start the FastAPI server natively:
uv run uvicorn app.main:app --reload
-
Start the Celery worker natively (in a separate terminal):
uv run celery -A app.tasks worker --loglevel=info
-
Run the tests natively:
uv run pytest