# nyntdr/career_guidance architecture

> Architecture diagram of the GitHub repository nyntdr/career_guidance, 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/nyntdr/career_guidance
- Repository: https://github.com/nyntdr/career_guidance

## Overview

CareerGuide AI is a Laravel/Inertia career-guidance application. A user registers or signs in, builds a career profile and skill inventory, then receives role matches, skill-gap insights, learning/roadmap guidance, and resume parsing/ATS feedback. The graph emphasizes these user-facing stages, plus admin-managed career/job/skill data. Controller, recommendation, resume, and authentication links are grounded in sampled source; broader feature branches come from the routes and page tree, so their internal service wiring is not inferred.

Main entry points: [`app/Models`](https://github.com/nyntdr/career_guidance/tree/Main/app/Models) (Application data), [`app/Http/Controllers/ResumeController.php`](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/ResumeController.php) (Resume workspace), [`app/Http/Controllers/Auth`](https://github.com/nyntdr/career_guidance/tree/Main/app/Http/Controllers/Auth) (Authentication), [`resources/js/Pages`](https://github.com/nyntdr/career_guidance/tree/Main/resources/js/Pages) (Vue pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and profiles"]
  node_auth["Authentication"]
  node_profile["Career profile"]
end

subgraph group_guidance["Career guidance"]
  node_dashboard["Dashboard"]
  node_recommendations["Role recommendations"]
  node_scoring["Match scoring"]
  node_similarity["Skill similarity"]
  node_gap["Skill gap analysis"]
  node_learning["Learning resources"]
  node_roadmap["Career roadmap"]
  node_careers["Career exploration"]
  node_jobs["Job listings<br/>[JobsController.php]"]
end

subgraph group_resume["Resume and ATS"]
  node_resume_ui["Resume workspace"]
  node_extract["Resume extraction"]
  node_parser["Resume parsing<br/>[ResumeParser.php]"]
  node_ats["ATS scan<br/>[AtsScanner.php]"]
end

subgraph group_catalog["Career catalog administration"]
  node_skill_catalog["Skills catalog"]
  node_job_catalog["Job catalog"]
  node_career_catalog["Career-role admin"]
end

subgraph group_presentation["Web experience"]
  node_frontend["Vue pages"]
  node_inertia["Inertia bootstrap<br/>[app.js]"]
end

node_visitor(("Career seeker"))
node_database[("Application data")]
node_google{{"Google OAuth"}}

node_visitor -->|"uses pages"| node_frontend
node_frontend -->|"mounts"| node_inertia
node_inertia -->|"submits requests"| node_auth
node_auth -.->|"OAuth redirect"| node_google
node_auth -->|"creates users"| node_database
node_auth -->|"signs in"| node_profile
node_profile -->|"stores profile"| node_database
node_dashboard -->|"reads profile data"| node_database
node_dashboard -->|"generates if absent"| node_recommendations
node_recommendations -->|"scores overlap"| node_scoring
node_recommendations -->|"scores semantics"| node_similarity
node_recommendations -->|"stores matches"| node_database
node_gap -->|"reads skill requirements"| node_database
node_learning -->|"reads resources"| node_database
node_roadmap -->|"reads progress"| node_database
node_careers -->|"reads career roles"| node_database
node_jobs -->|"reads postings"| node_database
node_resume_ui -->|"extracts text"| node_extract
node_resume_ui -->|"parses resume"| node_parser
node_resume_ui -->|"requests scan"| node_ats
node_resume_ui -->|"stores resume and scans"| node_database
node_ats -->|"reads jobs and stores scans"| node_database
node_skill_catalog -->|"manages skills"| node_database
node_job_catalog -->|"manages postings"| node_database
node_career_catalog -->|"manages career roles"| node_database
node_auth -->|"renders auth pages"| node_frontend
node_dashboard -->|"renders dashboard"| node_frontend
node_resume_ui -->|"renders resume views"| node_frontend

click node_auth "https://github.com/nyntdr/career_guidance/tree/Main/app/Http/Controllers/Auth"
click node_profile "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/ProfileController.php"
click node_dashboard "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/DashboardController.php"
click node_recommendations "https://github.com/nyntdr/career_guidance/blob/Main/app/Services/RecommendationEngine.php"
click node_scoring "https://github.com/nyntdr/career_guidance/blob/Main/app/Services/RoleMatchScorer.php"
click node_similarity "https://github.com/nyntdr/career_guidance/blob/Main/app/Services/Ml/SkillSimilarity.php"
click node_gap "https://github.com/nyntdr/career_guidance/blob/Main/app/Services/SkillGapAnalyzer.php"
click node_learning "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/LearningController.php"
click node_roadmap "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/RoadmapController.php"
click node_careers "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/CareersController.php"
click node_jobs "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/JobsController.php"
click node_resume_ui "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/ResumeController.php"
click node_extract "https://github.com/nyntdr/career_guidance/blob/Main/app/Services/ResumeTextExtractor.php"
click node_parser "https://github.com/nyntdr/career_guidance/blob/Main/app/Services/ResumeParser.php"
click node_ats "https://github.com/nyntdr/career_guidance/blob/Main/app/Services/AtsScanner.php"
click node_skill_catalog "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/Admin/SkillController.php"
click node_job_catalog "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/Admin/JobPostingController.php"
click node_career_catalog "https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/Admin/CareerRoleController.php"
click node_database "https://github.com/nyntdr/career_guidance/tree/Main/app/Models"
click node_frontend "https://github.com/nyntdr/career_guidance/tree/Main/resources/js/Pages"
click node_inertia "https://github.com/nyntdr/career_guidance/blob/Main/resources/js/app.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_auth,node_profile toneBlue
class node_dashboard,node_recommendations,node_scoring,node_similarity,node_gap,node_learning,node_roadmap,node_careers,node_jobs,node_database toneAmber
class node_resume_ui,node_extract,node_parser,node_ats toneMint
class node_skill_catalog,node_job_catalog,node_career_catalog toneRose
class node_frontend,node_inertia,node_visitor,node_google toneIndigo
```

## Components

### Identity and profiles

- [Authentication](https://github.com/nyntdr/career_guidance/tree/Main/app/Http/Controllers/Auth): `app/Http/Controllers/Auth`
- [Career profile](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/ProfileController.php): `app/Http/Controllers/ProfileController.php`

### Career guidance

- [Dashboard](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/DashboardController.php): `app/Http/Controllers/DashboardController.php`
- [Role recommendations](https://github.com/nyntdr/career_guidance/blob/Main/app/Services/RecommendationEngine.php): `app/Services/RecommendationEngine.php`
- [Match scoring](https://github.com/nyntdr/career_guidance/blob/Main/app/Services/RoleMatchScorer.php): `app/Services/RoleMatchScorer.php`
- [Skill similarity](https://github.com/nyntdr/career_guidance/blob/Main/app/Services/Ml/SkillSimilarity.php): `app/Services/Ml/SkillSimilarity.php`
- [Skill gap analysis](https://github.com/nyntdr/career_guidance/blob/Main/app/Services/SkillGapAnalyzer.php): `app/Services/SkillGapAnalyzer.php`
- [Learning resources](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/LearningController.php): `app/Http/Controllers/LearningController.php`
- [Career roadmap](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/RoadmapController.php): `app/Http/Controllers/RoadmapController.php`
- [Career exploration](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/CareersController.php): `app/Http/Controllers/CareersController.php`
- [Job listings](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/JobsController.php): `app/Http/Controllers/JobsController.php`

### Resume and ATS

- [Resume workspace](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/ResumeController.php): `app/Http/Controllers/ResumeController.php`
- [Resume extraction](https://github.com/nyntdr/career_guidance/blob/Main/app/Services/ResumeTextExtractor.php): `app/Services/ResumeTextExtractor.php`
- [Resume parsing](https://github.com/nyntdr/career_guidance/blob/Main/app/Services/ResumeParser.php): `app/Services/ResumeParser.php`
- [ATS scan](https://github.com/nyntdr/career_guidance/blob/Main/app/Services/AtsScanner.php): `app/Services/AtsScanner.php`

### Career catalog administration

- [Skills catalog](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/Admin/SkillController.php): `app/Http/Controllers/Admin/SkillController.php`
- [Job catalog](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/Admin/JobPostingController.php): `app/Http/Controllers/Admin/JobPostingController.php`
- [Career-role admin](https://github.com/nyntdr/career_guidance/blob/Main/app/Http/Controllers/Admin/CareerRoleController.php): `app/Http/Controllers/Admin/CareerRoleController.php`

### Web experience

- [Vue pages](https://github.com/nyntdr/career_guidance/tree/Main/resources/js/Pages): `resources/js/Pages`
- [Inertia bootstrap](https://github.com/nyntdr/career_guidance/blob/Main/resources/js/app.js): `resources/js/app.js`

### Other components

- **Career seeker**
- [Application data](https://github.com/nyntdr/career_guidance/tree/Main/app/Models): `app/Models`
- **Google OAuth**

## Connections

- Career seeker → Vue pages: uses pages
- Vue pages → Inertia bootstrap: mounts
- Inertia bootstrap → Authentication: submits requests
- Authentication → Google OAuth: OAuth redirect
- Authentication → Application data: creates users
- Authentication → Career profile: signs in
- Career profile → Application data: stores profile
- Dashboard → Application data: reads profile data
- Dashboard → Role recommendations: generates if absent
- Role recommendations → Match scoring: scores overlap
- Role recommendations → Skill similarity: scores semantics
- Role recommendations → Application data: stores matches
- Skill gap analysis → Application data: reads skill requirements
- Learning resources → Application data: reads resources
- Career roadmap → Application data: reads progress
- Career exploration → Application data: reads career roles
- Job listings → Application data: reads postings
- Resume workspace → Resume extraction: extracts text
- Resume workspace → Resume parsing: parses resume
- Resume workspace → ATS scan: requests scan
- Resume workspace → Application data: stores resume and scans
- ATS scan → Application data: reads jobs and stores scans
- Skills catalog → Application data: manages skills
- Job catalog → Application data: manages postings
- Career-role admin → Application data: manages career roles
- Authentication → Vue pages: renders auth pages
- Dashboard → Vue pages: renders dashboard
- Resume workspace → Vue pages: renders resume views
