{"id":31286857,"url":"https://github.com/mubasshir14/university_management_client","last_synced_at":"2026-05-08T07:32:07.902Z","repository":{"id":305169613,"uuid":"1021706513","full_name":"Mubasshir14/university_management_client","owner":"Mubasshir14","description":"University Management System, designed to streamline and digitize the entire academic and administrative process of a university.","archived":false,"fork":false,"pushed_at":"2025-10-24T19:29:39.000Z","size":2052,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-24T21:14:09.796Z","etag":null,"topics":["chartjs","framer-motion","lucide-react","nextjs","react-hook-form","react-select","shadcn-ui","sonner","tailwind-css","typescript"],"latest_commit_sha":null,"homepage":"https://university-management-client.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mubasshir14.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-17T20:17:21.000Z","updated_at":"2025-10-24T19:29:43.000Z","dependencies_parsed_at":"2025-09-05T13:12:16.687Z","dependency_job_id":"4e97d409-71d0-49fa-942b-ca2443c98395","html_url":"https://github.com/Mubasshir14/university_management_client","commit_stats":null,"previous_names":["mubasshir14/university_management_client"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mubasshir14/university_management_client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubasshir14%2Funiversity_management_client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubasshir14%2Funiversity_management_client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubasshir14%2Funiversity_management_client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubasshir14%2Funiversity_management_client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mubasshir14","download_url":"https://codeload.github.com/Mubasshir14/university_management_client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubasshir14%2Funiversity_management_client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32770992,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T02:36:36.067Z","status":"ssl_error","status_checked_at":"2026-05-08T02:36:07.210Z","response_time":54,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chartjs","framer-motion","lucide-react","nextjs","react-hook-form","react-select","shadcn-ui","sonner","tailwind-css","typescript"],"created_at":"2025-09-24T10:26:26.890Z","updated_at":"2026-05-08T07:32:07.844Z","avatar_url":"https://github.com/Mubasshir14.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## University Course Registration System\n\n### Live \n\n🚀 **Try it Live!**\n\n- [Live](https://university-management-client.vercel.app)\n\n### Overview\n\nThe **University Course Registration System** is a robust, full-stack backend application designed to manage the academic lifecycle of a university. Built with modern technologies, it facilitates seamless student admissions, course registrations, result generation, and administrative tasks. This system ensures efficient handling of student data, course assignments, and faculty management while enforcing credit limits, preventing duplicate registrations, and providing insightful dashboards for admins. It supports role-based access control for admins, students, and users, making it scalable for educational institutions.\n\nThe frontend is a responsive Next.js application providing an intuitive UI for all users.\n\n### Key Features\n\n#### UI/UX Features\n\n- **Student Registration \u0026 Course Selection**: Students can register for courses within credit limits, view timetables, and calculate total credits.\n- **View Credit Load and Timetable**: Real-time display of enrolled courses, credit loads, and schedules.\n- **Admin View to Assign Advisors, Update Departments**: Role-based admin dashboard for managing advisors, departments, and faculties.\n- **Add/Edit/Remove Courses and Students**: CRUD operations for courses and student profiles.\n- **Register Student to Courses**: Secure enrollment with validation for prerequisites and availability.\n- **Prevent Duplicate Registration**: Built-in checks to avoid re-enrollment in the same course.\n- **Drop a Course**: Students and admins can drop courses with approval workflows.\n- **Get Course-Wise Student List**: Query and export lists of students per course.\n- **Filter Students by Department and Semester/Course**: Advanced filtering for reports and analytics.\n- **Calculate Total Credit**: Automatic computation of credit hours during registration.\n- **Assign Advisors**: Admin tool to link students with faculty advisors.\n\n#### Core Modules\n\n- **Home Page**: Overview of the university, including faculties, departments, academic achievements, and admission programs.\n- **Dashboards**: Role-based dashboards for:\n  - **Admin**: Manage approvals, views, and assignments.\n  - **Users**: General access to profiles and verifications.\n  - **Students**: Personal registration, results, and profiles.\n\n#### Student Admission \u0026 Registration\n\n- Students apply for admission via an online form.\n- **Admin** reviews and approves applications.\n- Post-approval, students register by selecting:\n  - **Department**\n  - **Academic Session** (Spring, Summer, or Fall)\n  - **Academic Semester** (1st Year 1st Semester, 2nd Year 1st Semester...)\n- During registration:\n  - Select courses within **minimum and maximum credit limits**.\n  - Drop courses if needed, with admin oversight.\n\n#### Admin Functionalities\n\n- Add \u0026 Edit **Departments**, **Faculties**, and **Semesters**.\n- Approve student **admissions** and **course registrations**.\n- View students filtered by:\n  - **Courses**\n  - **Departments**\n  - **Semesters**\n- Assign and manage **Course Advisors**.\n- Generate and view student **results**.\n\n## Technologies \u0026 Tools Used\n\n### Backend\n\n#### Core Technologies\n\n- **TypeScript**: Strong typing for maintainable code.\n- **Express.js**: Server and API framework.\n- **MongoDB**: NoSQL database with **Mongoose** for schema modeling.\n- **Cloudinary**: Media storage for images and files.\n- **Zod**: Runtime schema validation.\n\n#### Developer Utilities\n\n- **Environment Variables**: Via `dotenv`.\n- **Linting and Formatting**: ESLint and Prettier.\n- **Development Server**: `ts-node-dev` for hot reloading.\n\n#### Authentication \u0026 Security\n\n- **jsonwebtoken (JWT)**: Token-based auth with access/refresh tokens.\n- **cors**: Cross-origin resource sharing.\n- **ua-parser-js**: User agent parsing for device tracking.\n- **bcrypt**: Password hashing.\n\n#### File \u0026 Media Uploads\n\n- **multer**: Multipart form handling.\n- **multer-storage-cloudinary**: Direct uploads to Cloudinary.\n\n#### Communication\n\n- **nodemailer**: Server-side email sending (e.g., verification).\n\n#### HTTP Utilities\n\n- **http-status / http-status-codes**: Standardized status codes.\n\n### Frontend\n\n#### Core Technologies\n\n- **Next.js (v15.4.1)**: React framework for server-side rendering and static site generation.\n- **React (v19.1.0)**: Library for building user interfaces.\n- **TypeScript**: Type safety across components and logic.\n\n#### State Management \u0026 Forms\n\n- **React Hook Form (v7.60.0)**: Form handling with validation.\n- **Formik (v2.4.6)**: Alternative form library for complex forms.\n- **Zod (v4.0.5)**: Schema validation integrated with forms.\n- **@hookform/resolvers (v5.1.1)**: Zod resolver for React Hook Form.\n\n#### UI Components \u0026 Styling\n\n- **Tailwind CSS (v4)**: Utility-first CSS framework.\n- **Radix UI**: Headless UI primitives for accessibility:\n  - `@radix-ui/react-avatar`, `@radix-ui/react-checkbox`, `@radix-ui/react-collapsible`, `@radix-ui/react-dialog`, `@radix-ui/react-dropdown-menu`, `@radix-ui/react-label`, `@radix-ui/react-select`, `@radix-ui/react-separator`, `@radix-ui/react-slot`, `@radix-ui/react-tabs`, `@radix-ui/react-tooltip`.\n- **Class Variance Authority (CVA v0.7.1)** \u0026 **clsx (v2.1.1)**: Utility for dynamic class generation.\n- **Tailwind Merge (v3.3.1)**: Merge Tailwind classes efficiently.\n- **Lucide React (v0.525.0)**: Icon library.\n- **React Icons (v5.5.0)**: Additional icons.\n- **React Select (v5.10.2)**: Customizable select components.\n- **Sonner (v2.0.6)**: Toast notifications.\n\n#### Data Visualization \u0026 Charts\n\n- **Chart.js (v4.5.0)** \u0026 **React Chartjs 2 (v5.3.0)**: Charting library.\n- **chartjs-plugin-datalabels (v2.2.0)**: Data labels for charts.\n\n#### File Handling \u0026 Utilities\n\n- **React Dropzone (v14.3.8)**: Drag-and-drop file uploads.\n- **jsPDF (v3.0.1)** \u0026 **jsPDF-AutoTable (v5.0.2)**: PDF generation and table exports.\n- **React Masonry CSS (v1.0.16)**: Masonry layout for grids.\n- **Framer Motion (v12.23.6)**: Animations and gestures.\n- **JWT Decode (v4.0.0)**: Decode JWT tokens client-side.\n\n#### Development Tools\n\n- **ESLint (v9)** \u0026 **eslint-config-next**: Linting with Next.js config.\n- **@types/**: Type definitions for Node, React, etc.\n\n## Prerequisites\n\n- **Node.js** (v16 or higher)\n- **npm** or **yarn**\n- **MongoDB** (local or cloud, e.g., MongoDB Atlas)\n\n## Installation\n\n### Backend\n\n1. **Clone the Repository**:\n\n   ```bash\n   git clone https://github.com/Mubasshir14/university_management_server.git\n   cd university_management_server\n   ```\n\n2. **Install Dependencies**:\n\n   ```bash\n   npm install\n   ```\n\n3. **Set Up Environment Variables**:\n   Create a `.env` file in the root directory:\n\n   ```env\n   # Environment\n   NODE_ENV=development\n   PORT=5000\n\n   # Database\n   DATABASE_URL=your-mongodb-uri\n\n   # Security\n   BCRYPT_SALT_ROUND=12\n\n   # JWT Secrets\n   JWT_ACCESS_SECRET=your-access-token-secret\n   JWT_REFRESH_SECRET=your-refresh-token-secret\n   JWT_ACCESS_EXPIRES_IN=10d\n   JWT_REFRESH_EXPIRES_IN=365d\n\n   # Email Verification\n   CLIENT_URL=http://localhost:3000\n\n   # Cloudinary\n   CLOUDINARY_CLOUD_NAME=your-cloud-name\n   CLOUDINARY_API_KEY=your-api-key\n   CLOUDINARY_API_SECRET=your-api-secret\n\n   # Nodemailer\n   FROM_EMAIL=your-sender-email\n   FROM_PASS=your-sender-password\n   ```\n\n### Frontend\n\n1. **Clone or Navigate to Client Repo**:\n\n   ```bash\n    git clone https://github.com/Mubasshir14/university_management_client.git\n    cd university_management_client\n   ```\n\n2. **Install Dependencies**:\n\n   ```bash\n   npm install\n   ```\n\n3. **Environment Variables**:\n   Create `.env.local`:\n   ```bash\n   NEXT_PUBLIC_BASE_API=http://localhost:5000/api\n   NEXT_PUBLIC_BASE_F_API=http://localhost:3000\n   ```\n\n### Usage\n\n#### Backend Scripts\n\nRun these via `npm run \u003cscript\u003e` in the backend directory:\n\n| Script          | Description                              |\n| --------------- | ---------------------------------------- |\n| `start:dev`     | Start development server with hot reload |\n| `build`         | Compile TypeScript to JavaScript         |\n| `start:prod`    | Start production server                  |\n| `lint`          | Check code linting issues                |\n| `lint:fix`      | Auto-fix linting issues                  |\n| `prettier`      | Format code with Prettier                |\n| `prettier:fix`  | Auto-fix formatting issues               |\n| `vercel --prod` | Deploy to Vercel (if configured)         |\n\nExample: Start dev server → `npm run start:dev` (runs on `http://localhost:5000`).\n\n### Frontend Scripts\n\nRun these via `npm run \u003cscript\u003e` in the frontend directory:\n\n| Script  | Description              |\n| ------- | ------------------------ |\n| `dev`   | Start development server |\n| `build` | Build for production     |\n| `start` | Start production server  |\n| `lint`  | Run ESLint               |\n\nExample: Start dev server → `npm run dev` (runs on `http://localhost:3000`).\n\n### API Endpoints Overview\n\nAll endpoints are prefixed with `/api` (e.g., `/api/auth/login`). Authentication is required for most routes (via JWT in headers). Methods, paths, and roles are noted where applicable.\n\n#### Auth (`/auth`)\n\n| Method | Path               | Description          | Auth Required |\n| ------ | ------------------ | -------------------- | ------------- |\n| POST   | `/login`           | User login           | No            |\n| POST   | `/register`        | User registration    | No            |\n| POST   | `/refresh-token`   | Refresh JWT token    | Yes           |\n| POST   | `/logout`          | User logout          | Yes           |\n| POST   | `/change-password` | Change user password | Yes           |\n\n#### Users (`/users`)\n\n| Method | Path            | Description        | Auth Required |\n| ------ | --------------- | ------------------ | ------------- |\n| POST   | `/register`     | Register new user  | No            |\n| GET    | `/verify-email` | Verify email token | No            |\n\n#### Students (`/students`)\n\n| Method | Path                                   | Description                       | Auth Required       |\n| ------ | -------------------------------------- | --------------------------------- | ------------------- |\n| POST   | `/create-student`                      | Create student profile            | Yes (USER)          |\n| PATCH  | `/make-approval/:id`                   | Approve single student            | Yes (ADMIN)         |\n| PATCH  | `/make-approval-many`                  | Approve multiple students         | Yes (ADMIN)         |\n| GET    | `/`                                    | Get all students                  | Yes (ADMIN)         |\n| GET    | `/single-student/:id`                  | Get single student                | Yes (ADMIN)         |\n| GET    | `/db`                                  | Dashboard: Students by department | Yes (ADMIN)         |\n| GET    | `/session`                             | Dashboard: Students by session    | Yes (ADMIN)         |\n| GET    | `/not-approved-student`                | Get unapproved students           | Yes (ADMIN)         |\n| GET    | `/approved-student`                    | Get approved students             | Yes (ADMIN)         |\n| GET    | `/get-me-as-a-student`                 | Get current user as student       | Yes (STUDENT/ADMIN) |\n| POST   | `/get-student-according-to-department` | Filter students by department     | Yes (ADMIN)         |\n| POST   | `/get-student-according-to-session`    | Filter students by session        | Yes (ADMIN)         |\n| POST   | `/get-student-according-to-semester`   | Filter students by semester       | Yes (ADMIN)         |\n| DELETE | `/delete-student/:id`                  | Delete student                    | Yes (ADMIN)         |\n| PATCH  | `/update-student/:id`                  | Update student by admin           | Yes (ADMIN)         |\n\n#### Student IDs (`/student-ids`)\n\n| Method | Path   | Description            | Auth Required |\n| ------ | ------ | ---------------------- | ------------- |\n| POST   | `/`    | Create student ID card | Yes (ADMIN)   |\n| GET    | `/`    | Get all student IDs    | No            |\n| GET    | `/:id` | Get single student ID  | No            |\n| DELETE | `/:id` | Delete student ID      | Yes (ADMIN)   |\n\n#### Courses (`/courses`)\n\n| Method | Path                 | Description                              | Auth Required |\n| ------ | -------------------- | ---------------------------------------- | ------------- |\n| POST   | `/create-course`     | Create new course                        | Yes (ADMIN)   |\n| GET    | `/:id`               | Get single course                        | No            |\n| DELETE | `/:id`               | Delete course                            | Yes (ADMIN)   |\n| GET    | `/student/:id`       | Get courses for student academic session | Yes (STUDENT) |\n| PATCH  | `/update-course/:id` | Update course                            | Yes (ADMIN)   |\n| GET    | `/`                  | Get all courses                          | No            |\n\n#### Registrations (`/registrations`)\n\n| Method | Path                                 | Description                    | Auth Required       |\n| ------ | ------------------------------------ | ------------------------------ | ------------------- |\n| POST   | `/create-registration`               | Create course registration     | Yes (STUDENT)       |\n| POST   | `/my-registration-info`              | Get my registration info       | Yes (STUDENT/ADMIN) |\n| POST   | `/get-student-according-to-course`   | Filter students by course      | Yes (ADMIN)         |\n| PATCH  | `/make-approval/:id`                 | Approve single registration    | Yes (ADMIN)         |\n| PATCH  | `/make-approval-many`                | Approve multiple registrations | Yes (ADMIN)         |\n| GET    | `/not-approved-registration`         | Get unapproved registrations   | Yes (ADMIN)         |\n| GET    | `/approved-registration`             | Get approved registrations     | Yes (ADMIN)         |\n| GET    | `/:id`                               | Get single registration        | Yes (ADMIN/STUDENT) |\n| PATCH  | `/drop-and-update-course-by-student` | Student drops/updates courses  | Yes (STUDENT)       |\n| PATCH  | `/drop-and-update-course-by-admin`   | Admin drops/updates courses    | Yes (ADMIN)         |\n\n#### Results (`/results`)\n\n| Method | Path                        | Description             | Auth Required       |\n| ------ | --------------------------- | ----------------------- | ------------------- |\n| POST   | `/generate/:registrationId` | Generate student result | Yes (ADMIN)         |\n| GET    | `/`                         | Get all student results | Yes (ADMIN)         |\n| POST   | `/my-result`                | Get my result           | Yes (STUDENT/ADMIN) |\n\n#### Faculties (`/faculties`)\n\n| Method | Path              | Description        | Auth Required |\n| ------ | ----------------- | ------------------ | ------------- |\n| POST   | `/create-faculty` | Create faculty     | Yes (ADMIN)   |\n| GET    | `/:id`            | Get single faculty | No            |\n| PATCH  | `/:id`            | Update faculty     | Yes (ADMIN)   |\n| GET    | `/`               | Get all faculties  | No            |\n\n#### Academic Departments (`/academic-departments`)\n\n| Method | Path                               | Description           | Auth Required |\n| ------ | ---------------------------------- | --------------------- | ------------- |\n| POST   | `/create-academic-department`      | Create department     | Yes (ADMIN)   |\n| PATCH  | `/update-department/:departmentId` | Update department     | Yes (ADMIN)   |\n| GET    | `/:departmentId`                   | Get single department | No            |\n| GET    | `/`                                | Get all departments   | No            |\n\n#### Academic Sessions (`/academic-sessions`)\n\n| Method | Path                       | Description                 | Auth Required                    |\n| ------ | -------------------------- | --------------------------- | -------------------------------- |\n| POST   | `/create-academic-session` | Create academic session     | Yes (ADMIN)                      |\n| GET    | `/:courseId`               | Get single academic session | Yes (ADMIN/ADVISOR/STUDENT)      |\n| PATCH  | `/:courseId`               | Update academic session     | Yes (ADMIN)                      |\n| GET    | `/`                        | Get all academic sessions   | Yes (ADMIN/ADVISOR/STUDENT/USER) |\n\nFor full routes, see the `src/modules/*/route.ts` files.\n\n### Folder Structure\n\n```bash\nuniversity_management_server/\n├── src/\n│   ├── app/\n│   │   ├── builder/\n│   │   │   └── QueryBuilder.ts\n│   │   ├── config/\n│   │   │   └── index.ts\n│   │   ├── errors/\n│   │   │   ├── AppError.ts\n│   │   │   ├── handleCastError.ts\n│   │   │   ├── handleDuplicateError.ts\n│   │   │   ├── handleValidationError.ts\n│   │   │   └── handleZodError.ts\n│   │   ├── interface/\n│   │   │   ├── error.ts\n│   │   │   ├── index.d.ts\n│   │   │   └── user.ts\n│   │   ├── middlewares/\n│   │   │   ├── auth.ts\n│   │   │   ├── bodyParse.ts\n│   │   │   ├── clientInfoParser.ts\n│   │   │   ├── globalErrorhandler.ts\n│   │   │   ├── notFound.ts\n│   │   │   └── validateRequest.ts\n│   │   ├── routes/\n│   │   │   └── index.ts\n│   │   ├── types/\n│   │   │   └── express.d.ts\n│   │   └── utils/\n│   │       ├── catchAsync.ts\n│   │       ├── cloudinary.config.ts\n│   │       ├── multer.config.ts\n│   │       ├── sendEmails.ts\n│   │       ├── sendResponse.ts\n│   │       └── sendUserVerificationEmail.ts\n│   ├── modules/\n│   │   ├── AcademicDepartment/\n│   │   │   ├── academicDepartment.controller.ts\n│   │   │   ├── academicDepartment.interface.ts\n│   │   │   ├── academicDepartment.model.ts\n│   │   │   ├── academicDepartment.route.ts\n│   │   │   ├── academicDepartment.service.ts\n│   │   │   ├── academicDepartment.validation.ts\n│   │   │   └── academicDepartmets.constant.ts\n│   │   ├── AcademicSession/\n│   │   │   ├── academicSession.constant.ts\n│   │   │   ├── academicSession.controller.ts\n│   │   │   ├── academicSession.interface.ts\n│   │   │   ├── academicSession.model.ts\n│   │   │   ├── academicSession.route.ts\n│   │   │   ├── academicSession.service.ts\n│   │   │   └── academicSession.validation.ts\n│   │   ├── Auth/\n│   │   │   ├── auth.controller.ts\n│   │   │   ├── auth.interface.ts\n│   │   │   ├── auth.route.ts\n│   │   │   ├── auth.service.ts\n│   │   │   ├── auth.utils.ts\n│   │   │   └── auth.validation.ts\n│   │   ├── Course/\n│   │   │   ├── course.constant.ts\n│   │   │   ├── course.controller.ts\n│   │   │   ├── course.interface.ts\n│   │   │   ├── course.model.ts\n│   │   │   ├── course.route.ts\n│   │   │   ├── course.service.ts\n│   │   │   └── course.validation.ts\n│   │   ├── Faculty/\n│   │   │   ├── faculty.constant.ts\n│   │   │   ├── faculty.controller.ts\n│   │   │   ├── faculty.interface.ts\n│   │   │   ├── faculty.model.ts\n│   │   │   ├── faculty.route.ts\n│   │   │   ├── faculty.service.ts\n│   │   │   ├── faculty.validation.ts\n│   │   │   └── generateFacultyId.ts\n│   │   ├── Registration/\n│   │   │   ├── registration.controller.ts\n│   │   │   ├── registration.interface.ts\n│   │   │   ├── registration.model.ts\n│   │   │   ├── registrstion.route.ts\n│   │   │   └── registrstion.sservice.ts\n│   │   ├── Result/\n│   │   │   ├── result.constant.ts\n│   │   │   ├── result.controller.ts\n│   │   │   ├── result.iterface.ts\n│   │   │   ├── result.model.ts\n│   │   │   ├── result.routes.ts\n│   │   │   ├── result.service.ts\n│   │   │   └── result.utils.ts\n│   │   ├── Student/\n│   │   │   ├── generateStudentId.ts\n│   │   │   ├── student.constant.ts\n│   │   │   ├── student.controller.ts\n│   │   │   ├── student.interface.ts\n│   │   │   ├── student.model.ts\n│   │   │   ├── student.route.ts\n│   │   │   ├── student.service.ts\n│   │   │   └── student.validation.ts\n│   │   ├── StudentID/\n│   │   │   ├── studentid.controller.ts\n│   │   │   ├── studentid.interface.ts\n│   │   │   ├── studentid.model.ts\n│   │   │   ├── studentid.route.ts\n│   │   │   └── studentid.service.ts\n│   │   └── User/\n│   │       ├── user.constant.ts\n│   │       ├── user.controller.ts\n│   │       ├── user.interface.ts\n│   │       ├── user.model.ts\n│   │       ├── user.route.ts\n│   │       ├── user.service.ts\n│   │       └── user.validation.ts\n│   ├── app.ts\n│   └── server.ts\n├── package.json\n├── tsconfig.json\n└── .env (example)\n```\n\n```bash\nuniversity_management_client/\n├── src/\n│   ├── app/\n│   │   ├── (WithCommonLayout)/\n│   │   │   ├── about/\n│   │   │   │   └── page.tsx\n│   │   │   ├── contact/\n│   │   │   │   └── page.tsx\n│   │   │   ├── department/\n│   │   │   │   ├── [id]/\n│   │   │   │   │   └── page.tsx\n│   │   │   │   └── page.tsx\n│   │   │   ├── faculty/\n│   │   │   │   ├── [id]/\n│   │   │   │   │   └── page.tsx\n│   │   │   │   └── page.tsx\n│   │   │   ├── get-admit/\n│   │   │   │   └── page.tsx\n│   │   │   ├── layout.tsx\n│   │   │   └── page.tsx\n│   │   ├── (WithDashboardLayout)/\n│   │   │   ├── admin/\n│   │   │   │   └── dashboard/\n│   │   │   │       ├── add-advisor/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── add-course/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── add-department/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── add-session/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── approve-registration/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── course-drop-individual-registration/\n│   │   │   │       │   ├── [id]/\n│   │   │   │       │   │   └── page.tsx\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── filter-course/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── filter-department/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── filter-semester/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── filter-session/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── generate-result/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── manage-advisor/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── manage-course/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── manage-department/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── manage-session/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── manage-student/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── manage-studentid/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── pending-registration/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── student-result/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── update-course/\n│   │   │   │       │   └── [id]/\n│   │   │   │       │       └── page.tsx\n│   │   │   │       ├── update-department/\n│   │   │   │       │   └── [id]/\n│   │   │   │       │       └── page.tsx\n│   │   │   │       ├── update-student/\n│   │   │   │       │   └── [id]/\n│   │   │   │       │       └── page.tsx\n│   │   │   │       ├── waiting-approval/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       └── page.tsx\n│   │   │   ├── student/\n│   │   │   │   └── dashboard/\n│   │   │   │       ├── my-information/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── my-result/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── registration/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── registration-information/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       ├── update-registration-information/\n│   │   │   │       │   └── page.tsx\n│   │   │   │       └── page.tsx\n│   │   │   ├── user/\n│   │   │   │   └── dashboard/\n│   │   │   │       └── page.tsx\n│   │   │   └── layout.tsx\n│   │   ├── login/\n│   │   │   └── page.tsx\n│   │   ├── signup/\n│   │   │   └── page.tsx\n│   │   ├── verify-email/\n│   │   │   └── page.tsx\n│   │   ├── verify-notice/\n│   │   │   └── page.tsx\n│   │   ├── error.tsx\n│   │   ├── globals.css\n│   │   ├── layout.tsx\n│   │   ├── loading.tsx\n│   │   └── not-found.tsx\n│   ├── assets/\n│   │   ├── a-woman-stands-near-the-smartphone-on-the-screen-error-404-page-system-error-png.webp\n│   │   ├── campus.jpg\n│   │   ├── download.jpg\n│   │   ├── thumb_1200_1698.png\n│   │   └── university-education-logo-design-template-free-vector.jpg\n│   ├── components/\n│   │   ├── constant/\n│   │   │   └── index.ts\n│   │   ├── context/\n│   │   │   └── UserContext.tsx\n│   │   ├── dashboard/\n│   │   │   └── sidebar/\n│   │   │       ├── app-sidebar.tsx\n│   │   │       ├── nav-main.tsx\n│   │   │       └── nav-user.tsx\n│   │   ├── DashboardComponents/\n│   │   │   ├── AddCourse.tsx\n│   │   │   ├── AddDepartment.tsx\n│   │   │   ├── AddFaculty.tsx\n│   │   │   ├── AddSession.tsx\n│   │   │   ├── AdminDashboard.tsx\n│   │   │   ├── ApproveRegistration.tsx\n│   │   │   ├── Course.tsx\n│   │   │   ├── CreateRegistrationForm.tsx\n│   │   │   ├── Department.tsx\n│   │   │   ├── FilterByCourse.tsx\n│   │   │   ├── FilterStudentByDepartment.tsx\n│   │   │   ├── FilterStudentBySemester.tsx\n│   │   │   ├── FilterStudentBySession.tsx\n│   │   │   ├── GenerateResultForm.tsx\n│   │   │   ├── ManageCourse.tsx\n│   │   │   ├── ManageDepartment.tsx\n│   │   │   ├── ManageFaculty.tsx\n│   │   │   ├── ManageSession.tsx\n│   │   │   ├── ManageStudent.tsx\n│   │   │   ├── ManageStudentID.tsx\n│   │   │   ├── MyInformation.tsx\n│   │   │   ├── MyRegistrationInformation.tsx\n│   │   │   ├── MyResult.tsx\n│   │   │   ├── PendingRegistration.tsx\n│   │   │   ├── Semester.tsx\n│   │   │   ├── Session.tsx\n│   │   │   ├── StudentResult.tsx\n│   │   │   ├── UpdateCourse.tsx\n│   │   │   ├── UpdateDepartment.tsx\n│   │   │   ├── UpdateIndividualCourseByAdmin.tsx\n│   │   │   ├── UpdateRegistrationInformation.tsx\n│   │   │   ├── UpdateStudent.tsx\n│   │   │   └── WaitingApproval.tsx\n│   │   ├── lib/\n│   │   │   ├── providers/\n│   │   │   │   ├── Providers.tsx\n│   │   │   │   └── StoreProvider.tsx\n│   │   │   ├── redux/\n│   │   │   │   ├── hooks.ts\n│   │   │   │   ├── storage.ts\n│   │   │   │   └── store.ts\n│   │   │   └── utils.ts\n│   │   ├── Services/\n│   │   │   ├── AuthService/\n│   │   │   │   └── index.ts\n│   │   │   ├── Course/\n│   │   │   │   └── index.tsx\n│   │   │   ├── Department/\n│   │   │   │   └── index.ts\n│   │   │   ├── Faculty/\n│   │   │   │   └── index.ts\n│   │   │   ├── Registration/\n│   │   │   │   └── index.ts\n│   │   │   ├── result/\n│   │   │   │   └── index.ts\n│   │   │   ├── Session/\n│   │   │   │   └── index.ts\n│   │   │   ├── Student/\n│   │   │   │   └── index.ts\n│   │   │   └── StudentID/\n│   │   │       └── index.ts\n│   │   ├── Shared/\n│   │   │   ├── AboutUs.tsx\n│   │   │   ├── AcademicPrograms.tsx\n│   │   │   ├── AdmissionsAid.tsx\n│   │   │   ├── ContactUs.tsx\n│   │   │   ├── Department.tsx\n│   │   │   ├── DepartmentDetail.tsx\n│   │   │   ├── EventCarousel.tsx\n│   │   │   ├── Faculty.tsx\n│   │   │   ├── FacultyDetails.tsx\n│   │   │   ├── FeatureCards.tsx\n│   │   │   ├── Footer.tsx\n│   │   │   ├── Gallery.tsx\n│   │   │   ├── HeroSection.tsx\n│   │   │   ├── LoginRegister.tsx\n│   │   │   ├── Navbar.tsx\n│   │   │   ├── NewsAnnouncements.tsx\n│   │   │   ├── ResearchInnovation.tsx\n│   │   │   ├── StatisticsView.tsx\n│   │   │   └── Student.tsx\n│   │   ├── Types/\n│   │   │   ├── faculty.ts\n│   │   │   ├── session.ts\n│   │   │   ├── student.ts\n│   │   │   └── user.ts\n│   │   └── ui/\n│   │       ├── core/\n│   │       │   ├── NMImageUploader/\n│   │       │   │   ├── ImagePreviewer.tsx\n│   │       │   │   └── index.tsx\n│   │       │   ├── NMModal/\n│   │       │   │   └── DeleteConfirmationModal.tsx\n│   │       │   ├── NMTable/\n│   │       │   │   ├── index.tsx\n│   │       │   │   └── TablePagination.tsx\n│   │       │   ├── CategoryCard.tsx\n│   │       │   ├── NMContainer.tsx\n│   │       │   └── ProductCard.tsx\n│   │       ├── avatar.tsx\n│   │       ├── badge.tsx\n│   │       ├── button.tsx\n│   │       ├── card.tsx\n│   │       ├── checkbox.tsx\n│   │       ├── collapsible.tsx\n│   │       ├── dialog.tsx\n│   │       ├── dropdown-menu.tsx\n│   │       ├── form.tsx\n│   │       ├── input.tsx\n│   │       ├── label.tsx\n│   │       ├── select.tsx\n│   │       ├── separator.tsx\n│   │       ├── sheet.tsx\n│   │       ├── sidebar.tsx\n│   │       ├── skeleton.tsx\n│   │       ├── table.tsx\n│   │       ├── tabs.tsx\n│   │       ├── textarea.tsx\n│   │       └── tooltip.tsx\n│   ├── hooks/\n│   │   └── use-mobile.ts\n│   └── lib/\n│       └── utils.ts\n└── middleware.ts\n```\n\n### Contributing\n\nWe welcome contributions! Follow these steps:\n\n1. **Fork** the repository.\n2. **Create a feature/bugfix branch**: `git checkout -b feature/amazing-feature`.\n3. **Commit changes**: Use descriptive messages (e.g., `git commit -m \"Add: course duplicate prevention\"`).\n4. **Push to branch**: `git push origin feature/amazing-feature`.\n5. **Open a Pull Request** on GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmubasshir14%2Funiversity_management_client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmubasshir14%2Funiversity_management_client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmubasshir14%2Funiversity_management_client/lists"}