Screenshot preview of case study: Migrating an academy LMS to MongoDB — Figma-faithful build with pre-launch load testing

EdTech / Learning Management System·Multi-phase build + migration

Migrating an academy LMS to MongoDB — Figma-faithful build with pre-launch load testing

How I migrated a course platform's legacy data to MongoDB, rebuilt it to a Figma-faithful design, and ran structured load tests before launch.

Industry
EdTech / Learning Management System
Client
Rifat Academy
Timeline
Multi-phase build + migration
Next.jsNode.js/ExpressTypeScriptMongoDB

What changed

  • Before

    Legacy course data

    After

    MongoDB migration

  • Before

    Per-user notification bloat

    After

    Global notification model

  • Before

    Untested under load

    After

    k6 + Grafana load tests

The challenge

A growing coaching academy needed to move their entire course catalog and student base onto a modern platform — without losing data, without downtime students would notice, and without compromising on design quality. They had an active student base already depending on the existing system daily, a Figma design that needed to be reproduced faithfully (not "close enough"), and no confidence that the platform could handle concurrent traffic once it launched.

My approach

I rebuilt the platform around a modern, scalable architecture:

  • Full data migration to MongoDB — built a bulk migration script to move the course catalog and student data into a new MongoDB-based architecture with integrity checks
  • Figma-faithful implementation — translated the design system to production as specified, down to spacing and typography, working closely with the design collaborator to catch discrepancies before launch
  • Secure video content delivery — course video access built with authorization checks so content can't be freely shared or accessed outside an enrolled student's session
  • Load testing before launch — ran structured load tests (k6 + Grafana) simulating concurrent student traffic under exam-season-style load
  • Notification architecture rebuilt for scale — the original per-user notification design was creating document bloat as the student base grew; rebuilt it as a global notification model with a read-tracking array and automatic expiry to reduce storage growth

The outcome

We migrated the course catalog and student data to MongoDB, ran structured k6 load tests before launch, and resolved notification storage bloat by redesigning the notification model.

The original per-user notification design was silently filling up the database as more students joined, creating duplicate documents and pressuring the storage tier. I redesigned it into a single global document per notification with a read_by tracking array and a 10-day auto-expiry — a small architectural change that eliminated the bloat without changing how the frontend consumed notifications.

Shafin

Conversion-Focused Websites & Booking Systems. Available for new projects.

    Command Palette

    Search for a command to run...