Containers — OCW Studio
Generated 2026-06-24 15:49 UTC · c4gen dev
The runtime/deployable units inside OCW Studio and how data moves between them and adjacent systems.
Containers
| Container | Technology | Responsibility |
|---|---|---|
| React SPA | React + TypeScript (Webpack 5, CKEditor 5) | Single-page authoring UI. Bundles are built by Webpack and served by Django (templates/index.html); in dev a webpack dev server hot-reloads. Talks to the DRF API under /api/ via redux-query. |
| Nginx | Nginx 1.29 | Reverse proxy in front of the Django app and the S3/MinIO origin. |
| Django Web API | Django + DRF (uWSGI, Python) | REST API for websites/content/starters/collaborators, SAML auth, admin, publish triggers, the Concourse control client, and inbound webhook receivers (pipeline_status, hide_download, GitHub starter sync, 3Play). |
| Celery — publish queue | Celery worker | Content sync to GitHub, draft/live publish orchestration, pipeline upserts, build-status polling. |
| Celery — batch queue | Celery worker | Mass builds, bulk pipeline upserts, broken-link checks, and Wayback Machine submission. |
| Celery — default queue | Celery worker | Google Drive imports, video transcode dispatch, YouTube upload, 3Play transcript handling. |
| Celery Beat | Celery Beat | Schedules YouTube status/upload, 3Play transcript refresh, publish build-status polling, and (flagged) Wayback + broken-link checks. |
| PostgreSQL | PostgreSQL 18 (RDS in prod) | System of record for Website, WebsiteContent, WebsiteStarter, ContentSyncState, Video, and publish state. |
| Redis | Redis 8 (ElastiCache in prod) | Celery broker/result backend, Django cache, and @single_task distributed locks. |
| S3 App Storage Bucket | AWS S3 (MinIO locally) | Uploaded resources (images/PDFs/videos) and Django default file storage. AWS_STORAGE_BUCKET_NAME — pulled into Hugo builds by the pipelines. |