Skip to content
Back to all projects
Personal Project

E-Learning Platform

A full-stack e-learning platform where students browse, enroll in, and track progress through structured video courses.

Demo & repo links coming soon
Role
Solo developer — full-stack build
Timeline
2025
Status
Completed — personal project
Team
Solo project

Tools

Next.jsNode.jsTypeScriptTailwind CSSMongoDBReact Hook FormShadCN/UIJWT Auth
E-Learning Platform cover image

Overview

Built end to end as a personal project — students can browse a course catalog, enroll, and track their progress through structured video lessons. The platform includes a secure admin panel for managing courses, students, and enrollment analytics, with role-based authentication separating admin and student access.

The Problem

Most course platforms I'd used either buried progress tracking behind a paywall or made instructors manage everything through spreadsheets. I wanted to see what a lean version of that admin experience could look like if I owned both the student and admin surfaces end to end.

Architecture

Frontend

Next.js App Router pages for the course catalog and video player, styled with Tailwind CSS and ShadCN/UI components.

API layer

Next.js route handlers exposing REST endpoints for enrollment, progress, and admin CRUD operations.

Auth

JWT-based sessions with role claims, checked in middleware to separate admin and student routes.

Data

MongoDB collections for courses, lessons, enrollments, and progress, queried via Mongoose models.

Key Features & My Role

  • Course browsing, enrollment, and structured video-based progress tracking
  • Role-based authentication separating admin and student access
  • Secure admin panel for managing courses, students, and analytics
  • Forms built with React Hook Form and a ShadCN/UI component library

Video Walkthrough

Video walkthrough coming soon

Outcomes & Results

  • Shipped a working student + admin flow from a blank repo in about six weeks of evenings and weekends.
  • Used it as a sandbox to get comfortable with role-based auth patterns before applying them at work.
  • Became the reference implementation I point to when explaining JWT-based access control.

Reflection

The admin panel took longer than the student-facing side — CRUD screens are deceptively time-consuming to get right. If I rebuilt this today I'd reach for a schema-driven admin generator instead of hand-rolling every form.