# abarna-s-2006/prepnest architecture

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

- Interactive diagram: https://gitdiagram.com/abarna-s-2006/prepnest
- Repository: https://github.com/abarna-s-2006/prepnest

## Overview

PrepNest is a placement-preparation platform: students register or log in, practice across aptitude, coding, discussion, interview, and resume modules, then review readiness and progress. The React app uses a REST API backed by Express controllers and JSON-file persistence. Coding submissions additionally execute through a local code runner; resume analysis extracts PDF text before ATS scoring. Recommendation, weak-area, and achievement utilities support personalized feedback across modules. The README documents several capabilities whose controller implementations were not sampled; those branches are included at the documented subsystem level.

Main entry points: [`client/src/App.jsx`](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/App.jsx) (App Router), [`server/server.js`](https://github.com/abarna-s-2006/prepnest/blob/main/server/server.js) (Express API), [`client/src/services/api.js`](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/services/api.js) (API Client), [`server/utils/jsonDb.js`](https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/jsonDb.js) (JSON File Store)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Student App"]
  node_app["App Router<br/>[App.jsx]"]
  node_auth_ui["Auth Context<br/>[AuthContext.jsx]"]
  node_api_client["API Client<br/>[api.js]"]
  node_dashboard_ui["Dashboard<br/>[Dashboard.jsx]"]
  node_aptitude_ui["Aptitude Practice<br/>[Aptitude.jsx]"]
  node_coding_ui["Coding Studio<br/>[Coding.jsx]"]
  node_gd_ui["Discussion Playbook"]
  node_hr_ui["Interview Studio<br/>[HRInterview.jsx]"]
  node_resume_ui["Resume Analyzer<br/>[ResumeATS.jsx]"]
  node_progress_ui["Progress Analytics<br/>[Progress.jsx]"]
end

subgraph group_api["API and Identity"]
  node_server["Express API<br/>[server.js]"]
  node_auth["Authentication<br/>[authController.js]"]
  node_auth_middleware["JWT Guard<br/>[authMiddleware.js]"]
end

subgraph group_practice["Practice Modules"]
  node_aptitude["Aptitude Service"]
  node_coding["Coding Service"]
  node_gd["Discussion Service<br/>[gdController.js]"]
  node_hr["Interview Service<br/>[hrController.js]"]
  node_resume["Resume Service"]
end

subgraph group_analytics["Insights"]
  node_dashboard["Dashboard Service"]
  node_progress["Progress Service"]
  node_weak_areas["Weak Area Detector"]
  node_recommendations["Study Recommendations"]
  node_achievements["Achievement Engine"]
end

subgraph group_runtime["Persistence and Execution"]
  node_store[("JSON File Store<br/>[jsonDb.js]")]
  node_runner["Code Runner<br/>[codeRunner.js]"]
  node_ats["ATS Checker<br/>[atsChecker.js]"]
end

node_student(("Student"))

node_student -->|"uses"| node_app
node_app -->|"provides auth"| node_auth_ui
node_app -->|"routes to"| node_dashboard_ui
node_app -->|"routes to"| node_aptitude_ui
node_app -->|"routes to"| node_coding_ui
node_app -->|"routes to"| node_gd_ui
node_app -->|"routes to"| node_hr_ui
node_app -->|"routes to"| node_resume_ui
node_app -->|"routes to"| node_progress_ui
node_auth_ui -->|"requests"| node_api_client
node_dashboard_ui -->|"requests"| node_api_client
node_aptitude_ui -->|"requests"| node_api_client
node_coding_ui -->|"requests"| node_api_client
node_gd_ui -->|"requests"| node_api_client
node_hr_ui -->|"requests"| node_api_client
node_resume_ui -->|"requests"| node_api_client
node_progress_ui -->|"requests"| node_api_client
node_api_client -->|"sends REST"| node_server
node_server -->|"dispatches auth"| node_auth
node_server -->|"dispatches aptitude"| node_aptitude
node_server -->|"dispatches coding"| node_coding
node_server -->|"dispatches discussion"| node_gd
node_server -->|"dispatches interview"| node_hr
node_server -->|"dispatches resume"| node_resume
node_server -->|"dispatches dashboard"| node_dashboard
node_server -->|"dispatches progress"| node_progress
node_aptitude -->|"protected by"| node_auth_middleware
node_coding -->|"protected by"| node_auth_middleware
node_resume -->|"protected by"| node_auth_middleware
node_auth -->|"reads and writes"| node_store
node_aptitude -->|"reads and writes"| node_store
node_coding -->|"reads and writes"| node_store
node_gd -->|"tracks activity"| node_store
node_hr -->|"tracks answers"| node_store
node_resume -->|"stores analysis"| node_store
node_dashboard -->|"reads activity"| node_store
node_progress -->|"reads activity"| node_store
node_coding -->|"executes code"| node_runner
node_resume -->|"scores extracted text"| node_ats
node_dashboard -->|"analyzes activity"| node_weak_areas
node_dashboard -->|"builds study plan"| node_recommendations
node_recommendations -->|"uses analysis"| node_weak_areas
node_aptitude -->|"evaluates badges"| node_achievements
node_coding -->|"evaluates badges"| node_achievements
node_resume -->|"evaluates badges"| node_achievements
node_achievements -->|"checks readiness"| node_weak_areas
node_achievements -->|"reads and writes"| node_store

click node_app "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/App.jsx"
click node_auth_ui "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/context/AuthContext.jsx"
click node_api_client "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/services/api.js"
click node_dashboard_ui "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/Dashboard.jsx"
click node_aptitude_ui "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/Aptitude.jsx"
click node_coding_ui "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/Coding.jsx"
click node_gd_ui "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/GroupDiscussion.jsx"
click node_hr_ui "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/HRInterview.jsx"
click node_resume_ui "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/ResumeATS.jsx"
click node_progress_ui "https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/Progress.jsx"
click node_server "https://github.com/abarna-s-2006/prepnest/blob/main/server/server.js"
click node_auth "https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/authController.js"
click node_auth_middleware "https://github.com/abarna-s-2006/prepnest/blob/main/server/middleware/authMiddleware.js"
click node_aptitude "https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/aptitudeController.js"
click node_coding "https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/codingController.js"
click node_gd "https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/gdController.js"
click node_hr "https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/hrController.js"
click node_resume "https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/resumeController.js"
click node_dashboard "https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/dashboardController.js"
click node_progress "https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/progressController.js"
click node_weak_areas "https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/weakAreaDetector.js"
click node_recommendations "https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/recommendationEngine.js"
click node_achievements "https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/achievementEngine.js"
click node_store "https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/jsonDb.js"
click node_runner "https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/codeRunner.js"
click node_ats "https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/atsChecker.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_auth_ui,node_api_client,node_dashboard_ui,node_aptitude_ui,node_coding_ui,node_gd_ui,node_hr_ui,node_resume_ui,node_progress_ui toneBlue
class node_server,node_auth,node_auth_middleware toneAmber
class node_aptitude,node_coding,node_gd,node_hr,node_resume toneMint
class node_dashboard,node_progress,node_weak_areas,node_recommendations,node_achievements toneRose
class node_store,node_runner,node_ats,node_student toneIndigo
```

## Components

### Student App

- [App Router](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Auth Context](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/context/AuthContext.jsx): `client/src/context/AuthContext.jsx`
- [API Client](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/services/api.js): `client/src/services/api.js`
- [Dashboard](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/Dashboard.jsx): `client/src/pages/Dashboard.jsx`
- [Aptitude Practice](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/Aptitude.jsx): `client/src/pages/Aptitude.jsx`
- [Coding Studio](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/Coding.jsx): `client/src/pages/Coding.jsx`
- [Discussion Playbook](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/GroupDiscussion.jsx): `client/src/pages/GroupDiscussion.jsx`
- [Interview Studio](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/HRInterview.jsx): `client/src/pages/HRInterview.jsx`
- [Resume Analyzer](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/ResumeATS.jsx): `client/src/pages/ResumeATS.jsx`
- [Progress Analytics](https://github.com/abarna-s-2006/prepnest/blob/main/client/src/pages/Progress.jsx): `client/src/pages/Progress.jsx`

### API and Identity

- [Express API](https://github.com/abarna-s-2006/prepnest/blob/main/server/server.js): `server/server.js`
- [Authentication](https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [JWT Guard](https://github.com/abarna-s-2006/prepnest/blob/main/server/middleware/authMiddleware.js): `server/middleware/authMiddleware.js`

### Practice Modules

- [Aptitude Service](https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/aptitudeController.js): `server/controllers/aptitudeController.js`
- [Coding Service](https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/codingController.js): `server/controllers/codingController.js`
- [Discussion Service](https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/gdController.js): `server/controllers/gdController.js`
- [Interview Service](https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/hrController.js): `server/controllers/hrController.js`
- [Resume Service](https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/resumeController.js): `server/controllers/resumeController.js`

### Insights

- [Dashboard Service](https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/dashboardController.js): `server/controllers/dashboardController.js`
- [Progress Service](https://github.com/abarna-s-2006/prepnest/blob/main/server/controllers/progressController.js): `server/controllers/progressController.js`
- [Weak Area Detector](https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/weakAreaDetector.js): `server/utils/weakAreaDetector.js`
- [Study Recommendations](https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/recommendationEngine.js): `server/utils/recommendationEngine.js`
- [Achievement Engine](https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/achievementEngine.js): `server/utils/achievementEngine.js`

### Persistence and Execution

- [JSON File Store](https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/jsonDb.js): `server/utils/jsonDb.js`
- [Code Runner](https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/codeRunner.js): `server/utils/codeRunner.js`
- [ATS Checker](https://github.com/abarna-s-2006/prepnest/blob/main/server/utils/atsChecker.js): `server/utils/atsChecker.js`

### Other components

- **Student**

## Connections

- Student → App Router: uses
- App Router → Auth Context: provides auth
- App Router → Dashboard: routes to
- App Router → Aptitude Practice: routes to
- App Router → Coding Studio: routes to
- App Router → Discussion Playbook: routes to
- App Router → Interview Studio: routes to
- App Router → Resume Analyzer: routes to
- App Router → Progress Analytics: routes to
- Auth Context → API Client: requests
- Dashboard → API Client: requests
- Aptitude Practice → API Client: requests
- Coding Studio → API Client: requests
- Discussion Playbook → API Client: requests
- Interview Studio → API Client: requests
- Resume Analyzer → API Client: requests
- Progress Analytics → API Client: requests
- API Client → Express API: sends REST
- Express API → Authentication: dispatches auth
- Express API → Aptitude Service: dispatches aptitude
- Express API → Coding Service: dispatches coding
- Express API → Discussion Service: dispatches discussion
- Express API → Interview Service: dispatches interview
- Express API → Resume Service: dispatches resume
- Express API → Dashboard Service: dispatches dashboard
- Express API → Progress Service: dispatches progress
- Aptitude Service → JWT Guard: protected by
- Coding Service → JWT Guard: protected by
- Resume Service → JWT Guard: protected by
- Authentication → JSON File Store: reads and writes
- Aptitude Service → JSON File Store: reads and writes
- Coding Service → JSON File Store: reads and writes
- Discussion Service → JSON File Store: tracks activity
- Interview Service → JSON File Store: tracks answers
- Resume Service → JSON File Store: stores analysis
- Dashboard Service → JSON File Store: reads activity
- Progress Service → JSON File Store: reads activity
- Coding Service → Code Runner: executes code
- Resume Service → ATS Checker: scores extracted text
- Dashboard Service → Weak Area Detector: analyzes activity
- Dashboard Service → Study Recommendations: builds study plan
- Study Recommendations → Weak Area Detector: uses analysis
- Aptitude Service → Achievement Engine: evaluates badges
- Coding Service → Achievement Engine: evaluates badges
- Resume Service → Achievement Engine: evaluates badges
- Achievement Engine → Weak Area Detector: checks readiness
- Achievement Engine → JSON File Store: reads and writes
