All projects
Haziq Nazeer
Full-stackLearning Management SystemOct 2025 — Nov 2025

LKnight LMS

A full-stack LMS with Bunny.net video streaming, Mux live streaming, Stripe multi-seat subscriptions, three-role RBAC, and “The Vault” — a members-only discussion forum.

Full-Stack Engineer
LKnight LMS preview

01 — Overview

The project

LKnight is a production LMS: a Category → Course → Module → Lesson hierarchy with Bunny.net video lessons, Mux live streaming, Stripe subscription billing (including multi-seat team plans), and “The Vault” — a subscription-gated, anonymous discussion forum. Built as an Express 5 + Prisma 7 backend with a Next.js 16 / React 19 frontend.

Role

Full-Stack Engineer

Timeline

Oct 2025 — Nov 2025

Stack

8 technologies

02 — Context

Problem & approach

The problem

An LMS has to stream video cost-effectively without exposing source files, gate every action by role, take recurring and team payments securely, and stay responsive as courses and users grow.

My approach

I built the full stack. Video lives off-origin on Bunny.net and is served through cryptographically signed, time-limited (1-hour) embed URLs, with resumable tus uploads and webhook-driven encoding status. RBAC spans three roles (Student / Instructor / Admin) with DB-backed checks rather than trusting JWT claims, plus subscription-level roles for team seats. Stripe handles subscriptions and multi-seat invites with signature-verified raw-body webhooks, and the Postgres schema is comprehensively indexed — cursor pagination for the Vault feed, offset pagination for catalogs — to stay fast at scale.

03 — Showcase

A closer look

Admin dashboard — courses, users and analytics

Admin dashboard — courses, users and analytics

Course experience — modules, lessons and streamed video

Course experience — modules, lessons and streamed video

Subscription plans and checkout

Subscription plans and checkout

04 — Capabilities

Key features

01

Hierarchical courses

Category → Course → Module → Lesson with draft / published status and levels.

02

Bunny.net video lessons

Resumable tus uploads, signed HLS playback and webhook encoding status.

03

Mux live streaming

Live classes with stream-key issuance and playback IDs.

04

Stripe team subscriptions

Monthly / yearly plans plus multi-seat invites via email and shareable links.

05

Three-role RBAC

Student / Instructor / Admin, enforced with DB-backed authorization.

06

“The Vault”

Subscription-gated anonymous forum with nested replies, likes and near-real-time updates.

05 — Contribution

My role

As Full-Stack Engineer, here is exactly what I owned and delivered on this project.

  • Built the full stack: Express 5 + Prisma 7 backend (19 routers, 22 controllers) and Next.js 16 frontend.
  • Implemented three-role RBAC with DB-verified guards and identity-masking in the Vault.
  • Built secure video delivery on Bunny.net with SHA-256 signed, expiring embed URLs and resumable uploads.
  • Implemented Stripe subscriptions, multi-seat invites and signature-verified webhooks.
  • Designed the indexed Postgres schema with cursor + offset pagination and per-route rate limiting.

06 — Engineering

Challenges I solved

Challenge

Serving course video without exposing source files or blowing up origin bandwidth.

Solution

Offloaded delivery to Bunny.net and served only SHA-256-signed, 1-hour embed URLs; encoding status synced via webhooks.

Challenge

Authorization across three roles plus team-subscription seats, with anonymity in the Vault.

Solution

DB-backed role guards (not trusting JWT claims alone) and an author-display layer that masks identities for members but reveals them to admins.

Challenge

Stripe webhooks and checkout are eventually consistent.

Solution

Verified raw-body webhook signatures and polled the API with exponential backoff on success pages until the subscription settled.

07 — Toolbox

Built with

Next.jsExpressPrismaPostgreSQLStripeBunny.netMuxRBAC

08 — Impact

Outcomes

3 roles

RBAC: Student / Instructor / Admin

Signed URLs

Secure Bunny.net video delivery

Multi-seat

Stripe team subscriptions

Next project

Frizbee

Social Platform Backend (Instagram for Dogs)

Want something like this built?

I'm available for freelance work. Let's build yours.

Hire me