|
| 1 | +# Learning Management System (LMS) |
| 2 | + |
| 3 | +## 📌 Project Overview |
| 4 | +A comprehensive Learning Management System designed to bridge the gap between teachers and students. This platform features a scalable backend for managing data and a responsive frontend for a seamless user experience. It supports role-based access, course management, assignment tracking, and secure authentication. |
| 5 | + |
| 6 | +## 🚀 Tech Stack |
| 7 | + |
| 8 | +### Frontend |
| 9 | +- **Framework:** React (Vite) |
| 10 | +- **State Management:** Redux Toolkit |
| 11 | +- **Styling:** CSS Modules & Global Variables |
| 12 | +- **Routing:** React Router v6 |
| 13 | +- **HTTP Client:** Axios |
| 14 | + |
| 15 | +### Backend |
| 16 | +- **Runtime:** Node.js |
| 17 | +- **Framework:** Express.js |
| 18 | +- **Database:** PostgreSQL (via Prisma ORM) |
| 19 | +- **Authentication:** JWT (JSON Web Tokens) |
| 20 | +- **Validation:** Joi |
| 21 | +- **Security:** Helmet, CORS, bcrypt |
| 22 | + |
| 23 | +## ✨ Features |
| 24 | + |
| 25 | +### Core |
| 26 | +- **User Authentication:** Secure signup/login with JWT. |
| 27 | +- **Role-Based Access Control (RBAC):** Strict separation between Teacher and Student roles. |
| 28 | + |
| 29 | +### 👩🏫 Teacher Portal |
| 30 | +- **Dashboard:** Overview of created courses. |
| 31 | +- **Course Management:** Create and update courses. |
| 32 | +- **Assignments:** Create assignments and review student submissions. |
| 33 | + |
| 34 | +### 👨🎓 Student Portal |
| 35 | +- **Dashboard:** View enrolled courses. |
| 36 | +- **Enrollment:** Browse and enroll in available courses. |
| 37 | +- **Assignments:** Submit work and track progress. |
| 38 | + |
| 39 | +## 📂 Project Structure |
| 40 | +``` |
| 41 | +Learning_management_system/ |
| 42 | +├── frontend/ # React application |
| 43 | +│ ├── src/ # Components, Pages, Redux Store |
| 44 | +│ └── ... |
| 45 | +├── backend/ # Node.js Express API |
| 46 | +│ ├── src/ # Controllers, Routes, Services, Prisma |
| 47 | +│ └── ... |
| 48 | +└── README.md # Project documentation (this file) |
| 49 | +``` |
| 50 | + |
| 51 | +## 🛠️ Setup & Installation |
| 52 | + |
| 53 | +### Prerequisites |
| 54 | +- Node.js (v18+) |
| 55 | +- PostgreSQL (installed and running) |
| 56 | + |
| 57 | +### 1. Backend Setup |
| 58 | +Navigate to the backend directory and set up the API and database. |
| 59 | + |
| 60 | +```bash |
| 61 | +cd backend |
| 62 | +``` |
| 63 | + |
| 64 | +**Install Dependencies & Setup Environment:** |
| 65 | +You can use the provided setup script or configure manually. |
| 66 | + |
| 67 | +```bash |
| 68 | +# Option A: Automatic Setup |
| 69 | +./setup.sh |
| 70 | + |
| 71 | +# Option B: Manual Setup |
| 72 | +npm install |
| 73 | +cp .env.example .env |
| 74 | +# Edit .env with your DATABASE_URL and JWT_SECRET |
| 75 | +npx prisma migrate dev --name init |
| 76 | +``` |
| 77 | + |
| 78 | +**Start the Server:** |
| 79 | +```bash |
| 80 | +npm run dev |
| 81 | +``` |
| 82 | +> The backend runs on `http://localhost:3000`. |
| 83 | +
|
| 84 | +### 2. Frontend Setup |
| 85 | +Open a new terminal and navigate to the frontend directory. |
| 86 | + |
| 87 | +```bash |
| 88 | +cd frontend |
| 89 | +``` |
| 90 | + |
| 91 | +**Install Dependencies:** |
| 92 | +```bash |
| 93 | +npm install |
| 94 | +``` |
| 95 | + |
| 96 | +**Start the Application:** |
| 97 | +```bash |
| 98 | +npm run dev |
| 99 | +``` |
| 100 | +> The frontend runs on `http://localhost:5173`. |
| 101 | +
|
| 102 | +## 🧪 Verification & Usage |
| 103 | +1. **Register as a Teacher** to create a test course and assignment. |
| 104 | +2. **Register as a Student** (incognito window recommended) to enroll in the course. |
| 105 | +3. **Submit an Assignment** as a student and view it as a teacher. |
| 106 | + |
| 107 | +## ✅ Requirements Fulfillment |
| 108 | +This project satisfies the core requirements for a scalable LMS platform: |
| 109 | +- **Architecture:** Decoupled Frontend and Backend. |
| 110 | +- **Security:** Password hashing, JWT auth, and RBAC middleware. |
| 111 | +- **Database:** Relational schema with Prisma ORM. |
| 112 | +- **Code Quality:** Modular structure, centralized error handling, and input validation. |
0 commit comments