# sekaikerai/shortlistd architecture

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

- Interactive diagram: https://gitdiagram.com/sekaikerai/shortlistd
- Repository: https://github.com/sekaikerai/shortlistd

## Overview

ShortlistD supports student and placement-administrator workflows: authenticate, maintain student profiles, configure recruitment drives and eligibility rules, apply and track application stages, and manage applicants and reporting. The graph follows the documented React-to-Express REST boundary and sampled server route/controller ownership. Several client page internals and some controller implementations were not sampled, so their detailed wiring is represented only where documented or visible in routes.

Main entry points: [`server/app.js`](https://github.com/sekaikerai/shortlistd/blob/main/server/app.js) (Express API), [`client/src/App.jsx`](https://github.com/sekaikerai/shortlistd/blob/main/client/src/App.jsx) (React App), [`server/controllers/companyController.js`](https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/companyController.js) (Drive and Eligibility), [`server/models/User.js`](https://github.com/sekaikerai/shortlistd/blob/main/server/models/User.js) (User Records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Student and Admin Portal"]
  node_app["React App<br/>[App.jsx]"]
  node_authctx["Session Context<br/>[AuthContext.jsx]"]
  node_studentpages["Student Portal Pages<br/>[CompaniesPage.jsx]"]
  node_profilepage["Profile Pages"]
  node_adminpages["Admin Pages"]
end

subgraph group_api["API and Workflows"]
  node_serverapp["Express API<br/>[app.js]"]
  node_authroutes["Auth Routes<br/>[authRoutes.js]"]
  node_authctrl["Authentication<br/>[authController.js]"]
  node_userroutes["User Routes<br/>[userRoutes.js]"]
  node_userctrl["Profile and Students<br/>[userController.js]"]
  node_companyroutes["Company Routes<br/>[companyRoutes.js]"]
  node_companyctrl["Drive and Eligibility"]
  node_eligibility["Eligibility Rules"]
  node_applicationroutes["Application Routes"]
  node_applicationctrl["Application Lifecycle"]
  node_analytics["Placement Analytics"]
  node_announcements["Announcements"]
end

subgraph group_domain["Placement Data"]
  node_mongo[("MongoDB<br/>[db.js]")]
  node_user[("User Records<br/>[User.js]")]
  node_company[("Company Records<br/>[Company.js]")]
  node_application[("Application Records<br/>[Application.js]")]
  node_announcement[("Announcement Records<br/>[Announcement.js]")]
end

subgraph group_integrations["External Services"]
  node_google["Google OAuth"]
  node_email["Email Service"]
end

node_student(("Student"))
node_admin(("Administrator"))

node_student -->|"uses portal"| node_app
node_admin -->|"uses portal"| node_app
node_app -->|"reads session"| node_authctx
node_app -->|"routes students"| node_studentpages
node_app -->|"routes profiles"| node_profilepage
node_app -->|"routes admins"| node_adminpages
node_studentpages -->|"REST requests"| node_serverapp
node_profilepage -->|"REST requests"| node_serverapp
node_adminpages -->|"REST requests"| node_serverapp
node_serverapp -->|"dispatches"| node_authroutes
node_serverapp -->|"dispatches"| node_userroutes
node_serverapp -->|"dispatches"| node_companyroutes
node_serverapp -->|"dispatches"| node_applicationroutes
node_authroutes -->|"dispatches"| node_authctrl
node_userroutes -->|"dispatches"| node_userctrl
node_userroutes -->|"dispatches"| node_analytics
node_companyroutes -->|"dispatches"| node_companyctrl
node_applicationroutes -->|"dispatches"| node_applicationctrl
node_serverapp -->|"mounts routes"| node_announcements
node_authctrl -->|"verifies token"| node_google
node_authctrl -->|"finds or creates"| node_user
node_authctrl -->|"sets session cookie"| node_authctx
node_userctrl -->|"updates and reads"| node_user
node_companyctrl -->|"manages drives"| node_company
node_companyctrl -->|"checks students"| node_eligibility
node_companyctrl -->|"reads students"| node_user
node_companyctrl -->|"reads applications"| node_application
node_applicationctrl -->|"reads drive"| node_company
node_applicationctrl -->|"checks applicant"| node_eligibility
node_applicationctrl -->|"creates and updates"| node_application
node_analytics -->|"reads student data"| node_user
node_announcements -->|"manages posts"| node_announcement
node_user -->|"persists"| node_mongo
node_company -->|"persists"| node_mongo
node_application -->|"persists"| node_mongo
node_announcement -->|"persists"| node_mongo
node_serverapp -.->|"email routes"| node_email

click node_app "https://github.com/sekaikerai/shortlistd/blob/main/client/src/App.jsx"
click node_authctx "https://github.com/sekaikerai/shortlistd/blob/main/client/src/context/AuthContext.jsx"
click node_studentpages "https://github.com/sekaikerai/shortlistd/blob/main/client/src/pages/CompaniesPage.jsx"
click node_profilepage "https://github.com/sekaikerai/shortlistd/blob/main/client/src/pages/CompleteProfilePage.jsx"
click node_adminpages "https://github.com/sekaikerai/shortlistd/blob/main/client/src/pages/AdminDashboardPage.jsx"
click node_serverapp "https://github.com/sekaikerai/shortlistd/blob/main/server/app.js"
click node_authroutes "https://github.com/sekaikerai/shortlistd/blob/main/server/routes/authRoutes.js"
click node_authctrl "https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/authController.js"
click node_userroutes "https://github.com/sekaikerai/shortlistd/blob/main/server/routes/userRoutes.js"
click node_userctrl "https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/userController.js"
click node_companyroutes "https://github.com/sekaikerai/shortlistd/blob/main/server/routes/companyRoutes.js"
click node_companyctrl "https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/companyController.js"
click node_eligibility "https://github.com/sekaikerai/shortlistd/blob/main/server/utils/checkEligibility.js"
click node_applicationroutes "https://github.com/sekaikerai/shortlistd/blob/main/server/routes/applicationRoutes.js"
click node_applicationctrl "https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/applicationController.js"
click node_analytics "https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/analyticsController.js"
click node_announcements "https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/announcementController.js"
click node_mongo "https://github.com/sekaikerai/shortlistd/blob/main/server/config/db.js"
click node_user "https://github.com/sekaikerai/shortlistd/blob/main/server/models/User.js"
click node_company "https://github.com/sekaikerai/shortlistd/blob/main/server/models/Company.js"
click node_application "https://github.com/sekaikerai/shortlistd/blob/main/server/models/Application.js"
click node_announcement "https://github.com/sekaikerai/shortlistd/blob/main/server/models/Announcement.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_authctx,node_studentpages,node_profilepage,node_adminpages toneBlue
class node_serverapp,node_authroutes,node_authctrl,node_userroutes,node_userctrl,node_companyroutes,node_companyctrl,node_eligibility,node_applicationroutes,node_applicationctrl,node_analytics,node_announcements toneAmber
class node_mongo,node_user,node_company,node_application,node_announcement toneMint
class node_google,node_email toneRose
class node_student,node_admin toneIndigo
```

## Components

### Student and Admin Portal

- [React App](https://github.com/sekaikerai/shortlistd/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Session Context](https://github.com/sekaikerai/shortlistd/blob/main/client/src/context/AuthContext.jsx): `client/src/context/AuthContext.jsx`
- [Student Portal Pages](https://github.com/sekaikerai/shortlistd/blob/main/client/src/pages/CompaniesPage.jsx): `client/src/pages/CompaniesPage.jsx`
- [Profile Pages](https://github.com/sekaikerai/shortlistd/blob/main/client/src/pages/CompleteProfilePage.jsx): `client/src/pages/CompleteProfilePage.jsx`
- [Admin Pages](https://github.com/sekaikerai/shortlistd/blob/main/client/src/pages/AdminDashboardPage.jsx): `client/src/pages/AdminDashboardPage.jsx`

### API and Workflows

- [Express API](https://github.com/sekaikerai/shortlistd/blob/main/server/app.js): `server/app.js`
- [Auth Routes](https://github.com/sekaikerai/shortlistd/blob/main/server/routes/authRoutes.js): `server/routes/authRoutes.js`
- [Authentication](https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [User Routes](https://github.com/sekaikerai/shortlistd/blob/main/server/routes/userRoutes.js): `server/routes/userRoutes.js`
- [Profile and Students](https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/userController.js): `server/controllers/userController.js`
- [Company Routes](https://github.com/sekaikerai/shortlistd/blob/main/server/routes/companyRoutes.js): `server/routes/companyRoutes.js`
- [Drive and Eligibility](https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/companyController.js): `server/controllers/companyController.js`
- [Eligibility Rules](https://github.com/sekaikerai/shortlistd/blob/main/server/utils/checkEligibility.js): `server/utils/checkEligibility.js`
- [Application Routes](https://github.com/sekaikerai/shortlistd/blob/main/server/routes/applicationRoutes.js): `server/routes/applicationRoutes.js`
- [Application Lifecycle](https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/applicationController.js): `server/controllers/applicationController.js`
- [Placement Analytics](https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/analyticsController.js): `server/controllers/analyticsController.js`
- [Announcements](https://github.com/sekaikerai/shortlistd/blob/main/server/controllers/announcementController.js): `server/controllers/announcementController.js`

### Placement Data

- [MongoDB](https://github.com/sekaikerai/shortlistd/blob/main/server/config/db.js): `server/config/db.js`
- [User Records](https://github.com/sekaikerai/shortlistd/blob/main/server/models/User.js): `server/models/User.js`
- [Company Records](https://github.com/sekaikerai/shortlistd/blob/main/server/models/Company.js): `server/models/Company.js`
- [Application Records](https://github.com/sekaikerai/shortlistd/blob/main/server/models/Application.js): `server/models/Application.js`
- [Announcement Records](https://github.com/sekaikerai/shortlistd/blob/main/server/models/Announcement.js): `server/models/Announcement.js`

### External Services

- **Google OAuth**
- **Email Service**

### Other components

- **Student**
- **Administrator**

## Connections

- Student → React App: uses portal
- Administrator → React App: uses portal
- React App → Session Context: reads session
- React App → Student Portal Pages: routes students
- React App → Profile Pages: routes profiles
- React App → Admin Pages: routes admins
- Student Portal Pages → Express API: REST requests
- Profile Pages → Express API: REST requests
- Admin Pages → Express API: REST requests
- Express API → Auth Routes: dispatches
- Express API → User Routes: dispatches
- Express API → Company Routes: dispatches
- Express API → Application Routes: dispatches
- Auth Routes → Authentication: dispatches
- User Routes → Profile and Students: dispatches
- User Routes → Placement Analytics: dispatches
- Company Routes → Drive and Eligibility: dispatches
- Application Routes → Application Lifecycle: dispatches
- Express API → Announcements: mounts routes
- Authentication → Google OAuth: verifies token
- Authentication → User Records: finds or creates
- Authentication → Session Context: sets session cookie
- Profile and Students → User Records: updates and reads
- Drive and Eligibility → Company Records: manages drives
- Drive and Eligibility → Eligibility Rules: checks students
- Drive and Eligibility → User Records: reads students
- Drive and Eligibility → Application Records: reads applications
- Application Lifecycle → Company Records: reads drive
- Application Lifecycle → Eligibility Rules: checks applicant
- Application Lifecycle → Application Records: creates and updates
- Placement Analytics → User Records: reads student data
- Announcements → Announcement Records: manages posts
- User Records → MongoDB: persists
- Company Records → MongoDB: persists
- Application Records → MongoDB: persists
- Announcement Records → MongoDB: persists
- Express API → Email Service: email routes
