# karthikeyavb/cvortex architecture

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

- Interactive diagram: https://gitdiagram.com/karthikeyavb/cvortex
- Repository: https://github.com/karthikeyavb/cvortex

## Overview

ATS Resume Builder is a job-seeker web app for building, uploading, scoring, improving, and tailoring resumes, with account and blog features. In the builder workflow, users enter resume sections, the frontend saves them through the builder API, and the preview requests generated ATS-ready HTML. Upload analysis, scoring, improvement, and job-description analysis are distinct product stages represented in the tree and README; their detailed implementations were not sampled, so only documented or registered connections are shown. The source excerpts also show file-backed builder data alongside MongoDB-backed user and blog models.

Main entry points: [`frontend/src/App.jsx`](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/App.jsx) (App Routes), [`Backend/Routes/resumeBuilderRoutes.js`](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/resumeBuilderRoutes.js) (Builder API), [`Backend/app.js`](https://github.com/karthikeyavb/cvortex/blob/main/Backend/app.js) (Express App), [`Backend/Routes/resumeRoute.js`](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/resumeRoute.js) (Resume API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Job Seeker App"]
  node_app_ui["App Routes<br/>[App.jsx]"]
  node_builder_context["Builder State"]
  node_builder_forms["Resume Sections"]
  node_preview_ui["Resume Preview<br/>[ResumePreview.jsx]"]
  node_upload_ui["Resume Upload<br/>[UploadResume.jsx]"]
  node_score_ui["Resume Score<br/>[ResumeScore.jsx]"]
  node_improve_ui["Resume Improvement<br/>[ImproveResume.jsx]"]
  node_jd_ui["Job Description Analysis<br/>[JDAnalyzer.jsx]"]
  node_blog_ui["Blog Experience<br/>[BlogPage.jsx]"]
end

subgraph group_resume["Resume Workflows"]
  node_builder_routes["Builder API"]
  node_builder_controller["Builder Sessions"]
  node_resume_generator["Resume HTML Generator"]
  node_resume_routes["Resume API<br/>[resumeRoute.js]"]
  node_upload_routes["Upload API<br/>[uploadRoute.js]"]
  node_resume_parser["Resume Parser<br/>[resumeParser.js]"]
  node_resume_scorer["Resume Scoring<br/>[resumeScorer.js]"]
  node_jd_routes["Job Analysis API<br/>[jdRoutes.js]"]
  node_jd_analyzer["Job Analyzer<br/>[jdAnalyzer.js]"]
end

subgraph group_identity["Accounts and Content"]
  node_user_routes["User API<br/>[userRoute.js]"]
  node_user_controller["Account Services<br/>[userController.js]"]
  node_user_model[("User Records<br/>[user.js]")]
  node_blog_routes["Blog API<br/>[blogRoute.js]"]
  node_blog_controller["Blog Handlers<br/>[blogController.js]"]
  node_blog_service["Blog Operations<br/>[blogService.js]"]
  node_blog_model[("Blog Records<br/>[blog.js]")]
end

subgraph group_platform["Backend Platform"]
  node_backend_app["Express App<br/>[app.js]"]
end

node_jobseeker(("Job Seeker"))
node_mongo[("MongoDB")]
node_mailer["Email Service"]

node_jobseeker -->|"uses"| node_app_ui
node_app_ui -->|"routes to"| node_builder_forms
node_builder_forms -->|"updates sections"| node_builder_context
node_builder_context -->|"saves and reads"| node_builder_routes
node_builder_routes -->|"dispatches"| node_builder_controller
node_builder_controller -->|"writes and reads file"| node_builder_routes
node_preview_ui -->|"requests generation"| node_builder_routes
node_builder_routes -->|"parses and renders"| node_resume_generator
node_resume_generator -->|"returns HTML"| node_builder_routes
node_app_ui -->|"routes to"| node_upload_ui
node_upload_ui -->|"uploads resume"| node_upload_routes
node_app_ui -->|"routes to"| node_score_ui
node_score_ui -->|"requests score"| node_resume_routes
node_app_ui -->|"routes to"| node_improve_ui
node_improve_ui -->|"requests improvement"| node_resume_routes
node_resume_routes -->|"dispatches parsing"| node_resume_parser
node_resume_routes -->|"dispatches scoring"| node_resume_scorer
node_app_ui -->|"routes to"| node_jd_ui
node_jd_ui -->|"submits description"| node_jd_routes
node_jd_routes -->|"dispatches"| node_jd_analyzer
node_app_ui -->|"routes to"| node_blog_ui
node_blog_ui -->|"uses blog API"| node_blog_routes
node_backend_app -->|"mounts at"| node_builder_routes
node_backend_app -->|"mounts at"| node_resume_routes
node_backend_app -->|"mounts at"| node_upload_routes
node_backend_app -->|"mounts at"| node_jd_routes
node_backend_app -->|"mounts at"| node_user_routes
node_backend_app -->|"mounts at"| node_blog_routes
node_user_routes -->|"dispatches"| node_user_controller
node_user_controller -->|"reads and writes"| node_user_model
node_user_model -->|"persists in"| node_mongo
node_user_controller -.->|"sends reset OTP"| node_mailer
node_blog_routes -->|"dispatches"| node_blog_controller
node_blog_controller -->|"calls"| node_blog_service
node_blog_service -->|"reads and writes"| node_blog_model
node_blog_model -->|"persists in"| node_mongo

click node_app_ui "https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/App.jsx"
click node_builder_context "https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/contexts/ResumeBuilderContext.jsx"
click node_builder_forms "https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/PersonalInformation.jsx"
click node_preview_ui "https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/ResumePreview.jsx"
click node_upload_ui "https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/UploadResume.jsx"
click node_score_ui "https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/ResumeScore.jsx"
click node_improve_ui "https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/ImproveResume.jsx"
click node_jd_ui "https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/JDAnalyzer.jsx"
click node_blog_ui "https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/BlogPage.jsx"
click node_backend_app "https://github.com/karthikeyavb/cvortex/blob/main/Backend/app.js"
click node_builder_routes "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/resumeBuilderRoutes.js"
click node_builder_controller "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/resumeBuilderController.js"
click node_resume_generator "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Utils/generateComprehensiveResume.js"
click node_resume_routes "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/resumeRoute.js"
click node_upload_routes "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/uploadRoute.js"
click node_resume_parser "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/resumeParser.js"
click node_resume_scorer "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/resumeScorer.js"
click node_jd_routes "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/jdRoutes.js"
click node_jd_analyzer "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/jdAnalyzer.js"
click node_user_routes "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/userRoute.js"
click node_user_controller "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/userController.js"
click node_user_model "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Models/user.js"
click node_blog_routes "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/blogRoute.js"
click node_blog_controller "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/blogController.js"
click node_blog_service "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Services/blogService.js"
click node_blog_model "https://github.com/karthikeyavb/cvortex/blob/main/Backend/Models/blog.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_ui,node_builder_context,node_builder_forms,node_preview_ui,node_upload_ui,node_score_ui,node_improve_ui,node_jd_ui,node_blog_ui toneBlue
class node_builder_routes,node_builder_controller,node_resume_generator,node_resume_routes,node_upload_routes,node_resume_parser,node_resume_scorer,node_jd_routes,node_jd_analyzer,node_mongo toneAmber
class node_user_routes,node_user_controller,node_user_model,node_blog_routes,node_blog_controller,node_blog_service,node_blog_model toneMint
class node_backend_app toneRose
class node_jobseeker,node_mailer toneIndigo
```

## Components

### Job Seeker App

- [App Routes](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Builder State](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/contexts/ResumeBuilderContext.jsx): `frontend/src/contexts/ResumeBuilderContext.jsx`
- [Resume Sections](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/PersonalInformation.jsx): `frontend/src/pages/PersonalInformation.jsx`
- [Resume Preview](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/ResumePreview.jsx): `frontend/src/pages/ResumePreview.jsx`
- [Resume Upload](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/UploadResume.jsx): `frontend/src/pages/UploadResume.jsx`
- [Resume Score](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/ResumeScore.jsx): `frontend/src/pages/ResumeScore.jsx`
- [Resume Improvement](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/ImproveResume.jsx): `frontend/src/pages/ImproveResume.jsx`
- [Job Description Analysis](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/JDAnalyzer.jsx): `frontend/src/pages/JDAnalyzer.jsx`
- [Blog Experience](https://github.com/karthikeyavb/cvortex/blob/main/frontend/src/pages/BlogPage.jsx): `frontend/src/pages/BlogPage.jsx`

### Resume Workflows

- [Builder API](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/resumeBuilderRoutes.js): `Backend/Routes/resumeBuilderRoutes.js`
- [Builder Sessions](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/resumeBuilderController.js): `Backend/Controllers/resumeBuilderController.js`
- [Resume HTML Generator](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Utils/generateComprehensiveResume.js): `Backend/Utils/generateComprehensiveResume.js`
- [Resume API](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/resumeRoute.js): `Backend/Routes/resumeRoute.js`
- [Upload API](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/uploadRoute.js): `Backend/Routes/uploadRoute.js`
- [Resume Parser](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/resumeParser.js): `Backend/Controllers/resumeParser.js`
- [Resume Scoring](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/resumeScorer.js): `Backend/Controllers/resumeScorer.js`
- [Job Analysis API](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/jdRoutes.js): `Backend/Routes/jdRoutes.js`
- [Job Analyzer](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/jdAnalyzer.js): `Backend/Controllers/jdAnalyzer.js`

### Accounts and Content

- [User API](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/userRoute.js): `Backend/Routes/userRoute.js`
- [Account Services](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/userController.js): `Backend/Controllers/userController.js`
- [User Records](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Models/user.js): `Backend/Models/user.js`
- [Blog API](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Routes/blogRoute.js): `Backend/Routes/blogRoute.js`
- [Blog Handlers](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Controllers/blogController.js): `Backend/Controllers/blogController.js`
- [Blog Operations](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Services/blogService.js): `Backend/Services/blogService.js`
- [Blog Records](https://github.com/karthikeyavb/cvortex/blob/main/Backend/Models/blog.js): `Backend/Models/blog.js`

### Backend Platform

- [Express App](https://github.com/karthikeyavb/cvortex/blob/main/Backend/app.js): `Backend/app.js`

### Other components

- **Job Seeker**
- **MongoDB**
- **Email Service**

## Connections

- Job Seeker → App Routes: uses
- App Routes → Resume Sections: routes to
- Resume Sections → Builder State: updates sections
- Builder State → Builder API: saves and reads
- Builder API → Builder Sessions: dispatches
- Builder Sessions → Builder API: writes and reads file
- Resume Preview → Builder API: requests generation
- Builder API → Resume HTML Generator: parses and renders
- Resume HTML Generator → Builder API: returns HTML
- App Routes → Resume Upload: routes to
- Resume Upload → Upload API: uploads resume
- App Routes → Resume Score: routes to
- Resume Score → Resume API: requests score
- App Routes → Resume Improvement: routes to
- Resume Improvement → Resume API: requests improvement
- Resume API → Resume Parser: dispatches parsing
- Resume API → Resume Scoring: dispatches scoring
- App Routes → Job Description Analysis: routes to
- Job Description Analysis → Job Analysis API: submits description
- Job Analysis API → Job Analyzer: dispatches
- App Routes → Blog Experience: routes to
- Blog Experience → Blog API: uses blog API
- Express App → Builder API: mounts at
- Express App → Resume API: mounts at
- Express App → Upload API: mounts at
- Express App → Job Analysis API: mounts at
- Express App → User API: mounts at
- Express App → Blog API: mounts at
- User API → Account Services: dispatches
- Account Services → User Records: reads and writes
- User Records → MongoDB: persists in
- Account Services → Email Service: sends reset OTP
- Blog API → Blog Handlers: dispatches
- Blog Handlers → Blog Operations: calls
- Blog Operations → Blog Records: reads and writes
- Blog Records → MongoDB: persists in
