Catalog Discovery & Commerce
Overview
Catalog Discovery & Commerce covers how prospective and enrolled learners browse, search, and enroll in courses and programs — including the course catalog, search and filtering, course landing pages, and the ecommerce layer that handles paid enrollments, course vouchers, and enrollment modes.
The course-discovery service is the canonical catalog backend; it indexes course and program metadata from Studio and powers the public-facing search experience. The ecommerce layer (historically ecommerce, now partially transitioning to newer implementations) handles payment flows and enrollment modes.
Current State (2026)
- Catalog service:
course-discovery(Django) holds all course and program metadata, supports ElasticSearch/Algolia-powered search - Learner-facing catalog:
frontend-app-learner-dashboardandfrontend-app-course-aboutprovide the course browsing and landing page experience - Enrollment modes: Audit (free), Verified (paid/certificate), Honor; managed in
edx-platform - Ecommerce: Legacy
ecommerceservice (Oscar-based) handles paid enrollment and vouchers; migration status varies by deployment - Program discovery: Programs browsable via
course-discovery;frontend-app-learner-dashboardsurfaces program progress - Enterprise: Enterprise customers (via
edx-enterprise) have custom catalog and enrollment flows
Architecture
course-discovery: Standalone Django service; syncs course/program metadata from Studio via APIs; powers search- Search: ElasticSearch or Algolia used for full-text catalog search; indexed from
course-discovery ecommerceservice: Handles payment processing, voucher/coupon management, order fulfillment; Oscar e-commerce framework- Enrollment flow: Course about page → enrollment → payment (if verified mode) →
edx-platformenrollment record created edx-enterprise: Provides enterprise learner portals, enterprise catalog subsets, and enterprise enrollment flows
Relevant Repositories
| Repository | Role in This Feature | Activity Level | Notes |
|---|---|---|---|
| openedx/course-discovery | Catalog service: course/program metadata and search | High | Core catalog backend |
| openedx/frontend-app-learner-dashboard | Learner home and program discovery MFE | High | Primary catalog browsing surface |
| openedx/ecommerce | Paid enrollment, vouchers, order management | Medium | Oscar-based; migration ongoing |
| openedx/edx-enterprise | Enterprise catalogs, portals, and enrollment | High | B2B enrollment flows |
| openedx/openedx-platform | Enrollment modes, enrollment records | High | Enrollment record source of truth |
Recent Changes
course-discoverycontinues as the canonical catalog service- Enterprise catalog and portal features growing via
edx-enterprise
History
Origin
- Year introduced: ~2014–2015 (course catalog and discovery emerged as edX scaled beyond a handful of courses)
- Initial implementation: Basic catalog pages in
edx-platform;course-discoveryextracted as course count grew - Context: As course counts reached hundreds, search and structured browsing became necessary; ecommerce introduced as edX moved to paid certificate model
Key Milestones
| Year | Milestone | Teams / People Involved |
|---|---|---|
| ~2014–2015 | course-discovery service extracted from monolith | Unknown |
| ~2015–2016 | Paid enrollment modes (Verified) and ecommerce service introduced | Unknown |
| ~2017–2018 | Enterprise catalog and portal features developed | Unknown |
| ~2022–2023 | Learner dashboard MFE replaces legacy catalog pages | Unknown |
People Who Shaped This Area
- Engineering: Unknown — open question for interview
- Product: Unknown — open question for interview
- Design: Unknown — open question for interview
Open Questions
- [ ] When was
course-discoveryfirst extracted and what prompted it? - [ ] What is the migration path away from the Oscar-based
ecommerceservice? - [ ] How does enterprise catalog differ from the standard public catalog?
- [ ] What search technology is used in standard Open edX deployments (ElasticSearch vs. Algolia)?
- [ ] How are enrollment modes managed and what is the relationship between
course-discoveryandedx-platformfor enrollment data?