# ashok-nimmala/smarthire-deploy architecture

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

- Interactive diagram: https://gitdiagram.com/ashok-nimmala/smarthire-deploy
- Repository: https://github.com/ashok-nimmala/smarthire-deploy

## Overview

SmartHire is a hiring platform: administrators configure jobs, interviewers, and free-text exam questions; candidates apply with resumes; background AI screens applications and marks proctored exams; successful candidates reach an interviewer for the final decision. The repository also includes Android, candidate web, interviewer web, admin, and separate exam clients. The README documents the workflow and AWS services; source excerpts verify worker dispatch and scoring plus selected client routing. Backend request wiring and most frontend/API integrations were not sampled, so uncertain edges are omitted.

Main entry points: [`Backend/main.py`](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/main.py) (HTTP and Lambda entry), [`Backend/db.py`](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/db.py) (Persistence adapter), [`Backend/sqs_worker.py`](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/sqs_worker.py) (Screen and mark worker), [`Backend/candidate.py`](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/candidate.py) (Candidate applications)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["User clients"]
  node_admin["Admin console<br/>[main.jsx]"]
  node_candidateweb["Candidate web<br/>[App.jsx]"]
  node_interviewerweb["Interviewer portal<br/>[Applications.tsx]"]
  node_android["Android app<br/>[MainActivity.kt]"]
end

subgraph group_api["Platform API"]
  node_api_entry["HTTP and Lambda entry<br/>[main.py]"]
  node_auth["Authentication<br/>[auth.py]"]
  node_admin_ops["Hiring configuration<br/>[admin.py]"]
  node_candidate_ops["Candidate applications<br/>[candidate.py]"]
  node_interviewer_ops["Final decisions<br/>[interviewer.py]"]
  node_models["State and scoring<br/>[models.py]"]
end

subgraph group_screen["AI processing"]
  node_worker["Screen and mark worker<br/>[sqs_worker.py]"]
  node_llm["AI scoring<br/>[llm.py]"]
end

subgraph group_exam["Proctored exam"]
  node_exam_api["Exam and proctor API<br/>[exam.py]"]
  node_examweb["Exam web client<br/>[exam.js]"]
end

subgraph group_cloud["AWS services"]
  node_db[("Persistence adapter<br/>[db.py]")]
  node_cache[("AI cache and limits<br/>[cache.py]")]
  node_sqs["Background queues"]
  node_s3[("Resume object store")]
end

node_interviewer(("Interviewer"))
node_candidate(("Candidate"))
node_adminactor(("Administrator"))
node_aws{{"AWS Lambda"}}

node_adminactor -->|"configures hiring"| node_admin
node_candidate -->|"submits application"| node_candidateweb
node_interviewer -->|"reviews queue"| node_interviewerweb
node_admin -.->|"calls API"| node_api_entry
node_candidateweb -.->|"calls API"| node_api_entry
node_interviewerweb -->|"loads applications"| node_api_entry
node_android -.->|"calls API"| node_api_entry
node_examweb -.->|"uses exam API"| node_exam_api
node_api_entry -.->|"routes requests"| node_auth
node_api_entry -.->|"routes requests"| node_admin_ops
node_api_entry -.->|"routes requests"| node_candidate_ops
node_api_entry -.->|"routes requests"| node_interviewer_ops
node_api_entry -.->|"routes requests"| node_exam_api
node_aws -->|"invokes Lambda"| node_api_entry
node_aws -->|"delivers SQS jobs"| node_worker
node_worker -->|"reads and writes"| node_db
node_worker -->|"scores submissions"| node_llm
node_worker -->|"computes outcomes"| node_models
node_worker -->|"processes messages"| node_sqs
node_candidate_ops -.->|"queues screening"| node_sqs
node_exam_api -.->|"queues marking"| node_sqs
node_db -->|"stores resumes"| node_s3
node_interviewer_ops -.->|"persists decisions"| node_db
node_admin_ops -.->|"persists configuration"| node_db
node_candidate_ops -.->|"persists applications"| node_db
node_auth -.->|"stores sessions"| node_db

click node_admin "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/smarthire-admin-frontend/src/main.jsx"
click node_candidateweb "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/smarthire-candidate-frontend/src/App.jsx"
click node_interviewerweb "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/SmartHire-interviewer-frontend/src/pages/Applications.tsx"
click node_android "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/SmartHire%20Android%20App/app/src/main/java/com/bnp/paribas/MainActivity.kt"
click node_api_entry "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/main.py"
click node_auth "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/auth.py"
click node_admin_ops "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/admin.py"
click node_candidate_ops "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/candidate.py"
click node_interviewer_ops "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/interviewer.py"
click node_exam_api "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/exam.py"
click node_models "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/models.py"
click node_db "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/db.py"
click node_cache "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/cache.py"
click node_worker "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/sqs_worker.py"
click node_llm "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/llm.py"
click node_examweb "https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/proctored-exam/js/exam.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_admin,node_candidateweb,node_interviewerweb,node_android,node_interviewer toneBlue
class node_api_entry,node_auth,node_admin_ops,node_candidate_ops,node_interviewer_ops,node_models toneAmber
class node_worker,node_llm toneMint
class node_exam_api,node_examweb toneRose
class node_db,node_cache,node_sqs,node_s3,node_candidate,node_adminactor,node_aws toneIndigo
```

## Components

### User clients

- [Admin console](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/smarthire-admin-frontend/src/main.jsx): `Frontend/smarthire-admin-frontend/src/main.jsx`
- [Candidate web](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/smarthire-candidate-frontend/src/App.jsx): `Frontend/smarthire-candidate-frontend/src/App.jsx`
- [Interviewer portal](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/SmartHire-interviewer-frontend/src/pages/Applications.tsx): `Frontend/SmartHire-interviewer-frontend/src/pages/Applications.tsx`
- [Android app](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/SmartHire%20Android%20App/app/src/main/java/com/bnp/paribas/MainActivity.kt): `Frontend/SmartHire Android App/app/src/main/java/com/bnp/paribas/MainActivity.kt`

### Platform API

- [HTTP and Lambda entry](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/main.py): `Backend/main.py`
- [Authentication](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/auth.py): `Backend/auth.py`
- [Hiring configuration](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/admin.py): `Backend/admin.py`
- [Candidate applications](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/candidate.py): `Backend/candidate.py`
- [Final decisions](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/interviewer.py): `Backend/interviewer.py`
- [State and scoring](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/models.py): `Backend/models.py`

### AI processing

- [Screen and mark worker](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/sqs_worker.py): `Backend/sqs_worker.py`
- [AI scoring](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/llm.py): `Backend/llm.py`

### Proctored exam

- [Exam and proctor API](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/exam.py): `Backend/exam.py`
- [Exam web client](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Frontend/proctored-exam/js/exam.js): `Frontend/proctored-exam/js/exam.js`

### AWS services

- [Persistence adapter](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/db.py): `Backend/db.py`
- [AI cache and limits](https://github.com/ashok-nimmala/smarthire-deploy/blob/main/Backend/cache.py): `Backend/cache.py`
- **Background queues**
- **Resume object store**

### Other components

- **Interviewer**
- **Candidate**
- **Administrator**
- **AWS Lambda**

## Connections

- Administrator → Admin console: configures hiring (evidence: `README.md`)
- Candidate → Candidate web: submits application (evidence: `README.md`)
- Interviewer → Interviewer portal: reviews queue (evidence: `README.md`)
- Admin console → HTTP and Lambda entry: calls API
- Candidate web → HTTP and Lambda entry: calls API
- Interviewer portal → HTTP and Lambda entry: loads applications (evidence: `Frontend/SmartHire-interviewer-frontend/src/pages/Applications.tsx`)
- Android app → HTTP and Lambda entry: calls API
- Exam web client → Exam and proctor API: uses exam API
- HTTP and Lambda entry → Authentication: routes requests
- HTTP and Lambda entry → Hiring configuration: routes requests
- HTTP and Lambda entry → Candidate applications: routes requests
- HTTP and Lambda entry → Final decisions: routes requests
- HTTP and Lambda entry → Exam and proctor API: routes requests
- AWS Lambda → HTTP and Lambda entry: invokes Lambda (evidence: `README.md`)
- AWS Lambda → Screen and mark worker: delivers SQS jobs (evidence: `README.md`)
- Screen and mark worker → Persistence adapter: reads and writes (evidence: `Backend/sqs_worker.py`)
- Screen and mark worker → AI scoring: scores submissions (evidence: `Backend/sqs_worker.py`)
- Screen and mark worker → State and scoring: computes outcomes (evidence: `Backend/sqs_worker.py`)
- Screen and mark worker → Background queues: processes messages (evidence: `README.md`)
- Candidate applications → Background queues: queues screening
- Exam and proctor API → Background queues: queues marking
- Persistence adapter → Resume object store: stores resumes (evidence: `README.md`)
- Final decisions → Persistence adapter: persists decisions
- Hiring configuration → Persistence adapter: persists configuration
- Candidate applications → Persistence adapter: persists applications
- Authentication → Persistence adapter: stores sessions
