How dabljaar/web works
DabljaAR is a web platform for turning uploaded or linked media—and, in some modes, text—into captions, Arabic translations, synthesized speech, or dubbed video. Users authenticate, submit content and a mode, follow asynchronous jobs in the dashboard, and retrieve the resulting artifacts. The documented processing path preprocesses media in the backend, then uses RabbitMQ and a Go orchestrator to coordinate independent AI and merge workers. Source excerpts provide detail for backend setup and NMT internals; service-to-service links and several worker capabilities are documented in the README rather than verified from worker source.
Main entry points: main.py FastAPI gateway · worker.py Translation worker · job_router.py Job endpoints · manager.go Pipeline saga
Components 17
Web client
- Dashboard
frontend/src/App.jsx - Job tracking
frontend/src/hooks/useJobPolling.ts - API client
frontend/src/services/jobService.js
API and media
- FastAPI gateway
backend/app/main.py - Job endpoints
backend/app/api/job_router.py - Media preprocessing
backend/app/media/service.py - Media storage
backend/app/media/storage.py
Pipeline coordination
- Pipeline saga
orchestrator/internal/pipeline/manager.go
Processing workers
- Speech recognition
stt-service/app/worker.py - Translation worker
nmt-service/app/worker.py - NLLB model
nmt-service/app/model.py - Speech synthesis
tts-service/app/worker.py - Video mux
media-service/app/worker.py
Persistence and messaging
- RabbitMQ
- PostgreSQL
- S3 / MinIO
Other components
- Content creator
Connections 26
- Content creator → Dashboard: submits content
README.md - Dashboard → API client: requests jobs
- API client → FastAPI gateway: REST requests
README.md - FastAPI gateway → Job endpoints: routes jobs
backend/app/main.py - Job endpoints → Media preprocessing: preprocesses media
- Media preprocessing → Media storage: stores media
- FastAPI gateway → PostgreSQL: persists domain data
README.md - FastAPI gateway → RabbitMQ: publishes job.created
README.md - RabbitMQ → Pipeline saga: dispatches events
README.md - Pipeline saga → RabbitMQ: publishes stage commands
README.md - RabbitMQ → Speech recognition: dispatches stage
README.md - RabbitMQ → Translation worker: dispatches stage
README.md - RabbitMQ → Speech synthesis: dispatches stage
README.md - RabbitMQ → Video mux: dispatches stage
README.md - Speech recognition → PostgreSQL: reads and writes jobs
README.md - Speech recognition → S3 / MinIO: loads media
README.md - Translation worker → NLLB model: translates segments
nmt-service/app/worker.py - Translation worker → PostgreSQL: reads and writes jobs
README.md - Translation worker → S3 / MinIO: accesses artifacts
README.md - Speech synthesis → PostgreSQL: reads and writes jobs
README.md - Speech synthesis → S3 / MinIO: stores synthesized audio
README.md - Video mux → PostgreSQL: reads merge inputs
README.md - Video mux → S3 / MinIO: stores dubbed video
README.md - Pipeline saga → PostgreSQL: tracks pipeline state
README.md - Job endpoints → Job tracking: exposes job status
README.md - Job tracking → Dashboard: updates progress