Skip to content

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.