learningequality / learningequality/studio

Support testing alternate versions of curriculum automation API

Open
#5,584 0 comments 0 reactions 1 assignee View on GitHub

@marcellamaki is already working on this.

Since Jan 13, 2026.

DEV: backend P1 - important
Dominant language
Python
Stars
191
Forks
307
Avg merge
5d 6h
Merged PRs (30d)
10

Description

This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.

Current behavior

Currently, Studio is configured to use one backend for the curriculum automation API (Recommendations) which uses the default URL prefix /stable.

Desired behavior

When Studio is deployed to our non-production servers, it should attempt to use an unstable version of the curriculum automation API, but fallback to the stable version if it cannot connect to the unstable version. This should occur through backends that use those respective URL prefixes.

  • A new backend class CompositeBackend should be created which should:
    • essentially implement the composite OOP pattern
    • accept a list of backends in its constructor
    • implement the same interface as Backend
    • choose the first backend from its list when its connect method is called, based on its Okay response
    • use the chosen backend for all other requests
  • The backend factory RecommendationsBackendFactory should:
    • maintain its current implementation if Studio is in production mode (settings.SITE_ID == settings.PRODUCTION_SITE_ID)
    • otherwise create a CompositeBackend with 2 child backends, one with an /unstable URL prefix and another with the default /stable prefix (in that order)

Value add

Allows us to test improvements to the curriculum automation API on our non-production servers, prior to replacing the stable endpoint.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.