Face-Swap Studio
A web app around the open-source roop face-swap engine, with queued jobs and live progress.
- Developer of the web application

What it is
Upload a video and a single reference photo, review the faces detected in it, and the swap runs as a background job while progress streams to the browser. The engine is roop; this project turns it into a full web application with accounts, a job queue and live updates.
The problem
Face swapping a video takes minutes of GPU or CPU time, which a web request cannot wait for, and users need to see progress as it runs.
Architecture
Requests flow left to right. Hover a component for its role.
- React 19 web app client, TypeScript, Vite, Tailwind
- Django 5 and DRF service
- PostgreSQL 16 data
- Redis queue
- Celery workers worker
- roop engine ai, InsightFace, inswapper, GFPGAN
- Channels and Daphne edge, live progress
Key decisions
Turn a script into a service
The engine was written as a command-line script. It now runs inside Celery workers and Django Channels pushes progress over WebSockets, so a swap that takes minutes never holds a web request open.
Highlights
- Five-service Docker Compose stack: PostgreSQL, Redis, the Django API, a Celery worker and the front end.
- Live job progress over Django Channels.
- Email sign-up with JWT, plus Google sign-in.