Live ProductFull-stackNext.js
NLC Learning Platform
A cohort-based learning platform for a 30-lesson counseling program — first working version shipped in a day.
Role
Designer & Developer
Timeline
2026
Tools
Next.js, Drizzle ORM, Cloudflare D1, Cloudflare Stream, Claude Code
The Problem
New Life Church's counseling program lost its free Canvas LMS and needed a replacement fast. The hard part: ~180GB of course video — roughly 6GB per lesson across 30 lessons — was stuck in Dropbox, and re-uploading it by hand would have taken days of manual uploading.
The Approach
- Scripted the migration end to end — pulled the course video out of a shared Dropbox folder, pushed it to Cloudflare Stream over its API, and wrote the resulting video IDs straight back into the database, instead of re-uploading 30 lessons by hand.
- Modeled the program the way it's actually taught: courses hold modules, modules hold lessons, and each lesson is assembled from blocks — video, text, resources, discussion, or reflection — so a lesson is a designed experience, not a video with notes stapled underneath.
- Built four real roles — admin, co-teacher, TA, and student — so the people running a cohort have permissions that match their job instead of sharing one login.
- Used passwordless magic-link sign-in with an access-request queue an admin approves, because the students are working adults in a counseling program, not a technical audience.
- Tracked per-lesson progress, discussion posts, and written reflections, so a cohort leader can see who is actually moving through the material and who has gone quiet.
- Kept building after launch — the roles, lesson blocks, and tracking above grew in over the following weeks, on top of a platform that was already carrying a live cohort.
The Outcome
1 day
Shutdown to a working platform, live
~180GB
Course video migrated via its API
4 roles
Admin, co-teacher, TA, and student
Live
In use at nlccdt.org by a real cohort