Skip to content

Combine LMS and CMS into a single headless service #38762

@bradenmacdonald

Description

@bradenmacdonald

Goal: to simplify our codebase, operations, and deployment by combining the CMS and LMS into a single headless REST API server.

Background: Proposal: Combined Headless LMS+CMS

Tentative steps (these should be converted to sub-issues):

  1. Create and merge an ADR for this.
  2. Either migrate our course content to openedx-core (talk, slides, code) or convert the modulestore APIs to be more explicit about draft vs. published (so that calls like modulestore().get_item() become published_modulestore().get_item() or modulestore().get_published_item(), etc.).
    Hopefully we can just go with the first option, and the modulestore APIs can become a legacy read-only/published-only API without many changes.
  3. URL by URL in the CMS URLconf, add the URL to the LMS URLconf; test the behavior and address issues until they are returning identical responses whether accessed via LMS or CMS domain. Then remove it from the CMS URLconf and replace it with a redirect or a proxy.
  4. Same thing for management commands.
  5. Eventually the CMS is just a redirect/proxy service and doesn’t even need to be a django app anymore, and can be replaced with some nginx forwarding rules or something like that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No fields configured for Epic.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions