Internship Project for Codec Technologies
Complete Online Learning Platform & Administration Panel
A real-world, high-performance web application optimized for education & e-learning! β‘
Covers Public Course Catalog, Interactive Student Player, Quizzes & PDF Certificates, Instructor Workspace, and Admin Moderation Console.
Tech Stack: Vue 3 (Composition API), TypeScript, Tailwind CSS v4, Pinia, Django REST Framework, PostgreSQL, Docker
Developed as part of my internship with Codec Technologies, this project is a state-of-the-art, production-grade Online Learning Management System (LMS) designed with modern web standards, role-based workflows, and clean UI aesthetics.
It combines a seamless learning storefront & course player experience for students with a powerful workspace for instructors to build courses & quizzes, alongside an executive administrative back-office for course moderation, user management, and platform governance.
- Dynamic Hero Banner Sliders: Glassmorphic, auto-transitioning sliders (changing every 5 seconds) loaded dynamically from backend settings.
- Advanced Course Search & Filter: Real-time filtering by category, difficulty level (Beginner, Intermediate, Advanced), pricing (Free/Paid), and instant keyword search.
- Detailed Course Overview: Interactive section curriculum preview, target learning outcomes, instructor cards with ratings, and instant enrollment.
- Public Certificate Verification: Public URL (
/certificate/verify/:id) to validate authentic, QR-stamped PDF certificates. - Instructor Directory: Dedicated teacher profiles detailing bio, profile avatar, statistics, and authored courses.
- Executive Student Dashboard: Real-time metrics for active courses, total enrolled, completed courses, active hours, and earned certificates.
- Interactive Course Learning Player:
- Multi-Format Content: HTML text content viewer, YouTube/MP4 video player progress tracking, text-to-speech audio reader, and downloadable resources.
- Automated Progress Tracking: Server-validated lesson completion criteria.
- Private Notes System: Student-isolated per-lesson rich text notes (Create, Edit, Delete, Search).
- Lesson Bookmarks: Instant lesson bookmarking for quick revision.
- Interactive Quizzes:
- Anti-Cheat Engine: Correct answer indices are masked on API responses until server-side submission evaluation.
- Countdown timer, passing threshold checks, and instant score feedback.
- Instant Certificate Generator: Dynamic QR-stamped PDF certificates generated via ReportLab upon 100% course completion.
- Instructor Dashboard: Real DB analytics on authored courses, draft status, enrolled student counts, and average quiz scores.
- Course Builder: Step-by-step metadata configuration, section reordering, lesson content creation (Video, Text, Audio), and quiz creation.
- Course Submission Workflow: Submit draft courses for administrative approval.
- Student Monitoring: Monitor completion percentages of students enrolled across authored courses.
- Platform Analytics: Executive statistics on user growth, active courses, revenue, and certificates issued.
- Course Moderation Queue: Review pending course drafts with single-click Approval or Rejection (with mandatory feedback reason).
- User Account Management: Search, filter by role (
STUDENT,TEACHER,ADMIN), and toggle Active/Deactivated account status. - Hero Slider Manager: Complete CRUD for homepage banner slides and global website settings.
- Audit Logs: Immutable log of administrative events for security compliance.
For evaluation and local testing, use these pre-seeded accounts (passwords initialized via python backend/manage.py seed_lms):
| Role | Email Address | Password | Portal Access |
|---|---|---|---|
| π‘οΈ Administrator | admin@edunexus.lms |
admin123 |
Full Control Panel (/admin) |
| π¨βπ« Instructor 1 | sarah.tech@edunexus.lms |
password123 |
Course Builder & Analytics (/teacher) |
| π¨βπ« Instructor 2 | david.code@edunexus.lms |
password123 |
Authored Courses & Monitoring (/teacher) |
| π Student 1 | student1@edunexus.lms |
password123 |
Enrolled Courses & Player (/student) |
| π Student 2 | student2@edunexus.lms |
password123 |
Learning, Quizzes & Notes (/student) |
- Frontend: Vue 3 (Composition API), TypeScript, Pinia, Vue Router, Tailwind CSS v4, Lucide Icons.
- Backend: Python 3.10+, Django 5.0, Django REST Framework (DRF), SimpleJWT.
- PDF & Certificate Engine: ReportLab, QRCode, Pillow.
- Database: PostgreSQL 15 (Production) / SQLite (Zero-Config Local Dev).
- DevOps & Tooling: Docker, Docker Compose, Vite.
- Node.js v18+ & npm v9+
- Python v3.10+
- Git
- (Optional) Docker & Docker Compose
git clone https://github.com/CodeWithTanim/Online-Learning-Management-System.git
cd Online-Learning-Management-System-
Create and Activate Virtual Environment:
-
Windows (PowerShell):
python -m venv venv .\venv\Scripts\Activate.ps1(If PowerShell blocks execution, run
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypassfirst) -
Windows (CMD):
python -m venv venv venv\Scripts\activate.bat
-
macOS / Linux:
python3 -m venv venv source venv/bin/activate
-
-
Install Python Dependencies:
pip install -r backend/requirements.txt
-
Run Database Migrations:
- Windows (PowerShell):
$env:USE_SQLITE="True"; python backend/manage.py migrate
- macOS / Linux / CMD:
USE_SQLITE=True python backend/manage.py migrate
- Windows (PowerShell):
-
Seed Database with Demo Data:
- Windows (PowerShell):
$env:USE_SQLITE="True"; python backend/manage.py seed_lms
- macOS / Linux / CMD:
USE_SQLITE=True python backend/manage.py seed_lms
- Windows (PowerShell):
-
Start Django Server:
- Windows (PowerShell):
$env:USE_SQLITE="True"; python backend/manage.py runserver 0.0.0.0:8000
- macOS / Linux / CMD:
USE_SQLITE=True python backend/manage.py runserver 0.0.0.0:8000
API will be live at
http://127.0.0.1:8000/api/v1/. - Windows (PowerShell):
Open a NEW terminal window and run:
cd frontend
npm install
npm run devOpen your browser and navigate to http://localhost:5173.
# Build and launch all services with PostgreSQL
docker-compose up --buildAccess the storefront at http://localhost:5173.
# Windows PowerShell
$env:USE_SQLITE="True"; python backend/manage.py test apps.accounts
# Linux / macOS
USE_SQLITE=True python backend/manage.py test apps.accountscd frontend
npm run buildOnline-Learning-Management-System/
βββ π backend
β βββ π apps
β β βββ π accounts # JWT Auth, User Roles, Profiles
β β βββ π analytics # Platform & Instructor Dashboards
β β βββ π certificates # PDF + QR Code Generation
β β βββ π courses # Course Catalog, Categories, Reviews
β β βββ π lessons # Video, Audio, Text Content
β β βββ π notes # Isolated Student Notes
β β βββ π quizzes # Anti-cheat Quiz Engine & Grading
β β βββ π website # Hero Slider & Global Settings
β βββ π config # Django Core Configuration
β βββ π manage.py # Django CLI
β βββ π requirements.txt # Backend Dependencies
β βββ π Dockerfile
βββ π frontend
β βββ π src
β β βββ π components # Reusable Vue Components
β β βββ π layouts # App Layouts (Student, Teacher, Admin)
β β βββ π router # Vue Router Guards & Maps
β β βββ π stores # Pinia State Management
β β βββ π views # Vue Pages (Catalog, Player, Dashboards)
β βββ π package.json # Frontend Dependencies
β βββ π vite.config.ts # Vite Bundler Settings
β βββ π Dockerfile
βββ π docker-compose.yml # Docker Orchestration
βββ π .env.example # Environment Configuration Template
βββ π README.md # Project Documentation
- ποΈ Full-Stack Architecture β Built a modular Django REST API paired with Vue 3 Pinia stores and route guards.
- π Dynamic PDF & QR Generation β Developed automated certificate generation using ReportLab & QRCode upon course completion.
- π Anti-Cheat Engine Design β Implemented server-side quiz question masking to prevent client-side answer inspection.
- π‘οΈ Role-Based Access Control (RBAC) β Designed permission decorators across Student, Instructor, and Admin roles.
MD SAMIUR RAHMAN TANIM
Intern at Codec Technologies
π GitHub | LinkedIn
- Thanks to Codec Technologies for the internship opportunity.
- Django REST Framework & Vue.js core development teams.
- Open-source community for awesome tooling & badges.
Pull requests are welcome! Feel free to fork the repository and submit PRs for any features or improvements.