# lnct-unix/upskilling-platform-v2.0 architecture

> Architecture diagram of the GitHub repository lnct-unix/upskilling-platform-v2.0, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lnct-unix/upskilling-platform-v2.0
- Repository: https://github.com/lnct-unix/upskilling-platform-v2.0

## Overview

This is an upskilling platform for account access, skill assessment, and visualizing skill dependencies and user progress. The principal workflow is a user entering the web app, taking an assessment, and viewing a skill graph personalized by mastery and prerequisites. The Java gateway provides the domain services and persistence; a separate Node service handles skill-graph AI requests. Frontend-to-gateway request wiring is not shown, so those links are marked unverified rather than asserted.

Main entry points: [`frontend/src/App.jsx`](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/frontend/src/App.jsx) (Route application), [`gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillGraphService.java`](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillGraphService.java) (Skill graph service), [`gateway/src/main/java/com/aiupskillingplatform/repositories`](https://github.com/lnct-unix/upskilling-platform-v2.0/tree/main/gateway/src/main/java/com/aiupskillingplatform/repositories) (Learning repositories), [`gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillDependencyService.java`](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillDependencyService.java) (Dependency management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_app["Route application<br/>[App.jsx]"]
  node_authui["Login and signup"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_assessmentui["Assessment UI<br/>[Assessment.jsx]"]
  node_graphui["Skill graph UI<br/>[SkillGraph.jsx]"]
end

subgraph group_gateway["Gateway API"]
  node_authcontroller["Auth endpoints"]
  node_assessmentcontroller["Assessment endpoints"]
  node_graphcontroller["Graph endpoints"]
  node_dependencycontroller["Dependency endpoints"]
  node_progresscontroller["Progress endpoints"]
end

subgraph group_learning["Learning domain"]
  node_assessment["Assessment engine"]
  node_skillgraph["Skill graph service"]
  node_dependencies["Dependency management"]
  node_progress["Personalized progress"]
  node_learningdata[("Learning repositories")]
end

subgraph group_identity["Identity and security"]
  node_authservice["Authentication<br/>[AuthService.java]"]
  node_security["JWT security"]
  node_userrepo[("User repository")]
  node_jwt["JWT service<br/>[JwtService.java]"]
end

subgraph group_ai["AI integration"]
  node_asyncapp["AI service app<br/>[app.js]"]
  node_aicontroller["Skill graph handler"]
  node_aiservice["AI service<br/>[aiService.js]"]
end

node_learner(("Learner"))
node_aiintegration{{"AI provider"}}

node_learner -->|"opens"| node_app
node_app -->|"routes to"| node_authui
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_assessmentui
node_app -->|"routes to"| node_graphui
node_authui -.->|"requests"| node_authcontroller
node_assessmentui -.->|"requests"| node_assessmentcontroller
node_graphui -.->|"requests"| node_graphcontroller
node_dashboard -.->|"requests"| node_progresscontroller
node_authcontroller -->|"delegates to"| node_authservice
node_assessmentcontroller -->|"delegates to"| node_assessment
node_graphcontroller -.->|"delegates to"| node_skillgraph
node_dependencycontroller -->|"delegates to"| node_dependencies
node_progresscontroller -.->|"delegates to"| node_progress
node_authservice -->|"reads and writes"| node_userrepo
node_authservice -->|"creates token"| node_jwt
node_security -->|"loads user"| node_userrepo
node_assessment -->|"reads and updates"| node_learningdata
node_skillgraph -->|"loads graph data"| node_learningdata
node_dependencies -->|"checks cycles"| node_skillgraph
node_dependencies -->|"stores dependencies"| node_learningdata
node_progress -->|"gets skill order"| node_skillgraph
node_progress -->|"loads mastery and dependencies"| node_learningdata
node_asyncapp -->|"uses"| node_aiservice
node_asyncapp -.->|"routes to"| node_aicontroller
node_aiservice -.->|"invokes"| node_aiintegration

click node_app "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/frontend/src/App.jsx"
click node_authui "https://github.com/lnct-unix/upskilling-platform-v2.0/tree/main/frontend/src/components/auth"
click node_dashboard "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/frontend/src/components/dashboard/Dashboard.jsx"
click node_assessmentui "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/frontend/src/components/assessment/Assessment.jsx"
click node_graphui "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/frontend/src/components/skillgraph/SkillGraph.jsx"
click node_authcontroller "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/auth/AuthController.java"
click node_assessmentcontroller "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/IrtAssessment/AssessmentController.java"
click node_graphcontroller "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/dag/SkillGraphController.java"
click node_dependencycontroller "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/dag/SkillDependencyController.java"
click node_progresscontroller "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/dag/UserSkillProgressController.java"
click node_authservice "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/auth/AuthService.java"
click node_security "https://github.com/lnct-unix/upskilling-platform-v2.0/tree/main/gateway/src/main/java/com/aiupskillingplatform/security"
click node_assessment "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/assessment/AssessmentService.java"
click node_skillgraph "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillGraphService.java"
click node_dependencies "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillDependencyService.java"
click node_progress "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/dag/UserSkillProgressService.java"
click node_learningdata "https://github.com/lnct-unix/upskilling-platform-v2.0/tree/main/gateway/src/main/java/com/aiupskillingplatform/repositories"
click node_userrepo "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/repositories/UserRepository.java"
click node_jwt "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/auth/JwtService.java"
click node_asyncapp "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/AsyncFunctions/src/app.js"
click node_aicontroller "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/AsyncFunctions/src/controllers/skillGraphController.js"
click node_aiservice "https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/AsyncFunctions/src/services/aiService.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_authui,node_dashboard,node_assessmentui,node_graphui toneBlue
class node_authcontroller,node_assessmentcontroller,node_graphcontroller,node_dependencycontroller,node_progresscontroller toneAmber
class node_assessment,node_skillgraph,node_dependencies,node_progress,node_learningdata toneMint
class node_authservice,node_security,node_userrepo,node_jwt toneRose
class node_asyncapp,node_aicontroller,node_aiservice,node_learner,node_aiintegration toneIndigo
```

## Components

### Web experience

- [Route application](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Login and signup](https://github.com/lnct-unix/upskilling-platform-v2.0/tree/main/frontend/src/components/auth): `frontend/src/components/auth`
- [Dashboard](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/frontend/src/components/dashboard/Dashboard.jsx): `frontend/src/components/dashboard/Dashboard.jsx`
- [Assessment UI](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/frontend/src/components/assessment/Assessment.jsx): `frontend/src/components/assessment/Assessment.jsx`
- [Skill graph UI](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/frontend/src/components/skillgraph/SkillGraph.jsx): `frontend/src/components/skillgraph/SkillGraph.jsx`

### Gateway API

- [Auth endpoints](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/auth/AuthController.java): `gateway/src/main/java/com/aiupskillingplatform/controllers/auth/AuthController.java`
- [Assessment endpoints](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/IrtAssessment/AssessmentController.java): `gateway/src/main/java/com/aiupskillingplatform/controllers/IrtAssessment/AssessmentController.java`
- [Graph endpoints](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/dag/SkillGraphController.java): `gateway/src/main/java/com/aiupskillingplatform/controllers/dag/SkillGraphController.java`
- [Dependency endpoints](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/dag/SkillDependencyController.java): `gateway/src/main/java/com/aiupskillingplatform/controllers/dag/SkillDependencyController.java`
- [Progress endpoints](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/controllers/dag/UserSkillProgressController.java): `gateway/src/main/java/com/aiupskillingplatform/controllers/dag/UserSkillProgressController.java`

### Learning domain

- [Assessment engine](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/assessment/AssessmentService.java): `gateway/src/main/java/com/aiupskillingplatform/services/assessment/AssessmentService.java`
- [Skill graph service](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillGraphService.java): `gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillGraphService.java`
- [Dependency management](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillDependencyService.java): `gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillDependencyService.java`
- [Personalized progress](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/dag/UserSkillProgressService.java): `gateway/src/main/java/com/aiupskillingplatform/services/dag/UserSkillProgressService.java`
- [Learning repositories](https://github.com/lnct-unix/upskilling-platform-v2.0/tree/main/gateway/src/main/java/com/aiupskillingplatform/repositories): `gateway/src/main/java/com/aiupskillingplatform/repositories`

### Identity and security

- [Authentication](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/auth/AuthService.java): `gateway/src/main/java/com/aiupskillingplatform/services/auth/AuthService.java`
- [JWT security](https://github.com/lnct-unix/upskilling-platform-v2.0/tree/main/gateway/src/main/java/com/aiupskillingplatform/security): `gateway/src/main/java/com/aiupskillingplatform/security`
- [User repository](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/repositories/UserRepository.java): `gateway/src/main/java/com/aiupskillingplatform/repositories/UserRepository.java`
- [JWT service](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/gateway/src/main/java/com/aiupskillingplatform/services/auth/JwtService.java): `gateway/src/main/java/com/aiupskillingplatform/services/auth/JwtService.java`

### AI integration

- [AI service app](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/AsyncFunctions/src/app.js): `AsyncFunctions/src/app.js`
- [Skill graph handler](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/AsyncFunctions/src/controllers/skillGraphController.js): `AsyncFunctions/src/controllers/skillGraphController.js`
- [AI service](https://github.com/lnct-unix/upskilling-platform-v2.0/blob/main/AsyncFunctions/src/services/aiService.js): `AsyncFunctions/src/services/aiService.js`

### Other components

- **Learner**
- **AI provider**

## Connections

- Learner → Route application: opens (evidence: `frontend/src/App.jsx`)
- Route application → Login and signup: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Dashboard: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Assessment UI: routes to (evidence: `frontend/src/App.jsx`)
- Route application → Skill graph UI: routes to (evidence: `frontend/src/App.jsx`)
- Login and signup → Auth endpoints: requests
- Assessment UI → Assessment endpoints: requests
- Skill graph UI → Graph endpoints: requests
- Dashboard → Progress endpoints: requests
- Auth endpoints → Authentication: delegates to (evidence: `gateway/src/main/java/com/aiupskillingplatform/controllers/auth/AuthController.java`)
- Assessment endpoints → Assessment engine: delegates to (evidence: `gateway/src/main/java/com/aiupskillingplatform/controllers/IrtAssessment/AssessmentController.java`)
- Graph endpoints → Skill graph service: delegates to
- Dependency endpoints → Dependency management: delegates to (evidence: `gateway/src/main/java/com/aiupskillingplatform/controllers/dag/SkillDependencyController.java`)
- Progress endpoints → Personalized progress: delegates to (evidence: `gateway/src/main/java/com/aiupskillingplatform/controllers/dag/UserSkillProgressController.java`)
- Authentication → User repository: reads and writes (evidence: `gateway/src/main/java/com/aiupskillingplatform/services/auth/AuthService.java`)
- Authentication → JWT service: creates token (evidence: `gateway/src/main/java/com/aiupskillingplatform/services/auth/AuthService.java`)
- JWT security → User repository: loads user (evidence: `gateway/src/main/java/com/aiupskillingplatform/security/CustomUserDetailsService.java`)
- Assessment engine → Learning repositories: reads and updates (evidence: `gateway/src/main/java/com/aiupskillingplatform/services/assessment/AssessmentService.java`)
- Skill graph service → Learning repositories: loads graph data (evidence: `gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillGraphService.java`)
- Dependency management → Skill graph service: checks cycles (evidence: `gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillDependencyService.java`)
- Dependency management → Learning repositories: stores dependencies (evidence: `gateway/src/main/java/com/aiupskillingplatform/services/dag/SkillDependencyService.java`)
- Personalized progress → Skill graph service: gets skill order (evidence: `gateway/src/main/java/com/aiupskillingplatform/services/dag/UserSkillProgressService.java`)
- Personalized progress → Learning repositories: loads mastery and dependencies (evidence: `gateway/src/main/java/com/aiupskillingplatform/services/dag/UserSkillProgressService.java`)
- AI service app → AI service: uses (evidence: `AsyncFunctions/src/app.js`)
- AI service app → Skill graph handler: routes to
- AI service → AI provider: invokes
