Skip to content
zublms
Documentation
Documentation/Engineering handbook

Engineering handbook · Source-backed views

Understand the system.
Follow the decisions.

From a browser request to durable learning evidence: the components, conversations and Go contracts that make ZubLMS work.

2 component views8 sequence diagrams3 Go type diagrams
Implementation, with its boundaries.

These are views of the local source, reviewed on 3 November 2026. Optional adapters are labelled; a diagram is not evidence of deployment or certification. Go remains a modular monolith. PostgreSQL stores both application data and River jobs.

Explore the architecture

Components diagram

System components and trust boundaries

Browser, Go processes, persistent services and optional integrations.

Open SVG ↗
System components and trust boundaries. Read the explanation and editable diagram source below.
Overview · use Actual size to read small labels SVGMermaid source
How to read this diagram & source references
  • This is a component view, not a claim that every optional integration is enabled.
  • The Go API owns authorisation; PostgreSQL RLS is another boundary. River stores jobs in PostgreSQL, not Redis.
  • Local development uses Vite and host processes; release packaging uses built web assets.

Source references in the repository:

  • cmd/api/main.go
  • cmd/worker/main.go
  • deploy/release/compose.yml
  • docs/ai-assistance.md

The downloadable Mermaid file provides a text representation of every node and connection.

The boundaries that matter

Authority stays on the server

Session-derived membership, permissions and tenant-bound transactions protect data. Hidden buttons and client-side filters are not access controls.

Published learning stays stable

Drafts are revisioned. Enrolments pin published versions, progress commands are deduplicated, and completion evidence is separate from a rendered certificate.

External output stays untrusted

Packages run on an isolated origin. AI output requires validation and human review. Provider availability does not imply a fully automated workflow.

Recovery is an explicit responsibility

Key material, database state, the recovery journal and object bytes must be recoverable together. Automatic unsealing and off-server backups remain deferred.

All diagrams, ready to share

SVG stays sharp when enlarged. Mermaid source can be reviewed and edited. These links also work without JavaScript.

System components and trust boundaries

Browser, Go processes, persistent services and optional integrations.

View SVGDownload source
Module ownership and composition

Public transport and composition connect domain services to shared infrastructure.

View SVGDownload source
Sign-in and company authority

Browser redirects to Keycloak; the API establishes the authorised workspace session.

View SVGDownload source
Publish and assign a stable version

Authors publish immutable content; managers assign a specific published version.

View SVGDownload source
Learning, assessment and evidence

Accepted progress and server-scored assessments lead to durable completion and queued rendering.

View SVGDownload source
Report request, worker and download

A report is queued, generated under scope checks and downloaded through an authorised endpoint.

View SVGDownload source
Bounded AI assistance and human review

Selected resources are authorised before and after a bounded provider request.

View SVGDownload source
SCORM import, launch and Finish

Reviewed immutable package versions run in an isolated origin and persist acknowledged runtime state.

View SVGDownload source
Announcement and channel delivery

An explicit authorised send records recipients and lets workers deliver configured channels.

View SVGDownload source
Install/upgrade and failure boundaries

Explicit lifecycle commands keep migrations separate from normal application startup.

View SVGDownload source
Go types: catalogue and learning services

Selected real Go structs and interfaces; parameters are abbreviated for readability.

View SVGDownload source
Go types: object storage contracts

Consumer-facing object interfaces and concrete storage adapters.

View SVGDownload source
Go types: AI provider boundary

The assistance service consumes bounded provider interfaces and tenant-scoped persistence.

View SVGDownload source
Versioned pathway assignment and progression

Publication pins course versions; learner launch checks ownership and stage prerequisites before creating or reusing a course cycle.

View SVGDownload source

Explore the database and data dictionary

Documentation reviewed 3 November 2026 · Current implementation snapshot

Need account help? Contact your company administrator. Planning a rollout? Talk to us.