# Tech Stack — Accessible Video Processing Platform ## Backend | Component | Package | Version | Role | |-----------|---------|---------|------| | Web framework | FastAPI | 0.115.0 | Async REST + WebSocket | | Task queue | Celery | 5.3.4 | Background AI processing | | Database driver | Motor (AsyncIOMotor) | latest | MongoDB async driver | | Cache / broker | Redis | 7.2 | Celery broker + rate limit state | | Data validation | Pydantic | 2.5 | Request/response schemas | | Runtime | Python | 3.11 | Language version | | Package manager | Poetry | latest | Dependency management | | ASGI server | Uvicorn | latest | HTTP server | | JWT | python-jose | ^3.3.0 | Token encode/decode | | Password hash | passlib + bcrypt | latest | Password hashing | | Observability | OpenTelemetry | latest | Tracing (currently disabled) | | Error tracking | Sentry SDK | latest | Exception capture | | Metrics | Prometheus client | latest | `/metrics` endpoint | ## Frontend | Component | Package | Version | Role | |-----------|---------|---------|------| | UI framework | React | 19.1.1 | Component model | | Build tool | Vite | 7.1.2 | Dev server + bundler | | Language | TypeScript | 5.8 | Type safety | | Server state | TanStack Query | 5.85 | API caching + invalidation | | Routing | React Router | 7.8 | Client-side routing | | Styling | Tailwind CSS | 4.1 | Utility-first CSS | | Client state | Zustand | 5.0 | Auth token + UI state | | Forms | React Hook Form + Zod | latest | Form handling + validation | | HTTP client | Axios | latest | API calls with interceptors | | E2E testing | Playwright | latest | Browser automation | | Unit testing | Vitest + RTL | latest | Component tests | ## External Services | Service | Provider | Purpose | Auth | |---------|---------|---------|------| | Caption / AD generation | Gemini 2.5 Pro | Core AI processing | API key | | Translation | Google Cloud Translate | 50+ language translation | Service account | | Transcreation | Gemini 2.5 Pro | Cultural adaptation | API key | | TTS (primary) | Google Cloud TTS | Audio description synthesis | Service account | | TTS (premium voices) | ElevenLabs | High-quality voice synthesis | API key | | File storage | Google Cloud Storage | Video + VTT files | Service account | | Email | SendGrid | Client delivery notifications | API key | | SSO | Microsoft Entra ID | Enterprise login | OAuth2/OIDC | | Error tracking | Sentry | Exception capture + performance | DSN | | Secrets | GCP Secret Manager | Production credentials | Service account | ## Database | Store | Technology | Host | Purpose | |-------|-----------|------|---------| | Primary DB | MongoDB Atlas | Cloud (M10+) | Job documents, users, glossaries | | Cache / broker | Redis | Docker (local) / Cloud (prod) | Celery tasks, rate limit counters | | Vector index | Atlas Vector Search | In MongoDB Atlas | Glossary embedding retrieval | ## Infrastructure | Layer | Technology | Notes | |-------|-----------|-------| | Container runtime | Docker + Docker Compose | All backend services containerized | | Reverse proxy | Apache 2.4 | Modules: mod_proxy, mod_proxy_wstunnel, mod_rewrite | | Server OS | Linux | optical-web-1 (GCP VM, 32GB RAM, 8 CPU) | | Python env | Poetry virtualenv | Inside Docker containers | | Node env | Node 20+ / npm | Frontend build | ## Configuration Files | File | Purpose | |------|---------| | `backend/pyproject.toml` | Python deps + ruff config | | `backend/mypy.ini` | mypy type-check config | | `frontend/package.json` | Node deps | | `frontend/eslint.config.js` | ESLint rules | | `frontend/tsconfig.json` | TypeScript config | | `frontend/playwright.config.ts` | E2E test config | | `docker-compose.yml` | Base services | | `docker-compose.local.yml` | Local dev overrides | | `docker-compose.prod.yml` | Production overrides | | `.env.local` | Local secrets (gitignored) | | `.env.production` | Production secrets (gitignored) | | `.env.prod.example` | Template for production env | ## Maintenance **Update triggers:** Dependency version bump, new external service added, Python or Node runtime version change. **Verification:** Versions match `backend/pyproject.toml` and `frontend/package.json`.