# iamumesh2058/jobify architecture

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

- Interactive diagram: https://gitdiagram.com/iamumesh2058/jobify
- Repository: https://github.com/iamumesh2058/jobify

## Overview

Jobify is a job-application tracker for job seekers, with account registration/login and a dashboard for managing job records and viewing application statistics. The main workflow runs from routed browser pages and forms through API requests to Express routes, controllers, and MongoDB models; profile and admin functions are additional branches. The README documents demo-user access and theme switching. Some frontend components and server wiring were not excerpted, so uncertain links are omitted or marked unverified.

Main entry points: [`client/src/App.jsx`](https://github.com/iamumesh2058/jobify/blob/main/client/src/App.jsx) (Page router), [`client/src/utils/customFetch.js`](https://github.com/iamumesh2058/jobify/blob/main/client/src/utils/customFetch.js) (API client), [`routes/job.routes.js`](https://github.com/iamumesh2058/jobify/blob/main/routes/job.routes.js) (Job routes), [`routes/user.routes.js`](https://github.com/iamumesh2058/jobify/blob/main/routes/user.routes.js) (User routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Browser application"]
  node_router["Page router<br/>[App.jsx]"]
  node_dashboard["Dashboard shell"]
  node_httpclient["API client<br/>[customFetch.js]"]
end

subgraph group_jobs["Job tracking"]
  node_jobforms["Job forms<br/>[AddJob.jsx]"]
  node_joblist["Job search and list<br/>[AllJobs.jsx]"]
  node_jobedit["Job editing<br/>[EditJob.jsx]"]
  node_jobdelete["Job deletion<br/>[DeleteJob.jsx]"]
  node_stats["Application stats<br/>[Stats.jsx]"]
  node_charts["Stats charts"]
  node_jobroutes["Job routes<br/>[job.routes.js]"]
  node_jobcontroller["Job controller<br/>[job.controller.js]"]
  node_jobmodel[("Job records<br/>[job.model.js]")]
end

subgraph group_accounts["Accounts and access"]
  node_accountpages["Login and registration<br/>[Login.jsx]"]
  node_profile["Profile settings<br/>[Profile.jsx]"]
  node_adminpage["Admin overview<br/>[Admin.jsx]"]
  node_authroutes["Auth routes<br/>[auth.routes.js]"]
  node_userroutes["User routes<br/>[user.routes.js]"]
  node_authcontroller["Auth controller<br/>[auth.controller.js]"]
  node_usercontroller["User controller<br/>[user.controller.js]"]
  node_usermodel[("User records<br/>[user.model.js]")]
end

subgraph group_server["API and persistence"]
  node_api["Express API<br/>[server.js]"]
  node_access["Access and validation<br/>[authMiddleware.js]"]
  node_validation["Input validation"]
end

node_jobseeker(("Job seeker"))

node_jobseeker -->|"uses"| node_router
node_router -->|"routes to"| node_dashboard
node_router -->|"routes to"| node_jobforms
node_router -->|"routes to"| node_joblist
node_router -->|"routes to"| node_jobedit
node_router -->|"routes to"| node_jobdelete
node_router -->|"routes to"| node_stats
node_router -->|"routes to"| node_accountpages
node_router -->|"routes to"| node_profile
node_router -->|"routes to"| node_adminpage
node_stats -.->|"renders"| node_charts
node_jobforms -->|"requests"| node_httpclient
node_joblist -->|"requests"| node_httpclient
node_jobedit -->|"requests"| node_httpclient
node_jobdelete -->|"requests"| node_httpclient
node_stats -->|"requests"| node_httpclient
node_profile -->|"requests"| node_httpclient
node_adminpage -->|"requests"| node_httpclient
node_httpclient -.->|"calls API"| node_api
node_api -->|"mounts"| node_authroutes
node_api -->|"mounts"| node_jobroutes
node_api -->|"mounts"| node_userroutes
node_authroutes -->|"dispatches"| node_authcontroller
node_jobroutes -->|"dispatches"| node_jobcontroller
node_userroutes -->|"dispatches"| node_usercontroller
node_jobroutes -->|"checks access"| node_access
node_jobroutes -->|"validates"| node_validation
node_userroutes -->|"checks access"| node_access
node_userroutes -->|"validates"| node_validation
node_authcontroller -->|"reads and writes"| node_usermodel
node_jobcontroller -->|"reads and writes"| node_jobmodel
node_usercontroller -->|"reads and writes"| node_usermodel
node_usercontroller -->|"reads"| node_jobmodel
node_validation -->|"checks records"| node_jobmodel
node_validation -->|"checks accounts"| node_usermodel

click node_router "https://github.com/iamumesh2058/jobify/blob/main/client/src/App.jsx"
click node_jobforms "https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/AddJob.jsx"
click node_joblist "https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/AllJobs.jsx"
click node_jobedit "https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/EditJob.jsx"
click node_jobdelete "https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/DeleteJob.jsx"
click node_stats "https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/Stats.jsx"
click node_charts "https://github.com/iamumesh2058/jobify/blob/main/client/src/components/ChartsContainer.jsx"
click node_dashboard "https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/DashboardLayout.jsx"
click node_accountpages "https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/Login.jsx"
click node_profile "https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/Profile.jsx"
click node_adminpage "https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/Admin.jsx"
click node_httpclient "https://github.com/iamumesh2058/jobify/blob/main/client/src/utils/customFetch.js"
click node_api "https://github.com/iamumesh2058/jobify/blob/main/server.js"
click node_authroutes "https://github.com/iamumesh2058/jobify/blob/main/routes/auth.routes.js"
click node_jobroutes "https://github.com/iamumesh2058/jobify/blob/main/routes/job.routes.js"
click node_userroutes "https://github.com/iamumesh2058/jobify/blob/main/routes/user.routes.js"
click node_authcontroller "https://github.com/iamumesh2058/jobify/blob/main/controllers/auth.controller.js"
click node_jobcontroller "https://github.com/iamumesh2058/jobify/blob/main/controllers/job.controller.js"
click node_usercontroller "https://github.com/iamumesh2058/jobify/blob/main/controllers/user.controller.js"
click node_access "https://github.com/iamumesh2058/jobify/blob/main/middleware/authMiddleware.js"
click node_validation "https://github.com/iamumesh2058/jobify/blob/main/middleware/validationMiddleware.js"
click node_jobmodel "https://github.com/iamumesh2058/jobify/blob/main/models/job.model.js"
click node_usermodel "https://github.com/iamumesh2058/jobify/blob/main/models/user.model.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_router,node_dashboard,node_httpclient toneBlue
class node_jobforms,node_joblist,node_jobedit,node_jobdelete,node_stats,node_charts,node_jobroutes,node_jobcontroller,node_jobmodel toneAmber
class node_accountpages,node_profile,node_adminpage,node_authroutes,node_userroutes,node_authcontroller,node_usercontroller,node_usermodel toneMint
class node_api,node_access,node_validation toneRose
class node_jobseeker toneIndigo
```

## Components

### Browser application

- [Page router](https://github.com/iamumesh2058/jobify/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Dashboard shell](https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/DashboardLayout.jsx): `client/src/pages/DashboardLayout.jsx`
- [API client](https://github.com/iamumesh2058/jobify/blob/main/client/src/utils/customFetch.js): `client/src/utils/customFetch.js`

### Job tracking

- [Job forms](https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/AddJob.jsx): `client/src/pages/AddJob.jsx`
- [Job search and list](https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/AllJobs.jsx): `client/src/pages/AllJobs.jsx`
- [Job editing](https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/EditJob.jsx): `client/src/pages/EditJob.jsx`
- [Job deletion](https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/DeleteJob.jsx): `client/src/pages/DeleteJob.jsx`
- [Application stats](https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/Stats.jsx): `client/src/pages/Stats.jsx`
- [Stats charts](https://github.com/iamumesh2058/jobify/blob/main/client/src/components/ChartsContainer.jsx): `client/src/components/ChartsContainer.jsx`
- [Job routes](https://github.com/iamumesh2058/jobify/blob/main/routes/job.routes.js): `routes/job.routes.js`
- [Job controller](https://github.com/iamumesh2058/jobify/blob/main/controllers/job.controller.js): `controllers/job.controller.js`
- [Job records](https://github.com/iamumesh2058/jobify/blob/main/models/job.model.js): `models/job.model.js`

### Accounts and access

- [Login and registration](https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/Login.jsx): `client/src/pages/Login.jsx`
- [Profile settings](https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/Profile.jsx): `client/src/pages/Profile.jsx`
- [Admin overview](https://github.com/iamumesh2058/jobify/blob/main/client/src/pages/Admin.jsx): `client/src/pages/Admin.jsx`
- [Auth routes](https://github.com/iamumesh2058/jobify/blob/main/routes/auth.routes.js): `routes/auth.routes.js`
- [User routes](https://github.com/iamumesh2058/jobify/blob/main/routes/user.routes.js): `routes/user.routes.js`
- [Auth controller](https://github.com/iamumesh2058/jobify/blob/main/controllers/auth.controller.js): `controllers/auth.controller.js`
- [User controller](https://github.com/iamumesh2058/jobify/blob/main/controllers/user.controller.js): `controllers/user.controller.js`
- [User records](https://github.com/iamumesh2058/jobify/blob/main/models/user.model.js): `models/user.model.js`

### API and persistence

- [Express API](https://github.com/iamumesh2058/jobify/blob/main/server.js): `server.js`
- [Access and validation](https://github.com/iamumesh2058/jobify/blob/main/middleware/authMiddleware.js): `middleware/authMiddleware.js`
- [Input validation](https://github.com/iamumesh2058/jobify/blob/main/middleware/validationMiddleware.js): `middleware/validationMiddleware.js`

### Other components

- **Job seeker**

## Connections

- Job seeker → Page router: uses (evidence: `client/src/App.jsx`)
- Page router → Dashboard shell: routes to (evidence: `client/src/App.jsx`)
- Page router → Job forms: routes to (evidence: `client/src/App.jsx`)
- Page router → Job search and list: routes to (evidence: `client/src/App.jsx`)
- Page router → Job editing: routes to (evidence: `client/src/App.jsx`)
- Page router → Job deletion: routes to (evidence: `client/src/App.jsx`)
- Page router → Application stats: routes to (evidence: `client/src/App.jsx`)
- Page router → Login and registration: routes to (evidence: `client/src/App.jsx`)
- Page router → Profile settings: routes to (evidence: `client/src/App.jsx`)
- Page router → Admin overview: routes to (evidence: `client/src/App.jsx`)
- Application stats → Stats charts: renders
- Job forms → API client: requests (evidence: `client/src/pages/AddJob.jsx`)
- Job search and list → API client: requests (evidence: `client/src/pages/AllJobs.jsx`)
- Job editing → API client: requests (evidence: `client/src/pages/EditJob.jsx`)
- Job deletion → API client: requests (evidence: `client/src/pages/DeleteJob.jsx`)
- Application stats → API client: requests (evidence: `client/src/pages/Stats.jsx`)
- Profile settings → API client: requests (evidence: `client/src/pages/Profile.jsx`)
- Admin overview → API client: requests (evidence: `client/src/pages/Admin.jsx`)
- API client → Express API: calls API
- Express API → Auth routes: mounts (evidence: `server.js`)
- Express API → Job routes: mounts (evidence: `server.js`)
- Express API → User routes: mounts (evidence: `server.js`)
- Auth routes → Auth controller: dispatches (evidence: `routes/auth.routes.js`)
- Job routes → Job controller: dispatches (evidence: `routes/job.routes.js`)
- User routes → User controller: dispatches (evidence: `routes/user.routes.js`)
- Job routes → Access and validation: checks access (evidence: `routes/job.routes.js`)
- Job routes → Input validation: validates (evidence: `routes/job.routes.js`)
- User routes → Access and validation: checks access (evidence: `routes/user.routes.js`)
- User routes → Input validation: validates (evidence: `routes/user.routes.js`)
- Auth controller → User records: reads and writes (evidence: `controllers/auth.controller.js`)
- Job controller → Job records: reads and writes (evidence: `controllers/job.controller.js`)
- User controller → User records: reads and writes (evidence: `controllers/user.controller.js`)
- User controller → Job records: reads (evidence: `controllers/user.controller.js`)
- Input validation → Job records: checks records (evidence: `middleware/validationMiddleware.js`)
- Input validation → User records: checks accounts (evidence: `middleware/validationMiddleware.js`)
