# shanmukht9/skillgraph architecture

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

- Interactive diagram: https://gitdiagram.com/shanmukht9/skillgraph
- Repository: https://github.com/shanmukht9/skillgraph

## Overview

#### 1. Purpose and Application Shape
SkillGraph is a university talent-verification platform centered on proof-based student skills rather than CGPA. It presents role-specific dashboards for students, faculty, and recruiters, with the intended product model of a skill graph and recruiter-facing “Trust Ledger.” The repository currently contains a Next.js frontend plus a Supabase client integration; REST, AI, and graph backend implementations are not present in this tree.

#### 2. Runtime and Entry Points
The application is a TypeScript Next.js App Router project. Global application framing and styling start at:
- `app/layout.tsx`
- `app/globals.css`
- `app/page.tsx`

`app/page.tsx` is the public landing/root route. The route filesystem under `app/` defines all currently visible product flows.

#### 3. Authentication Boundary
Authentication screens are isolated beneath the auth route segment:
- `app/auth/login/page.tsx`
- `app/auth/signup/page.tsx`

Supabase is the material external-service boundary and is initialized through:
- `lib/supabase.ts`

This client is the likely integration point for user identity, session state, and persisted platform data. The file tree does not show server-side auth middleware, API route handlers, or explicit role-enforcement logic; role-based access is presently represented primarily by separated dashboard routes.

#### 4. Role-Based Dashboard Surface
The platform divides its primary experience by user role:
- `app/dashboard/student/page.tsx`
- `app/dashboard/faculty/page.tsx`
- `app/dashboard/recruiter/page.tsx`

This separation is architecture-defining: students build evidence-backed profiles, faculty administer or validate student activity, and recruiters consume searchable/verifiable candidate information. Navigation or post-login routing should select and protect these role-specific surfaces based on authenticated user metadata.

#### 5. Student Skill-Profile Lifecycle
Student-facing routes define the profile construction workflow:
- `app/dashboard/student/profile/page.tsx`
- `app/dashboard/student/skills/page.tsx`
- `app/dashboard/student/projects/page.tsx`

The expected data flow is profile → declared/derived skills → projects as proof artifacts. These entities should ultimately feed the promised skill graph and trust model. AI-driven extraction and suggestions described in the README would naturally operate at the project/evidence-to-skill boundary, but no AI service or implementation is included.

#### 6. Faculty Verification and Governance
Faculty operations are represented by:
- `app/dashboard/faculty/students/page.tsx`
- `app/dashboard/faculty/requests/page.tsx`

These routes imply a review boundary between student-submitted information and trusted institutional validation. Requests likely represent pending verification or administrative actions; approved outcomes should be the source of trust status exposed to recruiters. The concrete persistence schema and approval API are not present.

#### 7. Recruiter Discovery and Trust Consumption
Recruiter capabilities are organized around candidate discovery and selection:
- `app/dashboard/recruiter/search/page.tsx`
- `app/dashboard/recruiter/shortlist/page.tsx`

The principal flow is search/filter over student skill evidence, inspect trusted profiles, then persist selected candidates in a shortlist. This is where graph-backed relationship queries—student, skill, project, verification, and institution—would be most consequential, though the repository currently exposes no graph database connector or query layer.

#### 8. Missing Backend Boundaries
The README’s intended REST API, graph storage, AI layer, and university analytics are architectural targets rather than checked-in components. Current backend-facing code is limited to `lib/supabase.ts`. A downstream implementation should keep UI routes decoupled from data access, introduce authenticated role authorization at server boundaries, and model verification provenance separately from self-reported skills so recruiter trust decisions can be traced to evidence and faculty approval.

