Studio Home Page Pagination

Hello Everyone,

I am currently working on a project where we have over 10,000 courses available on the Studio home page. As you can imagine, loading all these courses at once leads to significant performance issues and a suboptimal user experience.

I am considering implementing pagination on the Studio home page to address this. However, I have a few questions regarding this:

  1. Is implementing pagination on the Studio home page possible within the current tutor version 15?

  2. If yes, could you provide guidance or best practices on how to achieve this? Specifically:

  • What parts of the codebase would need to be modified?
  • Are there any existing APIs or libraries within Open edX that can facilitate pagination?
  • How should I handle the state management for pagination (e.g., keeping track of the current page, total pages, etc.)?
  • Are there any potential pitfalls or performance considerations I should be aware of?
  1. If no, are there any alternative approaches to improve the performance and usability of the Studio home page when dealing with such a large number of courses?

I would appreciate any insights, examples, or documentation that could help guide me through this process.

Hi @Pratik_Ahir! In the upcoming Redwood release, there will be a new Studio home page that allows for pagination. To use the new home page the new_studio_mfe.use_new_home_page waffle flag needs to be enabled in Django Admin. To use the pagination feature, use the following tutor plugin set up:

name: mfe_course_authoring_config
version: 0.1.0
patches:
  mfe-lms-development-settings: |
    MFE_CONFIG["ENABLE_HOME_PAGE_COURSE_API_V2"]=True

  mfe-lms-production-settings: |
    MFE_CONFIG["ENABLE_HOME_PAGE_COURSE_API_V2"]=True
2 Likes

Hi @Kristin_Aoki, Thanks for the update.

I have some queries regarding the lms settings you have provided:

  1. currently i am using edx (olive version) and tutor version 15, so can i apply this pagination settings without changing the edx version to redwood?
  2. if not then, is there any other way i can achieve the same thing?