# toijam-ghanashyam/campuslink-v2 architecture

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

- Interactive diagram: https://gitdiagram.com/toijam-ghanashyam/campuslink-v2
- Repository: https://github.com/toijam-ghanashyam/campuslink-v2

## Overview

CampusLink is a campus placement and recruitment platform. The main workflow spans administrative student verification and drive publishing, student eligibility and applications, recruiter screening and live interview dispatch, then student status updates and skill remediation. The graph preserves the documented AI screening, code studio, and analytics capabilities; where their wiring was not shown, links are dashed. Source excerpts and the index support the cited calls, but unsampled implementation details are not inferred.

Main entry points: [`src/lib/supabase/server.ts`](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/supabase/server.ts) (Server database client), [`src/app/actions/placement.ts`](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/actions/placement.ts) (Placement actions), [`src/app/admin/page.tsx`](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/admin/page.tsx) (TPO console), [`src/app/student/drives/page.tsx`](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/student/drives/page.tsx) (Student drive applications)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_admin["Institutional administration"]
  node_adminui["TPO console<br/>[page.tsx]"]
  node_adminactions["Student and drive admin<br/>[admin.ts]"]
end

subgraph group_placement["Placement workflow"]
  node_drivesui["Student drive applications<br/>[page.tsx]"]
  node_studenthome["Student dashboard<br/>[page.tsx]"]
  node_placementactions["Placement actions<br/>[placement.ts]"]
  node_live["Student live status<br/>[page.tsx]"]
end

subgraph group_recruit["Recruiting operations"]
  node_recruitui["Recruiter drive portal<br/>[page.tsx]"]
  node_warui["Live war room<br/>[page.tsx]"]
  node_waractions["War-room dispatch<br/>[war-room.ts]"]
end

subgraph group_remediate["Screening and remediation"]
  node_screening["AI resume screening<br/>[route.ts]"]
  node_sanitizer["Prompt sanitization<br/>[sanitizer.ts]"]
  node_roadmapapi["Roadmap generation API<br/>[route.ts]"]
  node_roadmap["Personalized roadmap engine"]
  node_studio["Remediation studio<br/>[page.tsx]"]
  node_coderun["Code execution API<br/>[route.ts]"]
end

subgraph group_platform["Data and policy"]
  node_pep["Eligibility policy engine<br/>[pep-engine.ts]"]
  node_auth["Authentication actions<br/>[auth.ts]"]
  node_callback["Auth callback<br/>[route.ts]"]
  node_dbclient["Browser database client<br/>[client.ts]"]
  node_serverdb["Server database client<br/>[server.ts]"]
  node_database[("Supabase database<br/>[schema.sql]")]
end

node_tpo(("Placement staff"))
node_student(("Student"))
node_recruiter(("Recruiter"))
node_gemini{{"Google Gemini"}}

node_tpo -->|"manages records"| node_adminui
node_adminui -->|"updates records"| node_adminactions
node_recruiter -->|"publishes drives"| node_recruitui
node_recruitui -->|"creates drive"| node_adminactions
node_student -.->|"applies to drives"| node_drivesui
node_drivesui -->|"submits application"| node_placementactions
node_placementactions -->|"checks eligibility"| node_pep
node_adminactions -->|"writes records"| node_serverdb
node_placementactions -->|"reads and writes"| node_serverdb
node_adminui -->|"loads console data"| node_dbclient
node_drivesui -->|"loads drives"| node_dbclient
node_dbclient -.->|"queries data"| node_database
node_serverdb -.->|"queries data"| node_database
node_recruiter -->|"coordinates interviews"| node_warui
node_warui -->|"dispatches candidates"| node_waractions
node_waractions -->|"updates dispatch state"| node_serverdb
node_student -->|"tracks interview status"| node_live
node_live -->|"requests status actions"| node_placementactions
node_recruiter -.->|"screens resumes"| node_screening
node_screening -->|"sanitizes input"| node_sanitizer
node_screening -.->|"evaluates resume"| node_gemini
node_student -->|"practices skills"| node_studio
node_studio -.->|"requests roadmap"| node_roadmapapi
node_roadmapapi -->|"generates roadmap"| node_roadmap
node_roadmapapi -->|"loads candidate data"| node_serverdb
node_studio -.->|"runs submitted code"| node_coderun
node_coderun -.->|"runs Python and C++"| node_gemini
node_roadmap -.->|"creates recommendations"| node_gemini
node_student -->|"views placement progress"| node_studenthome
node_studenthome -->|"requests placement data"| node_placementactions
node_auth -->|"authenticates user"| node_serverdb
node_callback -->|"completes sign-in"| node_serverdb

