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
Thanks for submitting, @Max Frank . There are folks in the open source community who also currently use the Program Dash, so there is value in this conversion.
In the short-term, if the initial focus is simply a 1:1 conversion of the legacy page to an MFE with new paragon components, this is good to move ahead, with a few questions:
Has your team done designs for this? If so, is it possible to share those?
Also, are any parts of the page being built as plugin slots? Eg, the upgrade button slot. If there are parts of the page that are specific to the 2U use case, we should have a conversation about possible slots. That’s why seeing designs would be helpful.
It will be possible to have this page either on or off by default, right?
In the longer term, the main reason I wanted to have this written as a proposal is because there are various initiatives/proposals in the community tackling the broader question of stackable pathways/learning sequences. Most immediate is this proposal for creating stackable pathways out of courses, which are effectively programs. The question to 2U is, what about this proposal does or doesn’t work for your use case? And the question for @Cassie Zamparini and @Mahnoor Sarwat is, how are we thinking about the MVP vis-a-vis the current and/or future state Program Dash that already exists?