Skip to content

Containers — MIT Learn

Generated 2026-06-24 13:33 UTC · c4gen dev

The runtime/deployable units inside MIT Learn and how data moves between them and adjacent systems.

Containers

Container Technology Responsibility
Next.js Frontend Next.js App Router / React (Node 22) Server-rendered UI. Calls the API both server-side (SSR/RSC prefetch) and from the browser via NEXT_PUBLIC_MITOL_API_BASE_URL.
Nginx Nginx Reverse proxy in front of Django; serves static assets.
Django Web API Django + DRF (Granian/uWSGI, Python 3.12) REST API, auth, search orchestration, admin, webhooks, vector-search endpoints.
Celery — edx_content queue Celery worker ETL ingestion of course/resource metadata and content files from providers.
Celery — default queue Celery worker Search indexing, subscription-digest email, feeds/scrapes, housekeeping.
Celery — embeddings queue Celery worker Generates vector embeddings for semantic/vector search.
Celery Beat (RedBeat) RedBeat (Redis-backed) Schedules periodic ETL, indexing, and embedding tasks. Runs embedded in the worker (-B) locally; split out in production.
PostgreSQL PostgreSQL 16 (RDS in prod) System of record for resources, users, lists, and editorial data.
Redis / Valkey Redis 8 (ElastiCache Valkey in prod) Django cache, Celery broker/result backend, and RedBeat schedule store.
OpenSearch OpenSearch Full-text search index over learning resources (alias-swapped reindex).
Apache Tika Tika 2.5 (sidecar) Extracts text from documents/content for indexing and embeddings.
S3 App Storage AWS S3 File/media storage for app assets and ETL artifacts.