A full-stack platform to manage and upload academic study material (Docs, PDFs, PPTs) with role-based access and structured database design. Built with Node.js, MongoDB, and Next.js.
-
π€ User Registration & JWT-based Authentication
-
π§βπΌ Admin Panel to Create Semesters, Subjects, Units & Upload Materials
-
ποΈ Hierarchical Database:
Semester β Subject β Unit β Materials -
π§Ύ Upload support for Docs, PDFs, PPTs
-
π College email-only access restriction (@mietjammu.in)
-
π Secure Cookie-based Sessions
.
βββ backend
β βββ controllers/ # All core logic (user, material, etc.)
β βββ routes/ # Express routes
β βββ models/ # Mongoose schemas (Sem, Subject, Unit, Material)
β βββ middlewares/ # Auth & token validators
β βββ config/ # DB config
β βββ utils/ # API Response/Error wrappers
β βββ server.js # Entry file
βββ frontend
βββ src/app/ # App Pages & Layout
βββ src/components/ # Custom UI Components
βββ public/ # Static assets
Backend Setup
cd backend
npm install
Create .env file with the following variables:
MONGODB_URI=your_mongodb_url
JTW_SECRET=your_jwt_secret
LOGIN_TOKEN=admin_token_key
FRONTENT_URL=http://localhost:3000
Run the backend server:
node server.js
Frontend Setup
cd frontend
npm install
npm run dev
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/user/register |
Register user |
| POST | /api/v1/user/login |
Login |
| GET | /api/v1/user/logout |
Logout (Auth required) |
| POST | /api/v1/user/admin |
Admin login via token |
| GET | /api/v1/user/admin/getall |
Get all registered users |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/material/create |
Create and attach material to unit |
| DELETE | /api/v1/material/delete |
Remove material from unit |
| POST | /api/v1/material/getall |
Get all materials of a unit |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/sem/create |
Create a new semester |
| DELETE | /api/v1/sem/delete |
Delete a semester |
| GET | /api/v1/sem/admingetall |
Get all semesters (admin) |
| GET | /api/v1/sem/getall |
Get all semesters (public) |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/subject/create |
Create a new subject |
| DELETE | /api/v1/subject/delete |
Delete a subject |
| POST | /api/v1/subject/allsubjects |
Get all subjects in sem |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/unit/create |
Create a unit |
| DELETE | /api/v1/unit/delete |
Delete a unit |
| POST | /api/v1/unit/getall |
Get all units of subject |
-
Frontend: Next.js 14, Tailwind CSS, TypeScript
-
Backend: Express.js, MongoDB, Mongoose
-
Authentication: JWT + Secure Cookies
-
UI Enhancements: Chakra UI + Lottie + Animations
- This project is licensed under the MIT License.