click node_adminui "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/admin/page.tsx"
click node_adminactions "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/actions/admin.ts"
click node_recruitui "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/recruiter/page.tsx"
click node_drivesui "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/student/drives/page.tsx"
click node_studenthome "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/student/page.tsx"
click node_placementactions "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/actions/placement.ts"
click node_pep "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/pep-engine.ts"
click node_warui "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/recruiter/war-room/page.tsx"
click node_waractions "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/actions/war-room.ts"
click node_live "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/student/live-status/page.tsx"
click node_screening "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/api/screen-resume/route.ts"
click node_sanitizer "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/sanitizer.ts"
click node_roadmapapi "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/api/generate-roadmap/route.ts"
click node_roadmap "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/roadmap-generator.ts"
click node_studio "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/student/remediation/page.tsx"
click node_coderun "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/api/run-code/route.ts"
click node_auth "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/actions/auth.ts"
click node_callback "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/auth/callback/route.ts"
click node_dbclient "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/supabase/client.ts"
click node_serverdb "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/supabase/server.ts"
click node_database "https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/supabase/schema.sql"

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_adminui,node_adminactions toneBlue
class node_drivesui,node_studenthome,node_placementactions,node_live toneAmber
class node_recruitui,node_warui,node_waractions toneMint
class node_screening,node_sanitizer,node_roadmapapi,node_roadmap,node_studio,node_coderun toneRose
class node_pep,node_auth,node_callback,node_dbclient,node_serverdb,node_database,node_tpo,node_student,node_recruiter,node_gemini toneIndigo
```

## Components

### Institutional administration

- [TPO console](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/admin/page.tsx): `src/app/admin/page.tsx`
- [Student and drive admin](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/actions/admin.ts): `src/app/actions/admin.ts`

### Placement workflow

- [Student drive applications](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/student/drives/page.tsx): `src/app/student/drives/page.tsx`
- [Student dashboard](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/student/page.tsx): `src/app/student/page.tsx`
- [Placement actions](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/actions/placement.ts): `src/app/actions/placement.ts`
- [Student live status](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/student/live-status/page.tsx): `src/app/student/live-status/page.tsx`

### Recruiting operations

- [Recruiter drive portal](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/recruiter/page.tsx): `src/app/recruiter/page.tsx`
- [Live war room](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/recruiter/war-room/page.tsx): `src/app/recruiter/war-room/page.tsx`
- [War-room dispatch](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/actions/war-room.ts): `src/app/actions/war-room.ts`

### Screening and remediation

- [AI resume screening](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/api/screen-resume/route.ts): `src/app/api/screen-resume/route.ts`
- [Prompt sanitization](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/sanitizer.ts): `src/lib/sanitizer.ts`
- [Roadmap generation API](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/api/generate-roadmap/route.ts): `src/app/api/generate-roadmap/route.ts`
- [Personalized roadmap engine](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/roadmap-generator.ts): `src/lib/roadmap-generator.ts`
- [Remediation studio](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/student/remediation/page.tsx): `src/app/student/remediation/page.tsx`
- [Code execution API](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/api/run-code/route.ts): `src/app/api/run-code/route.ts`

### Data and policy

- [Eligibility policy engine](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/pep-engine.ts): `src/lib/pep-engine.ts`
- [Authentication actions](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/actions/auth.ts): `src/app/actions/auth.ts`
- [Auth callback](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/app/auth/callback/route.ts): `src/app/auth/callback/route.ts`
- [Browser database client](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/supabase/client.ts): `src/lib/supabase/client.ts`
- [Server database client](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/src/lib/supabase/server.ts): `src/lib/supabase/server.ts`
- [Supabase database](https://github.com/toijam-ghanashyam/campuslink-v2/blob/main/supabase/schema.sql): `supabase/schema.sql`

### Other components

- **Placement staff**
- **Student**
- **Recruiter**
- **Google Gemini**

## Connections

- Placement staff → TPO console: manages records (evidence: `src/app/admin/page.tsx`)
- TPO console → Student and drive admin: updates records (evidence: `src/app/admin/page.tsx`)
- Recruiter → Recruiter drive portal: publishes drives (evidence: `src/app/recruiter/page.tsx`)
- Recruiter drive portal → Student and drive admin: creates drive (evidence: `src/app/recruiter/page.tsx`)
- Student → Student drive applications: applies to drives
- Student drive applications → Placement actions: submits application (evidence: `src/app/student/drives/page.tsx`)
- Placement actions → Eligibility policy engine: checks eligibility (evidence: `src/app/actions/placement.ts`)
- Student and drive admin → Server database client: writes records (evidence: `src/app/actions/admin.ts`)
- Placement actions → Server database client: reads and writes (evidence: `src/app/actions/placement.ts`)
- TPO console → Browser database client: loads console data (evidence: `src/app/admin/page.tsx`)
- Student drive applications → Browser database client: loads drives (evidence: `src/app/student/drives/page.tsx`)
- Browser database client → Supabase database: queries data
- Server database client → Supabase database: queries data
- Recruiter → Live war room: coordinates interviews
- Live war room → War-room dispatch: dispatches candidates (evidence: `src/app/recruiter/war-room/page.tsx`)
- War-room dispatch → Server database client: updates dispatch state (evidence: `src/app/actions/war-room.ts`)
- Student → Student live status: tracks interview status (evidence: `src/app/student/live-status/page.tsx`)
- Student live status → Placement actions: requests status actions (evidence: `src/app/student/live-status/page.tsx`)
- Recruiter → AI resume screening: screens resumes
- AI resume screening → Prompt sanitization: sanitizes input (evidence: `src/app/api/screen-resume/route.ts`)
- AI resume screening → Google Gemini: evaluates resume
- Student → Remediation studio: practices skills (evidence: `README.md`)
- Remediation studio → Roadmap generation API: requests roadmap
- Roadmap generation API → Personalized roadmap engine: generates roadmap (evidence: `src/app/api/generate-roadmap/route.ts`)
- Roadmap generation API → Server database client: loads candidate data (evidence: `src/app/api/generate-roadmap/route.ts`)
- Remediation studio → Code execution API: runs submitted code
- Code execution API → Google Gemini: runs Python and C++
- Personalized roadmap engine → Google Gemini: creates recommendations
- Student → Student dashboard: views placement progress (evidence: `README.md`)
- Student dashboard → Placement actions: requests placement data (evidence: `src/app/student/page.tsx`)
- Authentication actions → Server database client: authenticates user (evidence: `src/app/actions/auth.ts`)
- Auth callback → Server database client: completes sign-in (evidence: `src/app/auth/callback/route.ts`)
