# nandeswarbudi-code/careerpath--ai architecture

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

- Interactive diagram: https://gitdiagram.com/nandeswarbudi-code/careerpath--ai
- Repository: https://github.com/nandeswarbudi-code/careerpath--ai

## Overview

CareerPath AI guides users from role selection and skill assessment through a personalized learning roadmap, resume and interview preparation, readiness scoring, and job search. The interview and coding tools have distinct execution paths; interview AI and non-JavaScript code execution use the backend, with local interview fallbacks and browser-sandbox JavaScript. Persistence combines local restore with signed-in cloud sync. The README documents additional capabilities not fully visible in the excerpts; paths and links for those are included only where the tree and documentation support them.

Main entry points: [`src/App.tsx`](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/App.tsx) (App workflow), [`src/components/liveInterview/LiveInterviewSession.tsx`](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/liveInterview/LiveInterviewSession.tsx) (Live interview), [`src/lib/api.ts`](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/api.ts) (Backend API client), [`src/lib/usePersistence.ts`](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/usePersistence.ts) (Persistence bridge)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_journey["Career journey"]
  node_app["App workflow<br/>[App.tsx]"]
  node_roles["Role catalog<br/>[roles.ts]"]
  node_assessment["Skill assessment<br/>[Assessment.tsx]"]
  node_roadmap["Learning roadmap<br/>[Roadmap.tsx]"]
  node_quiz["Quiz verification<br/>[quizData.ts]"]
  node_readiness["Readiness score<br/>[useReadiness.ts]"]
end

subgraph group_preparation["Preparation tools"]
  node_resume["Resume builder<br/>[ResumeBuilder.tsx]"]
  node_ats["ATS checker<br/>[AtsChecker.tsx]"]
  node_coding["Coding practice<br/>[CodingPractice.tsx]"]
  node_runner["Code execution<br/>[codeRunner.ts]"]
  node_jobs["Job search<br/>[Jobs.tsx]"]
end

subgraph group_interview["Interview practice"]
  node_interview["Interview hub<br/>[InterviewHub.tsx]"]
  node_setup["Interview setup<br/>[InterviewSetup.tsx]"]
  node_session["Live interview"]
  node_report["Interview report"]
  node_local["Local interviewer"]
  node_video["Video analysis<br/>[videoAnalysis.ts]"]
end

subgraph group_platform["State and services"]
  node_api["Backend API client<br/>[api.ts]"]
  node_server["AI and execution API<br/>[index.ts]"]
  node_store["Journey state<br/>[store.ts]"]
  node_persistence["Persistence bridge<br/>[usePersistence.ts]"]
  node_storage[("Local progress<br/>[storage.ts]")]
end

node_user(("Career seeker"))
node_gemini{{"Gemini AI"}}
node_compiler{{"Online compiler"}}
node_firebase[("Firebase auth and data")]
node_speech{{"Browser speech"}}

node_user -->|"starts journey"| node_app
node_app -->|"routes to"| node_assessment
node_app -->|"routes to"| node_roadmap
node_app -->|"routes to"| node_resume
node_app -->|"routes to"| node_interview
node_app -->|"calculates from"| node_readiness
node_roles -->|"supplies role skills"| node_assessment
node_roles -->|"supplies role plan"| node_roadmap
node_roadmap -->|"verifies learning"| node_quiz
node_user -->|"practices problems"| node_coding
node_coding -->|"runs JavaScript"| node_runner
node_coding -->|"submits other languages"| node_api
node_user -->|"explores openings"| node_jobs
node_interview -->|"configures session"| node_setup
node_setup -->|"starts interview"| node_session
node_session -->|"requests questions and feedback"| node_api
node_api -.->|"falls back locally"| node_local
node_session -->|"speaks prompts"| node_speech
node_session -->|"measures local behavior"| node_video
node_interview -->|"shows results"| node_report
node_api -->|"sends API requests"| node_server
node_server -->|"requests AI generation"| node_gemini
node_server -->|"submits code"| node_compiler
node_app -->|"reads journey state"| node_store
node_persistence -->|"restores and subscribes"| node_store
node_persistence -->|"saves local progress"| node_storage
node_persistence -->|"syncs signed-in progress"| node_firebase
node_user -->|"builds resume"| node_resume
node_user -->|"checks keywords"| node_ats

