# theuash/skill-studio architecture

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

## Overview

SkillBridge is an AI-assisted career guidance platform. Its main user journey moves from account access and career exploration through roadmap creation, project challenge generation and repository submission, then analysis and progress tracking. Job discovery, company information and AI-curated news are parallel capabilities. The graph reflects documented routes and sampled controller behavior; frontend request details and several backend implementations were not sampled, so uncertain internal wiring is omitted.

Main entry points: [`skillbridge-api/server.js`](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/server.js) (Express server), [`skillbridge-api/controllers/projectController.js`](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/projectController.js) (Project workflows), [`skillbridge-api/controllers/userController.js`](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/userController.js) (Profile analytics), [`skillbridge-api/controllers/jobsController.js`](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/jobsController.js) (Job workflows)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["Route shell<br/>[App.jsx]"]
  node_pages["Career pages"]
  node_authui["Auth context<br/>[AuthContext.jsx]"]
  node_client["API client<br/>[axios.js]"]
end

subgraph group_api["API and workflows"]
  node_server["Express server<br/>[server.js]"]
  node_authroutes["Auth routes<br/>[auth.js]"]
  node_authctrl["Auth workflows<br/>[authController.js]"]
  node_usersctrl["Profile analytics<br/>[userController.js]"]
end

subgraph group_career["Career guidance"]
  node_sectorctrl["Sector workflows"]
  node_roadctrl["Roadmap workflows"]
  node_jobsctrl["Job workflows<br/>[jobsController.js]"]
  node_jobsservice["Job discovery<br/>[jobsService.js]"]
  node_newsctrl["News workflows<br/>[newsController.js]"]
end

subgraph group_project["Project assessment"]
  node_projectctrl["Project workflows"]
  node_projectsctrl["Challenge analysis"]
end

subgraph group_state["Data and integrations"]
  node_aiservice["AI generation<br/>[aiService.js]"]
  node_repoanalyzer["Repository analysis<br/>[repoAnalyzer.js]"]
  node_email["Email delivery<br/>[emailService.js]"]
  node_dbconfig["Database connection<br/>[db.js]"]
  node_users[("User and OTP<br/>[User.js]")]
  node_careerdata[("Career records<br/>[Roadmap.js]")]
  node_projectdata[("Project records<br/>[Project.js]")]
  node_analysisdata[("Analysis records<br/>[Analysis.js]")]
  node_jobdata[("Job records<br/>[Job.js]")]
  node_companydata[("Company records<br/>[Company.js]")]
end

node_user(("Career learner"))
node_groq{{"Groq AI"}}
node_github{{"GitHub API"}}
node_mongodb[("MongoDB")]
node_smtp{{"Email provider"}}

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_pages
node_app -->|"provides auth"| node_authui
node_pages -->|"API requests"| node_client
node_client -->|"sends requests"| node_server
node_server -->|"mounts auth"| node_authroutes
node_authroutes -->|"dispatches"| node_authctrl
node_authctrl -->|"reads/writes"| node_users
node_authctrl -->|"sends OTP"| node_email
node_email -->|"sends mail"| node_smtp
node_server -->|"connects"| node_mongodb
node_server -->|"dispatches sectors"| node_sectorctrl
node_server -->|"dispatches roadmaps"| node_roadctrl
node_server -->|"dispatches jobs"| node_jobsctrl
node_server -->|"dispatches news"| node_newsctrl
node_server -->|"dispatches projects"| node_projectctrl
node_server -->|"dispatches challenges"| node_projectsctrl
node_server -->|"dispatches profile"| node_usersctrl
node_roadctrl -->|"reads/writes"| node_careerdata
node_roadctrl -->|"generates roadmap"| node_aiservice
node_aiservice -->|"prompts"| node_groq
node_projectctrl -->|"reads roadmap"| node_careerdata
node_projectctrl -->|"reads company"| node_companydata
node_projectctrl -->|"generates project"| node_aiservice
node_projectctrl -->|"saves project"| node_projectdata
node_projectctrl -->|"starts analysis"| node_repoanalyzer
node_repoanalyzer -->|"saves results"| node_analysisdata
node_projectsctrl -->|"fetches repository"| node_github
node_projectsctrl -->|"requests assessment"| node_groq
node_projectsctrl -->|"reads challenges"| node_projectdata
node_projectsctrl -->|"saves analysis"| node_analysisdata
node_repoanalyzer -->|"inspects repository"| node_github
node_jobsctrl -->|"queries jobs"| node_jobdata
node_jobsctrl -->|"loads company"| node_companydata
node_jobsctrl -->|"uses fallback"| node_jobsservice
node_jobsctrl -->|"updates saved jobs"| node_users
node_usersctrl -->|"reads profile"| node_users
node_usersctrl -->|"reads progress"| node_careerdata
node_usersctrl -->|"reads projects"| node_projectdata
node_usersctrl -->|"reads results"| node_analysisdata
node_newsctrl -->|"generates news"| node_aiservice

