# pritam-parali/minor_project-job_portal- architecture

> Architecture diagram of the GitHub repository pritam-parali/minor_project-job_portal-, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pritam-parali/minor_project-job_portal-
- Repository: https://github.com/pritam-parali/minor_project-job_portal-

## Overview

Jobportal is a full-stack job marketplace: users discover jobs, register and sign in, apply with a CV, and recruiters manage listings and applicants; administrators view usage and job analytics. The graph follows the explicit application routing, server mounts, and sampled job/application handlers. Several frontend pages and backend route/controller implementations are represented only by their paths and names, so their internal wiring is not inferred.

Main entry points: [`jobportal/src/App.jsx`](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/App.jsx) (Application router), [`server/server.js`](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/server.js) (HTTP server), [`server/routes/jobRoutes.js`](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/routes/jobRoutes.js) (Job routes), [`server/controllers/applicationController.js`](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/applicationController.js) (Application handlers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["Application router<br/>[App.jsx]"]
  node_job_pages["Job pages<br/>[Job.jsx]"]
  node_apply_page["Apply page<br/>[Apply.jsx]"]
  node_account_pages["Account pages<br/>[Register.jsx]"]
  node_profile_page["Profile page<br/>[Myprofile.jsx]"]
  node_applicants_page["Applicants page"]
  node_api_client["API client<br/>[axios.js]"]
  node_job_service["Job service<br/>[jobService.js]"]
end

subgraph group_identity["Accounts and access"]
  node_auth["Authentication<br/>[authMiddleware.js]"]
  node_registration["Registration handler"]
  node_login["Login handler<br/>[loginController.js]"]
  node_otp["OTP verification<br/>[otp.js]"]
  node_mail["Email service<br/>[sendEmail.js]"]
  node_profile_routes["Profile endpoint<br/>[profileRoutes.js]"]
  node_register_model["User records<br/>[register.js]"]
end

subgraph group_marketplace["Jobs and applications"]
  node_server["HTTP server<br/>[server.js]"]
  node_job_routes["Job routes<br/>[jobRoutes.js]"]
  node_application_routes["Application routes"]
  node_application_controller["Application handlers"]
  node_job_controller["Job handlers<br/>[jobController.js]"]
  node_application_model["Applications<br/>[Application.js]"]
  node_job_model["Job listings<br/>[Job.js]"]
end

subgraph group_operations["Administration"]
  node_admin_ui["Admin dashboard<br/>[AdminDashboard.jsx]"]
  node_admin_api["Admin API client<br/>[adminApi.js]"]
  node_admin_routes["Admin routes<br/>[adminRoutes.js]"]
  node_admin_controller["Admin analytics<br/>[adminController.js]"]
end

node_visitor(("Job portal user"))
node_database[("MongoDB<br/>[db.js]")]

node_visitor -->|"uses"| node_app
node_app -->|"renders"| node_job_pages
node_app -->|"routes to"| node_apply_page
node_app -->|"routes to"| node_account_pages
node_app -->|"routes to"| node_profile_page
node_app -->|"routes to"| node_applicants_page
node_app -->|"routes to"| node_admin_ui
node_job_service -->|"calls"| node_api_client
node_api_client -->|"sends requests"| node_server
node_server -->|"mounts /api/jobs"| node_job_routes
node_server -->|"mounts /api/applications"| node_application_routes
node_server -->|"mounts /api/profile"| node_profile_routes
node_server -->|"mounts /api/admin"| node_admin_routes
node_job_routes -->|"protects creation"| node_auth
node_job_routes -->|"creates and reads"| node_job_model
node_job_routes -->|"dispatches listing"| node_job_controller
node_application_routes -->|"protects endpoints"| node_auth
node_application_routes -->|"dispatches"| node_application_controller
node_application_controller -->|"checks job"| node_job_model
node_application_controller -->|"creates and queries"| node_application_model
node_application_controller -->|"populates applicant"| node_register_model
node_profile_routes -->|"protects profile"| node_auth
node_profile_routes -->|"reads profile"| node_register_model
node_registration -->|"saves user"| node_register_model
node_registration -->|"generates and hashes"| node_otp
node_registration -->|"sends verification"| node_mail
node_admin_api -->|"uses client"| node_api_client
node_admin_routes -->|"dispatches analytics"| node_admin_controller
node_admin_controller -->|"counts users"| node_register_model
node_admin_controller -->|"aggregates jobs"| node_job_model
node_server -->|"connects"| node_database

click node_app "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/App.jsx"
click node_job_pages "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/Job.jsx"
click node_apply_page "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/Apply.jsx"
click node_account_pages "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/Register.jsx"
click node_profile_page "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/Myprofile.jsx"
click node_applicants_page "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/MyJobApplicants.jsx"
click node_api_client "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/api/axios.js"
click node_job_service "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/api/jobService.js"
click node_admin_ui "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/admin/AdminDashboard.jsx"
click node_admin_api "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/api/adminApi.js"
click node_server "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/server.js"
click node_job_routes "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/routes/jobRoutes.js"
click node_application_routes "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/routes/applicationRoutes.js"
click node_application_controller "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/applicationController.js"
click node_job_controller "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/jobController.js"
click node_application_model "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/models/Application.js"
click node_job_model "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/models/Job.js"
click node_auth "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/middleware/authMiddleware.js"
click node_registration "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/registerController.js"
click node_login "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/loginController.js"
click node_otp "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/utils/otp.js"
click node_mail "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/utils/sendEmail.js"
click node_profile_routes "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/routes/profileRoutes.js"
click node_register_model "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/models/register.js"
click node_admin_routes "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/routes/adminRoutes.js"
click node_admin_controller "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/adminController.js"
click node_database "https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/config/db.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_job_pages,node_apply_page,node_account_pages,node_profile_page,node_applicants_page,node_api_client,node_job_service,node_visitor toneBlue
class node_auth,node_registration,node_login,node_otp,node_mail,node_profile_routes,node_register_model,node_database toneAmber
class node_server,node_job_routes,node_application_routes,node_application_controller,node_job_controller,node_application_model,node_job_model toneMint
class node_admin_ui,node_admin_api,node_admin_routes,node_admin_controller toneRose
```

## Components

### Web client

- [Application router](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/App.jsx): `jobportal/src/App.jsx`
- [Job pages](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/Job.jsx): `jobportal/src/components/Job.jsx`
- [Apply page](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/Apply.jsx): `jobportal/src/components/Apply.jsx`
- [Account pages](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/Register.jsx): `jobportal/src/components/Register.jsx`
- [Profile page](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/Myprofile.jsx): `jobportal/src/components/Myprofile.jsx`
- [Applicants page](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/components/MyJobApplicants.jsx): `jobportal/src/components/MyJobApplicants.jsx`
- [API client](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/api/axios.js): `jobportal/src/api/axios.js`
- [Job service](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/api/jobService.js): `jobportal/src/api/jobService.js`

### Accounts and access

- [Authentication](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/middleware/authMiddleware.js): `server/middleware/authMiddleware.js`
- [Registration handler](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/registerController.js): `server/controllers/registerController.js`
- [Login handler](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/loginController.js): `server/controllers/loginController.js`
- [OTP verification](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/utils/otp.js): `server/utils/otp.js`
- [Email service](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/utils/sendEmail.js): `server/utils/sendEmail.js`
- [Profile endpoint](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/routes/profileRoutes.js): `server/routes/profileRoutes.js`
- [User records](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/models/register.js): `server/models/register.js`

### Jobs and applications

- [HTTP server](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/server.js): `server/server.js`
- [Job routes](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/routes/jobRoutes.js): `server/routes/jobRoutes.js`
- [Application routes](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/routes/applicationRoutes.js): `server/routes/applicationRoutes.js`
- [Application handlers](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/applicationController.js): `server/controllers/applicationController.js`
- [Job handlers](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/jobController.js): `server/controllers/jobController.js`
- [Applications](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/models/Application.js): `server/models/Application.js`
- [Job listings](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/models/Job.js): `server/models/Job.js`

### Administration

- [Admin dashboard](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/admin/AdminDashboard.jsx): `jobportal/src/admin/AdminDashboard.jsx`
- [Admin API client](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/jobportal/src/api/adminApi.js): `jobportal/src/api/adminApi.js`
- [Admin routes](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/routes/adminRoutes.js): `server/routes/adminRoutes.js`
- [Admin analytics](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/controllers/adminController.js): `server/controllers/adminController.js`

### Other components

- **Job portal user**
- [MongoDB](https://github.com/pritam-parali/minor_project-job_portal-/blob/main/server/config/db.js): `server/config/db.js`

## Connections

- Job portal user → Application router: uses
- Application router → Job pages: renders
- Application router → Apply page: routes to
- Application router → Account pages: routes to
- Application router → Profile page: routes to
- Application router → Applicants page: routes to
- Application router → Admin dashboard: routes to
- Job service → API client: calls
- API client → HTTP server: sends requests
- HTTP server → Job routes: mounts /api/jobs
- HTTP server → Application routes: mounts /api/applications
- HTTP server → Profile endpoint: mounts /api/profile
- HTTP server → Admin routes: mounts /api/admin
- Job routes → Authentication: protects creation
- Job routes → Job listings: creates and reads
- Job routes → Job handlers: dispatches listing
- Application routes → Authentication: protects endpoints
- Application routes → Application handlers: dispatches
- Application handlers → Job listings: checks job
- Application handlers → Applications: creates and queries
- Application handlers → User records: populates applicant
- Profile endpoint → Authentication: protects profile
- Profile endpoint → User records: reads profile
- Registration handler → User records: saves user
- Registration handler → OTP verification: generates and hashes
- Registration handler → Email service: sends verification
- Admin API client → API client: uses client
- Admin routes → Admin analytics: dispatches analytics
- Admin analytics → User records: counts users
- Admin analytics → Job listings: aggregates jobs
- HTTP server → MongoDB: connects
