[Proposal] Legacy Program Dashboard conversion
Overview
The code for the Program Dashboard currently lives in edx-platform as a collection of Django templates. This project would convert that frontend into a React-based frontend that would reside in frontend-app-learner-dashboard.
The Program Dashboard consists mostly of two parts:
Problem
The legacy pages are difficult to work with and not particularly customizable. They have been gradually deprecated for React-based frontends. The legacy Program Dashboard in particular relies on slow, inefficient, and difficult-to-maintain backend logic. frontend-app-learner-dashboard was originally intended to be a home for the Program Dashboard.
Use Cases
The use case for this boils down to ease of development. Simply put, developing and maintaining the legacy frontend code in edx-platform is tedious and problematic. Any new frontends introduced Open edX are written in React which also makes the Program Dashboard code outdated. Legacy frontend code doesn’t utilize the latest Paragon library of components; this not only causes a disconnect in design theming but also could lead to a11y vulnerabilities.
Proposed Solution
This would be a 1:1 conversion of the Program Dashboard as it exists now. The components would vary slightly in appearance as they would now be using the latest Paragon library. The new frontend would have a different route as it would exist as a React Route in frontend-app-learner-dashboard.
We would want to replicate all of the functionality of the Program Details page, including:
Courses listed by status (in progress, remaining/unenrolled, completed)
Enroll buttons for unenrolled courses
Upgrade buttons where applicable (top of page and for any upgradeable courses)
Progress meter that shows how many certificates have been earned
A section to display all relevant certificates (this includes the program certificate as well as any course certificates)
A link to the program record page for this program
Implementation Plan
Aperture team at 2U would handle the project as part of normal day-to-day sprint work. There is already an API in edx-platform that we can call to retrieve program enrollment data, including what we would need for both pages (source). The Program Dashboard feature, including its route, would be conditionally rendered based on the ENABLE_PROGRAMS feature flag that already exists.
Create new directory for Program Dashboard in
frontend-app-learner-dashboardCreate ProgramList view that renders the list of Program cards
Create ProgramProgress view that renders the details for each program
Create a new Route in
frontend-app-learner-dashboardfor the Program Dashboard