click node_app "https://github.com/theuash/skill-studio/blob/main/skillbridge/src/App.jsx"
click node_pages "https://github.com/theuash/skill-studio/tree/main/skillbridge/src/pages"
click node_authui "https://github.com/theuash/skill-studio/blob/main/skillbridge/src/context/AuthContext.jsx"
click node_client "https://github.com/theuash/skill-studio/blob/main/skillbridge/src/api/axios.js"
click node_server "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/server.js"
click node_authroutes "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/routes/auth.js"
click node_authctrl "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/authController.js"
click node_sectorctrl "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/sectorController.js"
click node_roadctrl "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/roadmapController.js"
click node_jobsctrl "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/jobsController.js"
click node_jobsservice "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/services/jobsService.js"
click node_newsctrl "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/newsController.js"
click node_projectctrl "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/projectController.js"
click node_projectsctrl "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/projectsController.js"
click node_usersctrl "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/userController.js"
click node_aiservice "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/utils/aiService.js"
click node_repoanalyzer "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/utils/repoAnalyzer.js"
click node_email "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/utils/emailService.js"
click node_dbconfig "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/config/db.js"
click node_users "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/User.js"
click node_careerdata "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Roadmap.js"
click node_projectdata "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Project.js"
click node_analysisdata "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Analysis.js"
click node_jobdata "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Job.js"
click node_companydata "https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Company.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_pages,node_authui,node_client toneBlue
class node_server,node_authroutes,node_authctrl,node_usersctrl,node_mongodb toneAmber
class node_sectorctrl,node_roadctrl,node_jobsctrl,node_jobsservice,node_newsctrl,node_github toneMint
class node_projectctrl,node_projectsctrl toneRose
class node_aiservice,node_repoanalyzer,node_email,node_dbconfig,node_users,node_careerdata,node_projectdata,node_analysisdata,node_jobdata,node_companydata,node_user,node_groq,node_smtp toneIndigo
```

## Components

### Web application

- [Route shell](https://github.com/theuash/skill-studio/blob/main/skillbridge/src/App.jsx): `skillbridge/src/App.jsx`
- [Career pages](https://github.com/theuash/skill-studio/tree/main/skillbridge/src/pages): `skillbridge/src/pages`
- [Auth context](https://github.com/theuash/skill-studio/blob/main/skillbridge/src/context/AuthContext.jsx): `skillbridge/src/context/AuthContext.jsx`
- [API client](https://github.com/theuash/skill-studio/blob/main/skillbridge/src/api/axios.js): `skillbridge/src/api/axios.js`

### API and workflows

- [Express server](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/server.js): `skillbridge-api/server.js`
- [Auth routes](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/routes/auth.js): `skillbridge-api/routes/auth.js`
- [Auth workflows](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/authController.js): `skillbridge-api/controllers/authController.js`
- [Profile analytics](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/userController.js): `skillbridge-api/controllers/userController.js`

### Career guidance

- [Sector workflows](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/sectorController.js): `skillbridge-api/controllers/sectorController.js`
- [Roadmap workflows](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/roadmapController.js): `skillbridge-api/controllers/roadmapController.js`
- [Job workflows](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/jobsController.js): `skillbridge-api/controllers/jobsController.js`
- [Job discovery](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/services/jobsService.js): `skillbridge-api/services/jobsService.js`
- [News workflows](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/newsController.js): `skillbridge-api/controllers/newsController.js`

### Project assessment

- [Project workflows](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/projectController.js): `skillbridge-api/controllers/projectController.js`
- [Challenge analysis](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/controllers/projectsController.js): `skillbridge-api/controllers/projectsController.js`

### Data and integrations

- [AI generation](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/utils/aiService.js): `skillbridge-api/utils/aiService.js`
- [Repository analysis](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/utils/repoAnalyzer.js): `skillbridge-api/utils/repoAnalyzer.js`
- [Email delivery](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/utils/emailService.js): `skillbridge-api/utils/emailService.js`
- [Database connection](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/config/db.js): `skillbridge-api/config/db.js`
- [User and OTP](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/User.js): `skillbridge-api/models/User.js`
- [Career records](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Roadmap.js): `skillbridge-api/models/Roadmap.js`
- [Project records](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Project.js): `skillbridge-api/models/Project.js`
- [Analysis records](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Analysis.js): `skillbridge-api/models/Analysis.js`
- [Job records](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Job.js): `skillbridge-api/models/Job.js`
- [Company records](https://github.com/theuash/skill-studio/blob/main/skillbridge-api/models/Company.js): `skillbridge-api/models/Company.js`

### Other components

- **Career learner**
- **Groq AI**
- **GitHub API**
- **MongoDB**
- **Email provider**

## Connections

- Career learner → Route shell: uses
- Route shell → Career pages: routes to
- Route shell → Auth context: provides auth
- Career pages → API client: API requests
- API client → Express server: sends requests
- Express server → Auth routes: mounts auth
- Auth routes → Auth workflows: dispatches
- Auth workflows → User and OTP: reads/writes
- Auth workflows → Email delivery: sends OTP
- Email delivery → Email provider: sends mail
- Express server → MongoDB: connects
- Express server → Sector workflows: dispatches sectors
- Express server → Roadmap workflows: dispatches roadmaps
- Express server → Job workflows: dispatches jobs
- Express server → News workflows: dispatches news
- Express server → Project workflows: dispatches projects
- Express server → Challenge analysis: dispatches challenges
- Express server → Profile analytics: dispatches profile
- Roadmap workflows → Career records: reads/writes
- Roadmap workflows → AI generation: generates roadmap
- AI generation → Groq AI: prompts
- Project workflows → Career records: reads roadmap
- Project workflows → Company records: reads company
- Project workflows → AI generation: generates project
- Project workflows → Project records: saves project
- Project workflows → Repository analysis: starts analysis
- Repository analysis → Analysis records: saves results
- Challenge analysis → GitHub API: fetches repository
- Challenge analysis → Groq AI: requests assessment
- Challenge analysis → Project records: reads challenges
- Challenge analysis → Analysis records: saves analysis
- Repository analysis → GitHub API: inspects repository
- Job workflows → Job records: queries jobs
- Job workflows → Company records: loads company
- Job workflows → Job discovery: uses fallback
- Job workflows → User and OTP: updates saved jobs
- Profile analytics → User and OTP: reads profile
- Profile analytics → Career records: reads progress
- Profile analytics → Project records: reads projects
- Profile analytics → Analysis records: reads results
- News workflows → AI generation: generates news
