How we built a full-stack EdTech platform with course management, progress tracking, HLS video delivery, and subscription payments — serving 12K+ enrollments across 500+ courses.
EdTech LMS · HLS Video Pipeline
A growing EdTech company had built a successful content library across multiple niche verticals — from professional certifications to creative skills — but their platform was held together by legacy tools and manual workflows. Course content lived in disparate systems: some in WordPress, some in Google Drive, and progress was tracked in spreadsheets. Learners had no unified experience, and instructors had no way to see engagement or completion rates across their courses.
They needed a modern learning management system with a single learner app, an admin CMS for course creators, video streaming that could scale to thousands of concurrent viewers, and a subscription engine that handled one-time purchases, monthly plans, and enterprise licenses. The goal was to consolidate everything into one platform that could grow from hundreds to tens of thousands of learners without hitting scaling walls.
Course videos, PDFs, and quizzes lived across multiple storage systems. There was no single source of truth — instructors spent hours manually uploading content to different buckets, and learners often hit broken links or outdated materials.
There was no way to know if a learner had completed a module, paused mid-video, or dropped off. Certificates were issued manually after instructors checked spreadsheets. Analytics were nonexistent.
Raw MP4 uploads to S3 caused buffering during peak hours. There was no adaptive bitrate — mobile users on slow connections couldn't watch smoothly. CDN configuration was minimal.
Some courses used Stripe, others used PayPal. Subscriptions were tracked in a custom database that didn't sync with payment webhooks. Renewals failed silently, and refunds required manual database edits.
We designed a layered architecture with the learner app and admin CMS as separate frontends sharing a common API. Video content flows through an AWS MediaConvert pipeline that transcodes uploads to HLS, enabling adaptive bitrate streaming. Redis caches enrollment state and progress, and PostgreSQL holds the canonical data. Stripe powers all payments with a single webhook handler that updates subscriptions, access, and invoices.
The video pipeline was the most complex piece. We built an event-driven flow: uploads go to S3, trigger Lambda to start MediaConvert jobs, and on completion we write HLS manifest URLs to PostgreSQL. The learner app requests signed CloudFront URLs at playback time, so we never expose raw S3 paths. Adaptive bitrate means learners on mobile get lower quality segments automatically, eliminating buffering complaints.
Audited all existing content sources and instructor workflows. Mapped course structure to a normalized schema. Designed the HLS transcoding pipeline and CDN strategy. Migrated 200+ courses from legacy systems.
Built the Next.js learner portal with course catalog, enrollment flow, and video player (HLS.js). Built the admin CMS for course creation, module ordering, and content upload. Implemented progress tracking and certificate generation.
Integrated AWS MediaConvert and CloudFront. Built Stripe subscription and one-time purchase flows. Implemented webhook handlers for payment events, access grants, and refunds. Added Redis caching for enrollment state.
Built instructor dashboards for completion rates and engagement. Load-tested video delivery with 2K concurrent streams. Phased rollout — beta with 500 learners, then full launch to 12K+ enrollments.
EdTech platforms look simple on the surface — courses, videos, progress bars — but the complexity comes from content lifecycle (upload, transcode, distribute), payment orchestration (subscriptions, upgrades, enterprise billing), and progress tracking at scale. Treating the video pipeline as a first-class service with event-driven transcoding meant we could add new formats (e.g., 4K) without rewriting the learner app.
Stripe webhooks were critical. We handle subscription created, updated, canceled, and payment failed events in a single idempotent handler. That ensures access grants and revocations stay in sync with billing, and failed payments trigger retries before learners lose access.
Progress tracking drove the biggest product improvement. By storing granular checkpoints — which videos were watched, how far, and quiz scores — we gave instructors actionable analytics. They could see drop-off points, identify struggling modules, and iterate on content. The client reported a 40% increase in certificate completions after launch.
We help education companies build production-grade LMS, video streaming, and payment systems. Let's talk about your architecture.