Back to Case Studies

A learning platform with live classes, rebuilt end to end six months in

Courses, quizzes, progress and live video across three surfaces — then all three rebuilt as a second generation inside the same engagement.

Sector
Professional-education provider
Engagement
April 2022 – October 2022
  • Node
  • Express
  • MongoDB
  • React
  • Socket.IO
  • Agora
  • Stripe

Context

Courses, lessons, quizzes and progress tracking are the settled part of a learning platform. Live classes are not. They mean a third-party video vendor, session tokens issued server-side, and a client that has to keep working when that vendor changes — and this codebase carries both sides of exactly that change.

What we built

  • Backend API

    Courses, lessons, assessment, progress and live-class token issuing.

  • Web app

    Learner experience: lessons, quizzes, progress, calendar and live meetings.

  • Admin console

    Course, cohort and user administration on a bought theme.

Architecture

An Express and MongoDB API with Passport and JWT authentication served a React web app and an administrative console. Seventeen route modules on the API line up closely with seventeen on the web client: courses, lessons, lesson PDFs, video, questions, question sets, responses, progress, boards, a calendar and chat. Access tokens for one live-video vendor are minted server-side while a second live-video SDK appears on the client — two stacks coexisting is what a provider migration looks like in a repository, and it is the most interesting thing here. Mail runs through SendGrid, push through Firebase, media and lesson PDFs through S3, payment through Stripe. The administrative console is built on a commercial dashboard theme, so that work was integration rather than interface design. Six months in, all three surfaces were rebuilt as a second generation alongside the first. The engagement ran from April to October 2022.

Stack

Backend API
  • Node
  • Express
  • MongoDB
  • Passport with JWT
Web app
  • React 17
  • Socket.IO client
Admin console
  • React 16
  • Formik and Yup
  • commercial dashboard theme
Integrations
  • Agora access tokens, issued server-side, for live classes
  • A second live-video SDK on the web client, from the provider migration
  • Stripe for payments
  • SendGrid for transactional mail
  • Firebase for push notifications
  • Amazon S3 for lesson media and PDFs

Scale

Counts that can be re-derived from the same repositories. Nothing here is a business result — a repository cannot evidence one.

  • Three delivered surfaces: backend API, web app, admin console.
  • 1,018 commits across six repositories — three surfaces, each with a rebuild.
  • 17 route modules on the API, 17 on the web client.
  • 250 commits in the second-generation rebuild, across three parallel repositories.

Where the evidence stops

  • The administrative console is built on a commercial dashboard theme, so that work was integration rather than interface design.
  • No learner numbers, completion rates or retention figures are derivable from a repository.

Evidence

Each statement above, and the artefact it was read from. The client cannot be named, so the sources are given instead.

  • 3 surfaces delivered — backend API, web app, admin console.

    SourceOne repository per surface, each carrying application code

  • 1,018 commits across six repositories (three surfaces, each with a rebuild).

    SourceSum of history.totalCount on each repository's default branch (GitHub GraphQL)

  • 17 route modules on the API, 17 on the web client.

    Sourcesrc/routes/ directory listings on both repositories

  • The second-generation rebuild is 250 commits across three parallel repositories.

    Sourcehistory.totalCount on the three v2 repositories

  • The market is German-speaking continuing education.

    SourceA web route folder named with the German term for continuing professional education

  • Engagement span: 27 April 2022 to 17 October 2022.

    SourceFirst and last commit dates on the default branches

Related capability

Learning experience platform