LearnBridge
A full LMS with four distinct workspaces, realtime channels, Paystack billing, and externally verifiable certificates rendered to PDF and PNG.
- 4
- Role workspaces
- 3
- Realtime channel types
- 2
- Certificate formats
- 1
- Public verification endpoint
- Role
- Lead engineer
- Year
- 2026
- Type
- Learning management system
01Overview
LearnBridge covers course discovery, lesson delivery, assignments, grading, mentorship, community learning, billing, admin operations and verifiable certificates.
It is not only an API. The repository carries the Fastify/TypeScript backend, a vanilla HTML/CSS/JS frontend, four role-based workspaces, public marketing pages, certificate rendering and operational admin screens.
Four audiences use it and none of them want the same thing: visitors browsing a catalogue, students learning, tutors teaching and getting paid, and admins keeping the platform honest.
02The problem
An LMS is really four applications sharing a database. Building four separate frontends duplicates auth, state and design; building one that branches on role produces an interface that serves nobody well.
The harder problem is the certificate. A certificate that only exists inside the platform that issued it is worthless as proof. It has to survive being posted to LinkedIn, embedded in a portfolio, and checked by an employer who will never create an account.
03Architecture
- 01
Four workspaces on one API
Public website (landing, catalogue, learning paths, certifications, corporate training, blog, verification, legal). Student workspace (dashboard, progress, lessons, notes, bookmarks, wishlist, grades, assignments, submissions, certificates, mentorship, communities, timeline, messages). Tutor studio (course builder, assignments, submission review, students, analytics, earnings, office hours, portfolio). Admin and superadmin console (users, courses, enrolments, reports, warnings, email logs, support, financials, system logs, compliance, settings).
- 02
Backend
Node.js and TypeScript on Fastify, PostgreSQL with Sequelize models, JWT auth with Argon2 password hashing, role guards, rate limiting and Helmet.
- 03
Realtime
WebSocket channels carrying notifications, chat and discussion threads, so community and mentorship features are live rather than polled.
- 04
Certificate pipeline
Course completion issues a certificate with a unique ID. HTML templates render through Puppeteer to PDF and PNG, a QR code encodes the verification URL, and a public endpoint validates the ID with no account required.
- 05
Jobs and cache
Redis with BullMQ, optional by design — the platform runs without them and uses them when present for email, rendering and heavy report work.
- 06
Payments
A Paystack-oriented billing flow, chosen because it is what actually works for the Nigerian market this is built for.
04Key decisions
Vanilla frontend, deliberately
No build step for the client. Given four workspaces of largely form-and-table UI, a framework would have added a toolchain and a hydration story without changing what shipped. The tradeoff is more discipline required in the CSS.
Public certificate verification
The verification endpoint takes a certificate ID and needs no authentication. It is the single feature that makes the credential mean anything outside the platform.
Argon2 over bcrypt
Memory-hard by default and the current recommendation. On a platform holding minors' accounts, password hashing is not the place to follow habit.
Optional Redis
A small institution should be able to run this on one box. Queues and cache improve it; nothing requires them.
05Stack
- TypeScript
- Fastify
- PostgreSQL
- Sequelize
- WebSockets
- Redis
- BullMQ
- Puppeteer
- Argon2
- Paystack
- Docker