click node_app "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/App.tsx"
click node_roles "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/data/roles.ts"
click node_assessment "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/Assessment.tsx"
click node_roadmap "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/Roadmap.tsx"
click node_quiz "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/quizData.ts"
click node_readiness "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/useReadiness.ts"
click node_resume "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/ResumeBuilder.tsx"
click node_ats "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/AtsChecker.tsx"
click node_coding "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/CodingPractice.tsx"
click node_runner "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/codeRunner.ts"
click node_jobs "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/Jobs.tsx"
click node_interview "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/interview/InterviewHub.tsx"
click node_setup "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/interview/InterviewSetup.tsx"
click node_session "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/liveInterview/LiveInterviewSession.tsx"
click node_report "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/liveInterview/LiveInterviewReport.tsx"
click node_local "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/localInterviewer.ts"
click node_api "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/api.ts"
click node_server "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/server/index.ts"
click node_store "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/store.ts"
click node_persistence "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/usePersistence.ts"
click node_storage "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/storage.ts"
click node_video "https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/videoAnalysis.ts"

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_roles,node_assessment,node_roadmap,node_quiz,node_readiness,node_speech toneBlue
class node_resume,node_ats,node_coding,node_runner,node_jobs,node_firebase toneAmber
class node_interview,node_setup,node_session,node_report,node_local,node_video toneMint
class node_api,node_server,node_store,node_persistence,node_storage toneRose
class node_user,node_gemini,node_compiler toneIndigo
```

## Components

### Career journey

- [App workflow](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/App.tsx): `src/App.tsx`
- [Role catalog](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/data/roles.ts): `src/data/roles.ts`
- [Skill assessment](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/Assessment.tsx): `src/components/Assessment.tsx`
- [Learning roadmap](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/Roadmap.tsx): `src/components/Roadmap.tsx`
- [Quiz verification](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/quizData.ts): `src/lib/quizData.ts`
- [Readiness score](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/useReadiness.ts): `src/lib/useReadiness.ts`

### Preparation tools

- [Resume builder](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/ResumeBuilder.tsx): `src/components/ResumeBuilder.tsx`
- [ATS checker](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/AtsChecker.tsx): `src/components/AtsChecker.tsx`
- [Coding practice](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/CodingPractice.tsx): `src/components/CodingPractice.tsx`
- [Code execution](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/codeRunner.ts): `src/lib/codeRunner.ts`
- [Job search](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/Jobs.tsx): `src/components/Jobs.tsx`

### Interview practice

- [Interview hub](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/interview/InterviewHub.tsx): `src/components/interview/InterviewHub.tsx`
- [Interview setup](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/interview/InterviewSetup.tsx): `src/components/interview/InterviewSetup.tsx`
- [Live interview](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/liveInterview/LiveInterviewSession.tsx): `src/components/liveInterview/LiveInterviewSession.tsx`
- [Interview report](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/components/liveInterview/LiveInterviewReport.tsx): `src/components/liveInterview/LiveInterviewReport.tsx`
- [Local interviewer](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/localInterviewer.ts): `src/lib/localInterviewer.ts`
- [Video analysis](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/videoAnalysis.ts): `src/lib/videoAnalysis.ts`

### State and services

- [Backend API client](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/api.ts): `src/lib/api.ts`
- [AI and execution API](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/server/index.ts): `server/index.ts`
- [Journey state](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/store.ts): `src/lib/store.ts`
- [Persistence bridge](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/usePersistence.ts): `src/lib/usePersistence.ts`
- [Local progress](https://github.com/nandeswarbudi-code/careerpath--ai/blob/main/src/lib/storage.ts): `src/lib/storage.ts`

### Other components

- **Career seeker**
- **Gemini AI**
- **Online compiler**
- **Firebase auth and data**
- **Browser speech**

## Connections

- Career seeker → App workflow: starts journey
- App workflow → Skill assessment: routes to
- App workflow → Learning roadmap: routes to
- App workflow → Resume builder: routes to
- App workflow → Interview hub: routes to
- App workflow → Readiness score: calculates from
- Role catalog → Skill assessment: supplies role skills
- Role catalog → Learning roadmap: supplies role plan
- Learning roadmap → Quiz verification: verifies learning
- Career seeker → Coding practice: practices problems
- Coding practice → Code execution: runs JavaScript
- Coding practice → Backend API client: submits other languages
- Career seeker → Job search: explores openings
- Interview hub → Interview setup: configures session
- Interview setup → Live interview: starts interview
- Live interview → Backend API client: requests questions and feedback
- Backend API client → Local interviewer: falls back locally
- Live interview → Browser speech: speaks prompts
- Live interview → Video analysis: measures local behavior
- Interview hub → Interview report: shows results
- Backend API client → AI and execution API: sends API requests
- AI and execution API → Gemini AI: requests AI generation
- AI and execution API → Online compiler: submits code
- App workflow → Journey state: reads journey state
- Persistence bridge → Journey state: restores and subscribes
- Persistence bridge → Local progress: saves local progress
- Persistence bridge → Firebase auth and data: syncs signed-in progress
- Career seeker → Resume builder: builds resume
- Career seeker → ATS checker: checks keywords
