Technical Project
Uplink LMS
I built a multi-tenant learning platform that helps volunteer teams deliver the right training across campuses, rooms, and roles. Organizations author lessons and quizzes, track completion, and share selected training through QR codes. I designed the data isolation, permission model, authoring tools, and media delivery behind that workflow.
The problem
Training needs to reach the right people across campuses and teams while keeping each organization’s content private. Large videos must survive interrupted uploads, and a completed lesson needs to reflect server-verified progress.
How I approached it
I built the platform around tenant-scoped Prisma queries and four permission tiers, with authorization checked against the database on every server action and API route. A drag-and-drop lesson builder supports text, images, video, and quizzes; the server controls grading, lesson order, and completion.
Inside the build
- Built a multi-tenant Next.js learning platform with a drag-and-drop lesson builder, resumable 500 MB chunked video uploads, server-graded quizzes, QR guest access, and tenant-scoped permissions.
- Built resumable video uploads up to 500 MB using streamed 4 MB chunks, file-signature validation, offset recovery, and serialized per-organization quota checks.
- Created a private media server with HTTP range requests and ETag revalidation so videos support seeking while retaining organization-level access controls.
- Built versioned lessons and server-graded quizzes with serializable transactions and idempotent submissions; answer keys stay off the learner’s browser.
- Added QR-code guest access with browser-local progress that is replayed through server-side authorization and grading checks after sign-in.
- Hardened sign-in with rate limiting and timing-attack defenses, invalidated sessions when account permissions change, and covered core rules with 43 unit tests.
The result
Delivered a complete authoring-to-completion workflow with guest access, media delivery, and progress tracking. The production Docker deployment includes a non-root runtime, health checks, automatic migrations, and Traefik TLS routing.