StackeyLabs

Case Study · EdTech & E-Learning

Secure Video Streaming Platform & Learning Analytics LMS

Migrated an education provider's premium course library off public YouTube onto a private, authenticated streaming platform — then built the LMS and learning analytics on top of it.

Industry
EdTech & E-Learning
Timeline
2025
What we did
Content migration · Secure video streaming · LMS development · Learning analytics · Cloud infrastructure & CI/CD

The Challenge

What the client was up against

The provider's premium course library — the thing students were paying for — was sitting on public YouTube, watchable by anyone with the link. Moving it meant migrating a large volume of video and its metadata without losing the catalogue structure. On top of that, the client had no idea what students actually did with the content: no watch time, no completion rates, no signal about which topics people were struggling with.

Our Approach

How we solved it

  1. Migrate the metadata, not just the files

    Videos are the easy part. The catalogue — titles, descriptions, ordering, course structure, the relationships between lessons — is what makes the library usable, and it had to survive the move intact. We wrote the migration as a repeatable Python pipeline that moved content and metadata together onto a private streaming platform, so it could be re-run and reconciled rather than being a one-shot script nobody dared touch twice. The library came out the other side whole, not as a folder of orphaned video files.

  2. Put the content behind the paywall, properly

    Playback is gated on authenticated access, so a video URL alone is not a key to the content. Only signed-in, entitled users can stream — which is the entire reason for the migration, and the part that has to be enforced at the delivery layer rather than merely hidden in the UI.

  3. Make it fast enough that nobody misses YouTube

    Students had been watching on one of the most optimised video platforms on earth, so the replacement could not feel worse. We served content through Cloud CDN, caching it at edge locations near the viewer, with managed load balancing behind it to spread traffic and absorb the peaks that come with cohort-based courses, where everyone hits play at once. Redis carries the hot path — sessions, entitlement checks, and the lookups that would otherwise hammer the database on every play.

  4. Turn playback into insight

    Because delivery was now ours, every play, pause, and drop-off became data. Playback events land in Postgres and a Python pipeline aggregates them into the metrics educators actually asked for: engagement, watch time, completion rates, progress, and per-course and per-subject performance — so they can see which lesson loses half the class and fix it, instead of guessing.

  5. Ship it the same way every time

    The whole platform is containerised with Docker, with images published to Artifact Registry and rolled out on GCP through a CI/CD pipeline. Deployments stopped being an event: the same image that passed CI is the one that runs in production, so 'works on my machine' never enters the conversation.

What We Built

Inside the solution

  • Repeatable Python migration pipeline for video content and catalogue metadata
  • Private streaming with authenticated, entitlement-gated playback
  • LMS with course management and structured student learning paths
  • Cloud CDN edge caching for low-latency playback near the viewer
  • Managed load balancing on GCP for high-traffic resilience and scale
  • Redis caching on the hot path for sessions and entitlement checks
  • Analytics dashboards for engagement, watch time, and completion rates
  • Per-subject and per-course reporting to surface struggling topics
  • Dockerised services published to Artifact Registry and deployed via CI/CD

Technology

  • Next.js
  • TypeScript
  • Python
  • Tailwind CSS
  • shadcn/ui
  • PostgreSQL
  • Redis
  • Docker
  • Google Cloud Platform
  • Cloud CDN
  • Artifact Registry
  • CI/CD

The Outcome

Premium content moved behind authentication, with CDN-backed playback and analytics educators actually use.

Private
Premium library moved off public YouTube
Edge-cached
Playback served from Cloud CDN close to the viewer
Data-driven
Educators acting on engagement and completion data

Owning your delivery layer is what makes analytics possible. Once the video is yours, every pause and drop-off is a lesson about the lesson.

Facing a Similar Problem?

Tell us what you're working on and we'll tell you how we'd approach it — no obligation.

Contact Us