Main entry points: [`app/auth/login/page.tsx`](https://github.com/shanmukht9/skillgraph/blob/main/app/auth/login/page.tsx) (Login), [`app/dashboard/student/page.tsx`](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/page.tsx) (Student dashboard), [`app/dashboard/student/projects/page.tsx`](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/projects/page.tsx) (Project evidence), [`app/dashboard/student/skills/page.tsx`](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/skills/page.tsx) (Skills)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Next.js app"]
  node_layout["Global layout<br/>Next.js layout<br/>[layout.tsx]"]
  node_styles["Global styles<br/>CSS<br/>[globals.css]"]
  node_landing["Public landing<br/>Next.js route<br/>[page.tsx]"]
  node_login["Login<br/>Auth route<br/>[page.tsx]"]
  node_signup["Sign up<br/>Auth route<br/>[page.tsx]"]
  node_supabase[("Supabase client<br/>Data service client<br/>[supabase.ts]")]
end

subgraph group_student["Student lifecycle"]
  node_student_dashboard["Student dashboard<br/>Role route<br/>[page.tsx]"]
  node_profile["Student profile<br/>Profile route<br/>[page.tsx]"]
  node_skills["Skills<br/>[page.tsx]"]
  node_projects["Project evidence<br/>Projects route<br/>[page.tsx]"]
end

subgraph group_faculty["Faculty verification"]
  node_faculty_dashboard["Faculty dashboard<br/>Role route<br/>[page.tsx]"]
  node_students["Student administration<br/>Faculty route<br/>[page.tsx]"]
  node_requests["Verification requests<br/>Faculty route<br/>[page.tsx]"]
end

subgraph group_recruiter["Recruiter workflow"]
  node_recruiter_dashboard["Recruiter dashboard<br/>Role route<br/>[page.tsx]"]
  node_search["Candidate search<br/>Recruiter route<br/>[page.tsx]"]
  node_shortlist["Shortlist<br/>Recruiter route<br/>[page.tsx]"]
end

subgraph group_target["Planned backend"]
  node_authz{{"Server auth and roles<br/>Planned authorization"}}
  node_trust_model[("Evidence and trust model<br/>Planned domain layer")]
  node_skill_graph[("Skill graph queries<br/>Planned graph layer")]
  node_ai{{"Evidence extraction<br/>Planned AI layer"}}
end

node_layout -->|"applies"| node_styles
node_layout -->|"frames"| node_landing
node_landing -->|"sign in"| node_login
node_landing -->|"register"| node_signup
node_login -->|"identity/session"| node_supabase
node_signup -->|"identity"| node_supabase
node_login -.->|"role-routed"| node_student_dashboard
node_login -.->|"role-routed"| node_faculty_dashboard
node_login -.->|"role-routed"| node_recruiter_dashboard
node_student_dashboard -->|"manages"| node_profile
node_student_dashboard -->|"manages"| node_skills
node_student_dashboard -->|"manages"| node_projects
node_profile -->|"profile context"| node_skills
node_projects -->|"proof supports skills"| node_skills
node_projects -.->|"extracts suggestions"| node_ai
node_faculty_dashboard -->|"administers"| node_students
node_faculty_dashboard -->|"reviews"| node_requests
node_requests -.->|"approval provenance"| node_trust_model
node_skills -.->|"declared skills"| node_trust_model
node_projects -.->|"evidence"| node_trust_model
node_recruiter_dashboard -->|"discovers"| node_search
node_recruiter_dashboard -->|"selects"| node_shortlist
node_search -.->|"relationship queries"| node_skill_graph
node_trust_model -.->|"trusted relationships"| node_skill_graph
node_search -->|"candidate selection"| node_shortlist
node_authz -.->|"protects access via"| node_supabase

click node_layout "https://github.com/shanmukht9/skillgraph/blob/main/app/layout.tsx"
click node_styles "https://github.com/shanmukht9/skillgraph/blob/main/app/globals.css"
click node_landing "https://github.com/shanmukht9/skillgraph/blob/main/app/page.tsx"
click node_login "https://github.com/shanmukht9/skillgraph/blob/main/app/auth/login/page.tsx"
click node_signup "https://github.com/shanmukht9/skillgraph/blob/main/app/auth/signup/page.tsx"
click node_supabase "https://github.com/shanmukht9/skillgraph/blob/main/lib/supabase.ts"
click node_student_dashboard "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/page.tsx"
click node_profile "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/profile/page.tsx"
click node_skills "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/skills/page.tsx"
click node_projects "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/projects/page.tsx"
click node_faculty_dashboard "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/faculty/page.tsx"
click node_students "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/faculty/students/page.tsx"
click node_requests "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/faculty/requests/page.tsx"
click node_recruiter_dashboard "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/recruiter/page.tsx"
click node_search "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/recruiter/search/page.tsx"
click node_shortlist "https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/recruiter/shortlist/page.tsx"

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_layout,node_styles,node_landing,node_login,node_signup,node_supabase toneBlue
class node_student_dashboard,node_profile,node_skills,node_projects toneAmber
class node_faculty_dashboard,node_students,node_requests toneMint
class node_recruiter_dashboard,node_search,node_shortlist toneRose
class node_authz,node_trust_model,node_skill_graph,node_ai toneIndigo
```

## Components

### Next.js app

App Router routes and shared framing.

- [Global layout](https://github.com/shanmukht9/skillgraph/blob/main/app/layout.tsx): Next.js layout · `app/layout.tsx`
- [Global styles](https://github.com/shanmukht9/skillgraph/blob/main/app/globals.css): CSS · `app/globals.css`
- [Public landing](https://github.com/shanmukht9/skillgraph/blob/main/app/page.tsx): Next.js route · `app/page.tsx`
- [Login](https://github.com/shanmukht9/skillgraph/blob/main/app/auth/login/page.tsx): Auth route · `app/auth/login/page.tsx`
- [Sign up](https://github.com/shanmukht9/skillgraph/blob/main/app/auth/signup/page.tsx): Auth route · `app/auth/signup/page.tsx`
- [Supabase client](https://github.com/shanmukht9/skillgraph/blob/main/lib/supabase.ts): Data service client · Current external identity and persistence boundary. · `lib/supabase.ts`

### Student lifecycle

Profile evidence and skills workflow.

- [Student dashboard](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/page.tsx): Role route · `app/dashboard/student/page.tsx`
- [Student profile](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/profile/page.tsx): Profile route · `app/dashboard/student/profile/page.tsx`
- [Skills](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/skills/page.tsx): Skills route · `app/dashboard/student/skills/page.tsx`
- [Project evidence](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/student/projects/page.tsx): Projects route · `app/dashboard/student/projects/page.tsx`

### Faculty verification

Institutional review surface.

- [Faculty dashboard](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/faculty/page.tsx): Role route · `app/dashboard/faculty/page.tsx`
- [Student administration](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/faculty/students/page.tsx): Faculty route · `app/dashboard/faculty/students/page.tsx`
- [Verification requests](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/faculty/requests/page.tsx): Faculty route · Review boundary for pending student activity. · `app/dashboard/faculty/requests/page.tsx`

### Recruiter workflow

Candidate discovery and selection.

- [Recruiter dashboard](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/recruiter/page.tsx): Role route · `app/dashboard/recruiter/page.tsx`
- [Candidate search](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/recruiter/search/page.tsx): Recruiter route · `app/dashboard/recruiter/search/page.tsx`
- [Shortlist](https://github.com/shanmukht9/skillgraph/blob/main/app/dashboard/recruiter/shortlist/page.tsx): Recruiter route · `app/dashboard/recruiter/shortlist/page.tsx`

### Planned backend

Product targets not implemented in this repository.

- **Server auth and roles**: Planned authorization · Required server-side authentication and role enforcement.
- **Evidence and trust model**: Planned domain layer · Separates self-reported skills from verification provenance.
- **Skill graph queries**: Planned graph layer · Relates students, skills, projects, institutions, and approvals.
- **Evidence extraction**: Planned AI layer · Derives skills or suggestions from project evidence.

## Connections

- Global layout → Global styles: applies
- Global layout → Public landing: frames
- Public landing → Login: sign in
- Public landing → Sign up: register
- Login → Supabase client: identity/session
- Sign up → Supabase client: identity
- Login → Student dashboard: role-routed
- Login → Faculty dashboard: role-routed
- Login → Recruiter dashboard: role-routed
- Student dashboard → Student profile: manages
- Student dashboard → Skills: manages
- Student dashboard → Project evidence: manages
- Student profile → Skills: profile context
- Project evidence → Skills: proof supports skills
- Project evidence → Evidence extraction: extracts suggestions
- Faculty dashboard → Student administration: administers
- Faculty dashboard → Verification requests: reviews
- Verification requests → Evidence and trust model: approval provenance
- Skills → Evidence and trust model: declared skills
- Project evidence → Evidence and trust model: evidence
- Recruiter dashboard → Candidate search: discovers
- Recruiter dashboard → Shortlist: selects
- Candidate search → Skill graph queries: relationship queries
- Evidence and trust model → Skill graph queries: trusted relationships
- Candidate search → Shortlist: candidate selection
- Server auth and roles → Supabase client: protects access via
