Client project
MediVerse
E-Learning Platform
Medical students stream encrypted course videos on web, Android and iOS. I built the backend and video pipeline, then rebuilt it on NestJS and PostgreSQL.
- Role
- Backend & DevOps
- Status
- In production

- 5,000+registered users
- 33,000+monthly unique visitors
- About 7 TBvideo streamed per month
The problem
Medical students needed course videos that play smoothly on any device but can’t simply be downloaded and shared, plus timely reminders, across a website and two mobile apps.
Overview
MediVerse is one of the leading online learning platforms for Bengali-speaking medical students in Bangladesh and India, focused on learning and engagement: courses, e-books, encrypted video, study planning and push notifications. The website and the Android and iOS apps all connect to one NestJS backend.
What I did
- Built the original backend on Node.js and MongoDB, handling courses, e-books, user workflows and content delivery.
- When it hit scaling limits, rebuilt the backend in NestJS with a new relational PostgreSQL schema, the same stack as The Clinician.
- Wrote a Node.js migration tool that moved the production data from MongoDB to PostgreSQL, keeping data integrity and downtime to a minimum.
- Implemented a video processing pipeline using Redis + BullMQ queues with FFmpeg for transcoding and HLS encryption.
- Built a scheduled push notification system using FCM, powered by Redis-backed job queues on the NestJS backend.
- Developed the API layer serving the Next.js website and the Android and iOS apps, published on Google Play and the App Store.
- Built a study planner: a student sets a deadline and the courses to finish, the backend turns that into a schedule of regular study hours, and the student tracks progress against it.
- Added an admin view of the most active students by hours watched.
- Managed all DevOps: a VPS set up with Docker and Nginx and hardened with my open-source Linux setup script, deployed through GitHub Actions CI/CD for the frontend and backend, plus a development environment that deploys automatically from pull requests to main.
- Set up Cloudflare R2 storage for secure video hosting and delivery.
- Worked on the website’s frontend design, and planned and carried out its migration from an older Next.js version to the App Router once it was stable.
Highlights
- End-to-end video pipeline: upload → queue → FFmpeg transcode → HLS encrypt → R2 storage → secure playback.
- Single NestJS backend powering web, Android, and iOS clients.
- Redis + BullMQ powering both video processing and scheduled push notification delivery.
- Study plans generated from a deadline and target courses, with progress tracking.
- Two live migrations: the backend from MongoDB to PostgreSQL, and the frontend to the Next.js App Router.
Challenges
- Moving a live platform from a document database to a relational one: designing the new PostgreSQL schema, then migrating production data without breaking integrity or taking students offline for long.
- Planning and carrying out the full migration of the Next.js frontend to the App Router soon after its stable release.
- Building a reliable video processing queue that could handle variable upload sizes without blocking other operations.
- Ensuring encrypted HLS streams remained playable across different devices, browsers, and mobile apps.
- Designing a backend API flexible enough to serve both web and mobile clients from a shared codebase.
Results
- Delivered a production platform handling real student enrollments and video consumption.
- Built a reusable media processing pipeline and notification system.
Want something similar built? Get in touch →