# sravan99k/wexai architecture

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

- Interactive diagram: https://gitdiagram.com/sravan99k/wexai
- Repository: https://github.com/sravan99k/wexai

## Overview

SkillPath maps a user's current skills to target careers: users assess and update skills, review job match scores and missing requirements, explore multi-hop skill bridges, and inspect the connected career graph. The React app centralizes skill/job state in DataContext and uses a REST client to reach Express routes, which query or update the graph database. The README documents the match, bridge, and graph-query capabilities; sampled source confirms the API and state flow, while some page-to-feature wiring is inferred only from documented capabilities and route names.

Main entry points: [`src/App.tsx`](https://github.com/sravan99k/wexai/blob/main/src/App.tsx) (React app), [`src/context/DataContext.tsx`](https://github.com/sravan99k/wexai/blob/main/src/context/DataContext.tsx) (Data context), [`src/pages/JobDetails.tsx`](https://github.com/sravan99k/wexai/blob/main/src/pages/JobDetails.tsx) (Job details), [`src/api.ts`](https://github.com/sravan99k/wexai/blob/main/src/api.ts) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Career Explorer"]
  node_app["React app<br/>[App.tsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.tsx]"]
  node_assessment["Skill assessment"]
  node_jobs["Job listings<br/>[Jobs.tsx]"]
  node_details["Job details<br/>[JobDetails.tsx]"]
  node_gap["Gap analysis<br/>[GapAnalysis.tsx]"]
  node_careergraph["Career graph<br/>[CareerGraph.tsx]"]
end

subgraph group_state["Client Data"]
  node_context["Data context<br/>[DataContext.tsx]"]
  node_clientapi["API client<br/>[api.ts]"]
end

subgraph group_service["REST Service"]
  node_routes["Express API<br/>[index.ts]"]
  node_server["Local server<br/>[index.ts]"]
  node_driver["Neo4j driver<br/>[db.ts]"]
end

subgraph group_graphdata["Career Graph Data"]
  node_seed["Graph seeding<br/>[seed.ts]"]
  node_store[("CognoDB graph")]
end

node_seeker(("Job seeker"))

node_seeker -->|"uses"| node_app
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_assessment
node_app -->|"routes to"| node_jobs
node_app -->|"routes to"| node_details
node_app -->|"routes to"| node_careergraph
node_app -->|"provides state"| node_context
node_dashboard -->|"reads state"| node_context
node_assessment -->|"updates skills"| node_context
node_jobs -->|"reads jobs"| node_context
node_details -->|"reads state"| node_context
node_details -.->|"shows gaps"| node_gap
node_careergraph -->|"fetches graph"| node_clientapi
node_context -->|"calls"| node_clientapi
node_clientapi -->|"REST requests"| node_routes
node_server -->|"starts"| node_routes
node_routes -->|"runs queries"| node_driver
node_driver -->|"reads and writes"| node_store
node_seed -.->|"populates graph"| node_driver

click node_app "https://github.com/sravan99k/wexai/blob/main/src/App.tsx"
click node_dashboard "https://github.com/sravan99k/wexai/blob/main/src/pages/Dashboard.tsx"
click node_assessment "https://github.com/sravan99k/wexai/blob/main/src/pages/SkillAssessment.tsx"
click node_jobs "https://github.com/sravan99k/wexai/blob/main/src/pages/Jobs.tsx"
click node_details "https://github.com/sravan99k/wexai/blob/main/src/pages/JobDetails.tsx"
click node_gap "https://github.com/sravan99k/wexai/blob/main/src/pages/GapAnalysis.tsx"
click node_careergraph "https://github.com/sravan99k/wexai/blob/main/src/pages/CareerGraph.tsx"
click node_context "https://github.com/sravan99k/wexai/blob/main/src/context/DataContext.tsx"
click node_clientapi "https://github.com/sravan99k/wexai/blob/main/src/api.ts"
click node_routes "https://github.com/sravan99k/wexai/blob/main/api/index.ts"
click node_server "https://github.com/sravan99k/wexai/blob/main/server/index.ts"
click node_driver "https://github.com/sravan99k/wexai/blob/main/api/db.ts"
click node_seed "https://github.com/sravan99k/wexai/blob/main/server/seed.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_dashboard,node_assessment,node_jobs,node_details,node_gap,node_careergraph toneBlue
class node_context,node_clientapi toneAmber
class node_routes,node_server,node_driver toneMint
class node_seed,node_store toneRose
class node_seeker toneIndigo
```

## Components

### Career Explorer

- [React app](https://github.com/sravan99k/wexai/blob/main/src/App.tsx): `src/App.tsx`
- [Dashboard](https://github.com/sravan99k/wexai/blob/main/src/pages/Dashboard.tsx): `src/pages/Dashboard.tsx`
- [Skill assessment](https://github.com/sravan99k/wexai/blob/main/src/pages/SkillAssessment.tsx): `src/pages/SkillAssessment.tsx`
- [Job listings](https://github.com/sravan99k/wexai/blob/main/src/pages/Jobs.tsx): `src/pages/Jobs.tsx`
- [Job details](https://github.com/sravan99k/wexai/blob/main/src/pages/JobDetails.tsx): `src/pages/JobDetails.tsx`
- [Gap analysis](https://github.com/sravan99k/wexai/blob/main/src/pages/GapAnalysis.tsx): `src/pages/GapAnalysis.tsx`
- [Career graph](https://github.com/sravan99k/wexai/blob/main/src/pages/CareerGraph.tsx): `src/pages/CareerGraph.tsx`

### Client Data

- [Data context](https://github.com/sravan99k/wexai/blob/main/src/context/DataContext.tsx): `src/context/DataContext.tsx`
- [API client](https://github.com/sravan99k/wexai/blob/main/src/api.ts): `src/api.ts`

### REST Service

- [Express API](https://github.com/sravan99k/wexai/blob/main/api/index.ts): `api/index.ts`
- [Local server](https://github.com/sravan99k/wexai/blob/main/server/index.ts): `server/index.ts`
- [Neo4j driver](https://github.com/sravan99k/wexai/blob/main/api/db.ts): `api/db.ts`

### Career Graph Data

- [Graph seeding](https://github.com/sravan99k/wexai/blob/main/server/seed.ts): `server/seed.ts`
- **CognoDB graph**

### Other components

- **Job seeker**

## Connections

- Job seeker → React app: uses
- React app → Dashboard: routes to
- React app → Skill assessment: routes to
- React app → Job listings: routes to
- React app → Job details: routes to
- React app → Career graph: routes to
- React app → Data context: provides state
- Dashboard → Data context: reads state
- Skill assessment → Data context: updates skills
- Job listings → Data context: reads jobs
- Job details → Data context: reads state
- Job details → Gap analysis: shows gaps
- Career graph → API client: fetches graph
- Data context → API client: calls
- API client → Express API: REST requests
- Local server → Express API: starts
- Express API → Neo4j driver: runs queries
- Neo4j driver → CognoDB graph: reads and writes
- Graph seeding → Neo4j driver: populates graph
