video-accessibility/docs/project/tech_stack.md
Vadym Samoilenko a3b300b76a docs: add canonical documentation + audit cleanup
- AGENTS.md: canonical project entry point (Quick Nav, pipeline, constraints)
- docs/: complete docs tree — architecture, API spec, DB schema, infra,
  runbook, requirements, tech stack, principles, reference ADRs, guides,
  tasks backlog, testing strategy
- tests/README.md: test commands, structure, known gaps
- README.md / CLAUDE.md / DEPLOYMENT.md: updated with canonical doc links
- .archive/: backup of pre-documentation-pipeline originals
- backend/uv.lock: uv dependency lockfile
- Delete committed __pycache__ .pyc files (should have been gitignored)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 14:22:51 +01:00

4.2 KiB

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.