All projects
LiveFull-Stack

Elevera PM Academy

An online academy for project management (PMP®, CAPM®, PMO, Risk). It has secure video courses, scored exams, "mistake" exams and verifiable certificates, plus a full admin dashboard.

Role
Front-End Developer (website & dashboard)
Timeline
Aug 2026 – Present
Client
Elevera PM Academy
Year
2026
Elevera PM Academy
570+
Students
575+
Active enrollments
6
Courses
2
Languages (AR / EN)
01

Overview

Elevera PM Academy is a learning platform for project managers preparing for PMP®, CAPM®, PMO and risk management credentials. Students enroll in video courses, watch lectures, download resources, take scored exams and earn certificates that anyone can verify online.

I built both front-ends: the student website in Next.js and the admin dashboard in React + Vite. Both run on a NestJS + Prisma backend built by a teammate.

The problem

The academy taught through scattered videos and WhatsApp groups. It had no protected place for paid content, no proper exams, and no way to prove a student had actually finished a course.

The solution

One platform with protected HLS video streaming, exams with attempts and review, certificates that unlock based on watch progress and exam results, and a dashboard where the team runs courses, students, payments and emails.

02

Who It's For

S

Students

Browse courses, enroll, watch lectures, take exams in Arabic or English, review their mistakes and download verified certificates.

A

Academy admins

Build courses and exams, approve payments and enrollments, manage reviews, FAQs and announcements, email students and monitor storage.

03

Key Features

Protected Video Streaming

HLS playback through a same-origin proxy, so the browser never sees the backend or a token, and video segments use short-lived presigned URLs.

Exams & Attempts

Timed exams with multiple attempts, scoring, an attempt review screen and an Arabic / English toggle for questions.

Mistake Exams

Automatically built exams from the questions a student got wrong, per exam or across the whole course, with eligibility checks.

Verifiable Certificates

Certificate templates with student code and minimum progress rules, PDF download, and a public verification page.

Import Exams from Word

Admins upload a .docx file and the dashboard parses it in the browser into questions and answers, detecting numbering and answer markers.

Payments & Enrollments

InstaPay and manual payments with approval, subscriptions and enrollments, plus bulk actions.

Emails & Announcements

A rich-text email composer with recipient selection and sent history, plus announcements on the website.

Analytics & Storage Metrics

Dashboard stats, student profiles with progress and activity, and Cloudflare R2 storage metrics with range charts.

05

Architecture

01

Student website

Next.js App Router with server actions and session-based auth

02

Same-origin API proxy

Next.js route handlers forward calls, streams and downloads with the user's token

03

Admin dashboard

React + Vite SPA, organized by feature (courses, exams, payments, users…)

04

Backend & storage

NestJS + Prisma API, with videos and resources stored on Cloudflare R2

06

Challenges & Solutions

Keeping paid videos protected

Challenge

The courses are paid, so video URLs could not be shareable. The player also had to stay simple, without exposing the backend origin or the user's token to the browser.

Solution

The website serves the HLS manifest through its own route handler, which reads the session token on the server and fetches the manifest from the API. The segment URLs inside it are short-lived and presigned. hls.js only ever talks to the website itself, and nothing in the browser can be reused outside a logged-in session.

Building exams from a student's mistakes

Challenge

Students wanted to practise exactly what they got wrong, but a mistake exam has many edge cases. It should include only questions never answered correctly across all attempts, not count against the regular attempt limit, be resumable if interrupted, and also work across a whole course.

Solution

Each exam card reads an eligibility object from the API: attempts used, unsolved mistake count, whether a mistake attempt already exists or is still running, and a ready-to-show reason when it can't start. The UI covers every state (start, resume, review, or why it's locked) for both single-exam and course-wide mistake exams, in Arabic and English.

Turning Word files into exams

Challenge

Instructors write their question banks in Word. Typing hundreds of questions by hand into a form was slow and error-prone.

Solution

The dashboard unzips the .docx in the browser, parses its XML and detects question numbering and answer markers from the paragraphs. The admin gets a preview of the structured questions to correct before saving.

Have a project like this in mind?

I'd love to help you build something great. Tell me what you're working on.

Let's talk