A smart study planner that transforms your subjects, time, and goals into a structured, day-by-day roadmap β built as a full-stack college prototype by Team Idea Catalysts.
EduPlanner is a web application designed to help students stop guessing and start planning. Instead of wondering "what do I study today?", EduPlanner takes your subject, the days you have left, and your difficulty preference β and generates a prioritized, topic-by-topic study schedule tailored just for you.
Beyond roadmap generation, EduPlanner is a complete academic companion: track your progress, manage your subjects, access teacher-uploaded resources, and stay on top of announcements β all from a single, clean dashboard.
- πΊοΈ Smart Roadmap Generation β Input a subject and days remaining; get a day-wise study plan sorted by topic priority and exam frequency
- π Subject Manager β Add, edit, delete, and mark subjects as complete, with search and filter support
- π Progress Tracking β Visual progress bars and completion percentages update in real-time
- π Study Analytics β Weekly study hour charts powered by Recharts
- π’ Announcements β Stay informed with teacher and admin posts
- π€ Resource Upload β Share PDFs, links, videos, and notes tagged to specific topics
- π·οΈ Topic Tagging β Assign priority levels to topics to influence roadmap generation
- π’ Post Announcements β Communicate updates directly to students
- π₯ User Management β View and manage students and teachers
- βοΈ System Control β Oversee platform settings and data integrity
- OTP Email Verification β New users verify their account via a 6-digit OTP sent to their inbox
- JWT-based Auth β Secure, stateless authentication with role-based route protection
- bcrypt Password Hashing β Passwords are never stored in plain text
- Protected Routes β Frontend guards prevent unauthorized access based on user role
EduPlanner/
βββ frontend/ # React (Vite) SPA
β βββ src/
β βββ pages/ # Route-level components (Dashboard, Roadmap, Subjectsβ¦)
β βββ components/ # Reusable UI (Navbar, Sidebar, DarkModeToggle)
β βββ layouts/ # DashboardLayout wrapper
β βββ utils/ # ProtectedRoute, helpers
β βββ styles/ # Global and auth-specific CSS
β βββ api.js # Axios instance (baseURL: localhost:5000/api)
β
βββ backend/ # Node.js + Express REST API
βββ src/
βββ app.js # Entry point, middleware, route registration
βββ config/
β βββ db.js # MongoDB connection via Mongoose
βββ models/ # Mongoose schemas
β βββ User.js
β βββ Topic.js
β βββ Roadmap.js
β βββ Resource.js
β βββ File.js
βββ controllers/ # Business logic
β βββ authController.js
β βββ roadmapController.js
β βββ topicController.js
β βββ resourceController.js
β βββ fileController.js
βββ routes/ # Express routers
βββ middleware/ # JWT auth guard, Multer upload handler
βββ seedTopics.js # Pre-seeds DBMS & DSA topic data
The heart of EduPlanner is its roadmap generation algorithm, living in roadmapController.js.
Here's how it works:
- Input β Subject name, days remaining, difficulty level (
easy/medium/hard) - Topic Fetch β Retrieves all topics for the subject from MongoDB
- Priority Sorting β Topics are sorted by
priorityScore(a composite metric combining exam frequency, difficulty, and teacher-assigned importance) β highest priority first - Day Planning β Topics are distributed across days based on available study hours:
easyβ 2 hours/daymediumβ 4 hours/dayhardβ 6 hours/day
- Persistence β The generated roadmap is saved to the
Roadmapcollection and linked to the student's user ID - Output β A structured day-wise plan returned to the frontend for display and checkbox-based tracking
Topics that exceed a day's remaining hours are deferred to the next day, ensuring the plan is always realistic.
| Model | Key Fields |
|---|---|
User |
name, email, password (hashed), role, OTP fields, isVerified |
Topic |
subject, name, basePriority, priorityScore, examFrequency, difficulty, estimatedHours |
Roadmap |
userId, subject, daysLeft, difficulty, plan[ {day, topics[]} ], progress |
Resource |
teacherId, subject, topicId, title, link, type, isApproved, relevanceScore |
File |
fileName, fileData (Buffer), mimeType, fileSize, uploadedBy, role |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
POST |
/api/auth/register |
Register + send OTP | Public |
POST |
/api/auth/verify-otp |
Verify OTP, activate account | Public |
POST |
/api/auth/login |
Login, receive JWT | Public |
GET |
/api/auth/profile |
Get current user info | π JWT |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
POST |
/api/roadmap/generate-roadmap |
Generate a new study roadmap | π JWT |
GET |
/api/roadmap/my-roadmap |
Fetch user's saved roadmaps | π JWT |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
GET |
/api/topics/:subject |
Get topics for a subject | π JWT |
POST |
/api/topics/ |
Create a topic (teacher/admin) | π JWT |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
POST |
/api/resources |
Add a resource (teacher/admin) | π JWT |
GET |
/api/resources/:subject |
Get approved resources | π JWT |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/files/upload |
Upload a file (PDF/DOCX/TXT, max 3MB) |
GET |
/api/files/ |
List all files (metadata only) |
GET |
/api/files/download/:id |
Download a file |
GET |
/api/files/preview/:id |
Preview a file in browser |
DELETE |
/api/files/:id |
Delete a file |
- Node.js β₯ 20
- MongoDB Atlas URI (or local MongoDB)
- Gmail account for OTP email (with App Password enabled)
git clone https://github.com/zephyrzip/Edu-Planner.git
cd eduplannercd backend
npm installCreate a .env file in /backend:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_super_secret_key
EMAIL_USER=your_gmail@gmail.com
EMAIL_PASS=your_gmail_app_passwordStart the backend:
npm run dev# From inside /backend
node seedTopics.jsThis populates MongoDB with 22 pre-built topics for DBMS and DSA β ready for roadmap generation immediately.
cd ../frontend
npm install
npm run devThe app will be available at http://localhost:5173.
- Dark / Light Mode β Persistent theme toggle, stored in
localStorage, applied globally via body class - Glassmorphism Design β Frosted-glass cards with backdrop blur and translucent backgrounds
- Fixed Navbar + Sidebar β Always-visible navigation with smooth hover transitions
- Recharts Integration β Weekly study hour bar charts in the student dashboard
- Animated Entry β Fade-in animations on auth pages for a polished feel
- Responsive Layout β Sidebar + main content grid adapts cleanly across screen sizes
| Member | Role | Contributions |
|---|---|---|
| Sounak Biswas | Backend Developer | Express setup, MongoDB, full auth system (JWT/OTP/bcrypt), roadmap engine, all API routes, database models, seed script |
| Raunak Dasgupta | Frontend Developer | Project setup, routing, auth UI, dashboard, charts, progress tracking, roadmap display, UI/UX design |
| Tathagata Ghoshray | Backend QA | Code review, file upload backend component, auth controller refinement, backend testing |
| Sayanti Sarkar | Documentation & QA | README, frontend testing, demo data setup |
This project is licensed under the MIT License β see the LICENSE file for details.
Copyright (c) 2026 Sounak Biswas
Built with π by Team Idea Catalysts β 2nd Year CSE, Semester 4