Skip to content

MITx Pro — Architecture & Data Flows

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

MIT xPRO is the professional-education e-commerce and course-delivery platform. A Django/DRF backend with a React (Webpack) SPA and a Wagtail CMS serves the catalog and marketing pages, takes payment via CyberSource Secure Acceptance, and provisions users, enrollments, grades, and certificates against an Open edX instance. Celery (RedBeat) runs enrollment repair, certificate generation, course-run sync, external-vendor course sync, and Google Sheets coupon/refund/deferral workflows. xPRO is a SOA peer: MIT Learn pulls its course/program catalog and content files for discovery.

This is a C4 view of MITx Pro within the MIT Open Learning SOA, focused on how data is created and propagated — synchronous request paths and asynchronous (queued, scheduled, event-driven) flows alike. Use it for onboarding and as a holistic reference when realigning flows or hunting harmful cycles and fragile linkages.

How to read these diagrams

These are C4 model diagrams (C4-PlantUML). Read them top-down: System Context (the whole SOA) → Container (one system's runtime units) → Dynamic (a single data flow, step by step).

  • People are rounded boxes; systems and containers are rectangles; databases and queues have distinct shapes.
  • Each arrow is a data flow labelled with what moves.
  • Solid arrows are synchronous (request/response, caller blocks).
  • Amber dashed arrows are asynchronous (queued, scheduled, or event-driven — caller does not block).
  • Drag to pan, scroll to zoom. Boxes with a link drill into the next level.

Contents

  1. System Context — MITx Pro and the systems it exchanges data with.
  2. Containers — the runtime units inside MITx Pro.
  3. Data Flows — key interactions, step by step (sync & async).
  4. Dependencies & Cycles — graph-derived coupling, cycles, fragile links.

Keeping this current

These pages are generated from a structured model by architecture_maps/c4gen. The cross-service edges are extracted deterministically from the witan-code graph; node prose and scenarios are curated. See the generator README to regenerate after the system changes.