Modular Online Learning Platform

UnilearningUnified online learning platform

An online learning SaaS for enterprises, institutions and individuals, rebuilt as a Go modular monolith: 8 business domains (auth / cms / eas / ocs / oms / osm / quiz / ai) aggregated in-process, folding 6 microservices into 1 binary and 1 container, with domains communicating only through api contracts and the internal wall enforced by the compiler.

GAunile-go
8
business domains
3
front-end aggregation routes (uv1/tv1/admv1)
4
courseware forms
17
end-to-end smoke tests

Once microservices are split finely enough, the real cost is inter-service calls. A modular monolith turns those calls back into function calls while using the compiler to guard domain boundaries.

From course publishing to AI-assisted grading, every step of the teaching loop is a business domain that can evolve independently.

8
business domain modules
6→1
microservices folded into one monolith
2
database dialects
0
direct cross-domain dependencies
Capabilities

What problem does it actually solve

Four core capabilities, mapped to four real business needs.

The teaching loop

Courses, courseware, scheduling, assignments, exams and comments cover the full teaching and learning flow, with progress and grades queryable in real time.

Modular monolith

Eight business domains aggregated in-process; domains recognise only api contracts, and the internal wall is enforced by the compiler — not left to lint discipline.

AI-assisted grading

Teachers trigger AI grading for one submission or a whole class; drafts land in extension attributes and never touch business state. The final call always belongs to a person.

Smooth migration

Versioned SQL migrations upgrade idempotently, legacy data imports in one pass, and existing users log in with their original passwords.

Highlights

Capabilities at a glance

  • Course tree and learning records: a materialised path tree where progress bubbles up the ancestor chain automatically
  • Four courseware types — content, page, video, media — with unified progress tracking and resume
  • Question bank and exams: single choice, multiple choice and true/false papers, scored and explained on submission
  • AI first-pass grading: the LLM drafts, the teacher has the final say — AI never decides for the teacher
  • Online store: courses as purchasable goods, with the order as proof of purchase
  • Academic scheduling: classes, members and timetables, with three front-end routes compatible with the legacy system
Code Facts

Not a product that lives in slides

The numbers below come from the real code in the unile-go repository: modules, tables, endpoints and capability items.

8
business domains
3
front-end aggregation routes (uv1/tv1/admv1)
4
courseware forms
17
end-to-end smoke tests
146
nodes in one real migration
2
database dialects
Stack

Tech stack

Go 1.27gingormPostgreSQLMySQLJWTLLM (OpenAI-compatible)Docker
Other business lines
Get in touch

Hand the complexity of identity, agents and private domain to one governable kernel

Whether you are replacing an existing IAM, building an agent platform, or trying to make private-domain operations actually work — start with a 30-minute architecture call. We will first judge whether this is the kind of problem we are good at, and say so plainly if it is not.