# ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine architecture

> Architecture diagram of the GitHub repository ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine
- Repository: https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine

## Overview

SkillEngine is a career-market analytics app: users explore job demand, compare their skills with market requirements, and get obsolescence predictions and learning roadmaps; they can also upload job data and ask a career-advice chatbot. The React client talks to a FastAPI backend that uses MongoDB and an NLP engine. The tree also contains a separate Spring-based authentication service. Some feature coverage and links come from the README and SOURCE INDEX; unsampled route behavior and frontend calls are not inferred beyond those references.

Main entry points: [`frontend/src/services/api.js`](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/services/api.js) (API client), [`backend/main.py`](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/main.py) (API entry), [`backend/database/connection.py`](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/database/connection.py) (MongoDB), [`login/src/main/java/com/project/login/controller/UserLoginController.java`](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/controller/UserLoginController.java) (Java auth controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React client"]
  node_app["App routing<br/>[App.jsx]"]
  node_authstate["Auth state<br/>[AuthContext.jsx]"]
  node_api_client["API client<br/>[api.js]"]
  node_dashboard["Job dashboard<br/>[Dashboard.jsx]"]
  node_analyze["Skill analyzer<br/>[AnalyzePage.jsx]"]
  node_dataset["Dataset manager<br/>[DatasetPage.jsx]"]
  node_insights["Market insights<br/>[InsightsPage.jsx]"]
  node_chat_ui["Career chat<br/>[ChatPage.jsx]"]
  node_profile["User profile<br/>[ProfilePage.jsx]"]
  node_charts["Analytics charts"]
end

subgraph group_api["FastAPI backend"]
  node_api_entry["API entry<br/>[main.py]"]
  node_jobs["Job listings<br/>[jobs.py]"]
  node_skills["Skill analysis routes<br/>[skills.py]"]
  node_chat["Chat routes<br/>[chat.py]"]
  node_users["User data routes<br/>[user.py]"]
  node_schemas["API schemas<br/>[schemas.py]"]
end

subgraph group_analysis["Market analysis"]
  node_nlp["NLP engine<br/>[engine.py]"]
end

subgraph group_identity["Identity services"]
  node_auth_routes["Auth routes<br/>[auth.py]"]
  node_auth_service["JWT and password service<br/>[auth_service.py]"]
  node_java_controller["Java auth controller"]
  node_registration["Registration service"]
  node_login_service["Login service"]
  node_jwt_service["Java JWT service<br/>[JwtService.java]"]
  node_java_repo[("Login repository")]
end

subgraph group_persistence["Data storage"]
  node_mongo[("MongoDB<br/>[connection.py]")]
end

node_user(("Career user"))

node_user -->|"uses"| node_app
node_app -->|"checks auth"| node_authstate
node_authstate -->|"requests auth"| node_api_client
node_user -->|"views demand"| node_dashboard
node_user -->|"submits skills"| node_analyze
node_user -->|"uploads listings"| node_dataset
node_user -->|"explores trends"| node_insights
node_user -->|"asks advice"| node_chat_ui
node_user -->|"manages profile"| node_profile
node_dashboard -->|"requests jobs"| node_api_client
node_analyze -->|"requests analysis"| node_api_client
node_dataset -->|"uploads data"| node_api_client
node_chat_ui -->|"sends messages"| node_api_client
node_profile -->|"requests user data"| node_api_client
node_insights -->|"renders charts"| node_charts
node_api_client -->|"calls API"| node_api_entry
node_api_entry -->|"registers route"| node_jobs
node_api_entry -->|"registers route"| node_skills
node_api_entry -->|"registers route"| node_chat
node_api_entry -->|"registers route"| node_auth_routes
node_jobs -.->|"reads and writes"| node_mongo
node_skills -.->|"reads jobs"| node_mongo
node_skills -.->|"scores skills"| node_nlp
node_chat -->|"uses fallback"| node_nlp
node_chat -->|"stores history"| node_mongo
node_auth_routes -->|"uses tokens"| node_auth_service
node_auth_routes -->|"looks up user"| node_mongo
node_api_entry -->|"connects lifecycle"| node_mongo
node_users -.->|"accesses data"| node_mongo
node_java_controller -->|"delegates signup"| node_registration
node_java_controller -->|"delegates login"| node_login_service
node_java_controller -->|"creates token"| node_jwt_service
node_registration -->|"saves account"| node_java_repo
node_login_service -->|"finds account"| node_java_repo

click node_app "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/App.jsx"
click node_authstate "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/context/AuthContext.jsx"
click node_api_client "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/services/api.js"
click node_dashboard "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/Dashboard.jsx"
click node_analyze "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/AnalyzePage.jsx"
click node_dataset "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/DatasetPage.jsx"
click node_insights "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/hooks/InsightsPage.jsx"
click node_chat_ui "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/ChatPage.jsx"
click node_profile "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/ProfilePage.jsx"
click node_charts "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/tree/main/frontend/src/components/charts"
click node_api_entry "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/main.py"
click node_jobs "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/jobs.py"
click node_skills "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/skills.py"
click node_chat "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/chat.py"
click node_users "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/user.py"
click node_schemas "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/models/schemas.py"
click node_nlp "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/nlp/engine.py"
click node_mongo "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/database/connection.py"
click node_auth_routes "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/auth.py"
click node_auth_service "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/services/auth_service.py"
click node_java_controller "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/controller/UserLoginController.java"
click node_registration "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/service/MyUserDetailLoginRegisterService.java"
click node_login_service "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/service/MyUserLoginDetailsService.java"
click node_jwt_service "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/service/JwtService.java"
click node_java_repo "https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/repo/UserLoginDataRegisterRepo.java"

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_authstate,node_api_client,node_dashboard,node_analyze,node_dataset,node_insights,node_chat_ui,node_profile,node_charts,node_user toneBlue
class node_api_entry,node_jobs,node_skills,node_chat,node_users,node_schemas toneAmber
class node_nlp toneMint
class node_auth_routes,node_auth_service,node_java_controller,node_registration,node_login_service,node_jwt_service,node_java_repo toneRose
class node_mongo toneIndigo
```

## Components

### React client

- [App routing](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth state](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [API client](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [Job dashboard](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Skill analyzer](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/AnalyzePage.jsx): `frontend/src/pages/AnalyzePage.jsx`
- [Dataset manager](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/DatasetPage.jsx): `frontend/src/pages/DatasetPage.jsx`
- [Market insights](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/hooks/InsightsPage.jsx): `frontend/src/hooks/InsightsPage.jsx`
- [Career chat](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/ChatPage.jsx): `frontend/src/pages/ChatPage.jsx`
- [User profile](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/frontend/src/pages/ProfilePage.jsx): `frontend/src/pages/ProfilePage.jsx`
- [Analytics charts](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/tree/main/frontend/src/components/charts): `frontend/src/components/charts`

### FastAPI backend

- [API entry](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/main.py): `backend/main.py`
- [Job listings](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/jobs.py): `backend/routes/jobs.py`
- [Skill analysis routes](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/skills.py): `backend/routes/skills.py`
- [Chat routes](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/chat.py): `backend/routes/chat.py`
- [User data routes](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/user.py): `backend/routes/user.py`
- [API schemas](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/models/schemas.py): `backend/models/schemas.py`

### Market analysis

- [NLP engine](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/nlp/engine.py): `backend/nlp/engine.py`

### Identity services

- [Auth routes](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/routes/auth.py): `backend/routes/auth.py`
- [JWT and password service](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/services/auth_service.py): `backend/services/auth_service.py`
- [Java auth controller](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/controller/UserLoginController.java): `login/src/main/java/com/project/login/controller/UserLoginController.java`
- [Registration service](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/service/MyUserDetailLoginRegisterService.java): `login/src/main/java/com/project/login/service/MyUserDetailLoginRegisterService.java`
- [Login service](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/service/MyUserLoginDetailsService.java): `login/src/main/java/com/project/login/service/MyUserLoginDetailsService.java`
- [Java JWT service](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/service/JwtService.java): `login/src/main/java/com/project/login/service/JwtService.java`
- [Login repository](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/login/src/main/java/com/project/login/repo/UserLoginDataRegisterRepo.java): `login/src/main/java/com/project/login/repo/UserLoginDataRegisterRepo.java`

### Data storage

- [MongoDB](https://github.com/ankubisht987/skill-obsolescence-and-curriculum-relevance-analytics-engine/blob/main/backend/database/connection.py): `backend/database/connection.py`

### Other components

- **Career user**

## Connections

- Career user → App routing: uses
- App routing → Auth state: checks auth (evidence: `frontend/src/App.jsx`)
- Auth state → API client: requests auth (evidence: `frontend/src/context/AuthContext.jsx`)
- Career user → Job dashboard: views demand
- Career user → Skill analyzer: submits skills
- Career user → Dataset manager: uploads listings
- Career user → Market insights: explores trends
- Career user → Career chat: asks advice
- Career user → User profile: manages profile
- Job dashboard → API client: requests jobs
- Skill analyzer → API client: requests analysis (evidence: `frontend/src/pages/AnalyzePage.jsx`)
- Dataset manager → API client: uploads data
- Career chat → API client: sends messages
- User profile → API client: requests user data
- Market insights → Analytics charts: renders charts
- API client → API entry: calls API
- API entry → Job listings: registers route (evidence: `backend/main.py`)
- API entry → Skill analysis routes: registers route (evidence: `backend/main.py`)
- API entry → Chat routes: registers route (evidence: `backend/main.py`)
- API entry → Auth routes: registers route (evidence: `backend/main.py`)
- Job listings → MongoDB: reads and writes
- Skill analysis routes → MongoDB: reads jobs
- Skill analysis routes → NLP engine: scores skills
- Chat routes → NLP engine: uses fallback (evidence: `backend/routes/chat.py`)
- Chat routes → MongoDB: stores history (evidence: `backend/routes/chat.py`)
- Auth routes → JWT and password service: uses tokens (evidence: `backend/routes/auth.py`)
- Auth routes → MongoDB: looks up user (evidence: `backend/routes/auth.py`)
- API entry → MongoDB: connects lifecycle (evidence: `backend/main.py`)
- User data routes → MongoDB: accesses data
- Java auth controller → Registration service: delegates signup (evidence: `login/src/main/java/com/project/login/controller/UserLoginController.java`)
- Java auth controller → Login service: delegates login (evidence: `login/src/main/java/com/project/login/controller/UserLoginController.java`)
- Java auth controller → Java JWT service: creates token (evidence: `login/src/main/java/com/project/login/controller/UserLoginController.java`)
- Registration service → Login repository: saves account (evidence: `login/src/main/java/com/project/login/service/MyUserDetailLoginRegisterService.java`)
- Login service → Login repository: finds account (evidence: `login/src/main/java/com/project/login/service/MyUserLoginDetailsService.java`)
