Skip to content
All projectsServices2022

Onlearn services

A learning platform split into services behind one gateway.

Interface

  • Representative interface still for Onlearn services
  • Representative interface still for Onlearn services

Representative interface stills.

Role
Solo
Organisation
Personal project
Period
2022
Stack
  • Node.js
  • Express
  • PHP

Short explanation

Onlearn is a learning platform split into separate services behind a single API gateway. Four repositories: the gateway, plus user, media and course services.

It exists because I wanted to understand service boundaries by building them rather than by reading about them.

  • An API gateway as the single entry point.
  • Three domain services — user, media, courses.
  • Deliberately different languages per service, to find out where the seams actually hurt.

Why split it at all

For a project this size, a monolith would have been the correct engineering decision. That wasn't the point. I wanted to feel the costs of distribution first-hand — the extra hop, the duplicated types, the question of who owns a piece of data when two services want it.

Using a different language per service was the same instinct taken further. It removes the option of quietly sharing code between services, which is the thing that makes a nominal microservice architecture secretly a monolith.

What it taught me

That the boundary is the design. Once user and course are separate services, 'which courses has this user enrolled in' stops being a join and starts being an architectural question — and you get exactly one chance to put that answer in the right place.

It also taught me why gateways exist. Three services means three base URLs, three auth stories and three failure modes, unless something in front of them makes it look like one.

Gateway and services

Four repositories, one entry point.