# prathamsinha07/placement-tracker-ai architecture

> Architecture diagram of the GitHub repository prathamsinha07/placement-tracker-ai, 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/prathamsinha07/placement-tracker-ai
- Repository: https://github.com/prathamsinha07/placement-tracker-ai

## Overview

Placement Tracker is a student job-application workspace. Users sign up or log in, track applications through placement milestones, review dashboard and analytics views, and manage their profile. The documented runtime uses Firebase Authentication and a REST API backed by Lambda and DynamoDB. Some capability pages and backend wiring are not excerpted, so their nodes reflect README and tree evidence; unverified internal links are omitted.

Main entry points: [`app/dashboard/page.tsx`](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/dashboard/page.tsx) (Dashboard), [`context/ApplicationContext.tsx`](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/context/ApplicationContext.tsx) (Application context), [`services/applicationService.ts`](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/services/applicationService.ts) (Application service), [`context/AuthContext.tsx`](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/context/AuthContext.tsx) (Auth context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and shell"]
  node_signup["Sign up<br/>[page.tsx]"]
  node_login["Log in<br/>[page.tsx]"]
  node_firebase["Firebase Auth<br/>[firebase.ts]"]
  node_authcontext["Auth context<br/>[AuthContext.tsx]"]
  node_appshell["App shell<br/>[layout.tsx]"]
end

subgraph group_tracking["Application tracking"]
  node_dashboard["Dashboard<br/>[page.tsx]"]
  node_appcontext["Application context"]
  node_applicationlist["Application list<br/>[page.tsx]"]
  node_recordmodal["New record form<br/>[NewRecordModal.tsx]"]
  node_applicationrow["Application row<br/>[ApplicationRow.tsx]"]
  node_statcards["Summary cards<br/>[StatCards.tsx]"]
  node_applicationtype["Application model<br/>[application.ts]"]
end

subgraph group_insights["Insights and profile"]
  node_analytics["Analytics<br/>[page.tsx]"]
  node_settings["Profile settings<br/>[page.tsx]"]
end

subgraph group_backend["Persistence backend"]
  node_applicationservice["Application service"]
  node_api["REST API Gateway"]
  node_lambda["Lambda handlers<br/>[index.js]"]
  node_dynamodb[("DynamoDB")]
end

node_candidate(("Candidate"))

node_candidate -->|"creates account"| node_signup
node_candidate -->|"signs in"| node_login
node_signup -->|"registers with"| node_firebase
node_login -->|"authenticates with"| node_firebase
node_appshell -->|"provides"| node_authcontext
node_appshell -->|"provides"| node_appcontext
node_dashboard -->|"reads identity"| node_authcontext
node_dashboard -->|"reads records"| node_appcontext
node_dashboard -->|"renders"| node_recordmodal
node_dashboard -->|"renders"| node_applicationrow
node_dashboard -->|"renders"| node_statcards
node_applicationlist -->|"reads identity"| node_authcontext
node_applicationlist -->|"manages records"| node_appcontext
node_analytics -->|"reads identity"| node_authcontext
node_analytics -->|"reads records"| node_appcontext
node_recordmodal -->|"creates record"| node_applicationservice
node_appcontext -->|"loads and mutates"| node_applicationservice
node_applicationrow -->|"uses model"| node_applicationtype
node_applicationservice -->|"uses model"| node_applicationtype
node_applicationservice -->|"sends REST requests"| node_api
node_api -->|"routes requests"| node_lambda
node_lambda -->|"performs CRUD"| node_dynamodb

click node_signup "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/signup/page.tsx"
click node_login "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/login/page.tsx"
click node_firebase "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/lib/firebase.ts"
click node_authcontext "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/context/AuthContext.tsx"
click node_appshell "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/layout.tsx"
click node_dashboard "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/dashboard/page.tsx"
click node_appcontext "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/context/ApplicationContext.tsx"
click node_applicationlist "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/dashboard/applications/page.tsx"
click node_recordmodal "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/components/dashboard/NewRecordModal.tsx"
click node_applicationrow "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/components/dashboard/ApplicationRow.tsx"
click node_statcards "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/components/dashboard/StatCards.tsx"
click node_applicationservice "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/services/applicationService.ts"
click node_applicationtype "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/types/application.ts"
click node_analytics "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/dashboard/analytics/page.tsx"
click node_settings "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/dashboard/settings/page.tsx"
click node_lambda "https://github.com/prathamsinha07/placement-tracker-ai/blob/main/lambda/index.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_signup,node_login,node_firebase,node_authcontext,node_appshell toneBlue
class node_dashboard,node_appcontext,node_applicationlist,node_recordmodal,node_applicationrow,node_statcards,node_applicationtype toneAmber
class node_analytics,node_settings toneMint
class node_applicationservice,node_api,node_lambda,node_dynamodb toneRose
class node_candidate toneIndigo
```

## Components

### Identity and shell

- [Sign up](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/signup/page.tsx): `app/signup/page.tsx`
- [Log in](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/login/page.tsx): `app/login/page.tsx`
- [Firebase Auth](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/lib/firebase.ts): `lib/firebase.ts`
- [Auth context](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/context/AuthContext.tsx): `context/AuthContext.tsx`
- [App shell](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/layout.tsx): `app/layout.tsx`

### Application tracking

- [Dashboard](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/dashboard/page.tsx): `app/dashboard/page.tsx`
- [Application context](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/context/ApplicationContext.tsx): `context/ApplicationContext.tsx`
- [Application list](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/dashboard/applications/page.tsx): `app/dashboard/applications/page.tsx`
- [New record form](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/components/dashboard/NewRecordModal.tsx): `components/dashboard/NewRecordModal.tsx`
- [Application row](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/components/dashboard/ApplicationRow.tsx): `components/dashboard/ApplicationRow.tsx`
- [Summary cards](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/components/dashboard/StatCards.tsx): `components/dashboard/StatCards.tsx`
- [Application model](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/types/application.ts): `types/application.ts`

### Insights and profile

- [Analytics](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/dashboard/analytics/page.tsx): `app/dashboard/analytics/page.tsx`
- [Profile settings](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/app/dashboard/settings/page.tsx): `app/dashboard/settings/page.tsx`

### Persistence backend

- [Application service](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/services/applicationService.ts): `services/applicationService.ts`
- **REST API Gateway**
- [Lambda handlers](https://github.com/prathamsinha07/placement-tracker-ai/blob/main/lambda/index.js): `lambda/index.js`
- **DynamoDB**

### Other components

- **Candidate**

## Connections

- Candidate → Sign up: creates account (evidence: `app/signup/page.tsx`)
- Candidate → Log in: signs in (evidence: `app/login/page.tsx`)
- Sign up → Firebase Auth: registers with (evidence: `app/signup/page.tsx`)
- Log in → Firebase Auth: authenticates with (evidence: `app/login/page.tsx`)
- App shell → Auth context: provides (evidence: `app/layout.tsx`)
- App shell → Application context: provides (evidence: `app/layout.tsx`)
- Dashboard → Auth context: reads identity (evidence: `app/dashboard/page.tsx`)
- Dashboard → Application context: reads records (evidence: `app/dashboard/page.tsx`)
- Dashboard → New record form: renders (evidence: `app/dashboard/page.tsx`)
- Dashboard → Application row: renders (evidence: `app/dashboard/page.tsx`)
- Dashboard → Summary cards: renders (evidence: `app/dashboard/page.tsx`)
- Application list → Auth context: reads identity (evidence: `app/dashboard/applications/page.tsx`)
- Application list → Application context: manages records (evidence: `app/dashboard/applications/page.tsx`)
- Analytics → Auth context: reads identity (evidence: `app/dashboard/analytics/page.tsx`)
- Analytics → Application context: reads records (evidence: `app/dashboard/analytics/page.tsx`)
- New record form → Application service: creates record (evidence: `components/dashboard/NewRecordModal.tsx`)
- Application context → Application service: loads and mutates (evidence: `context/ApplicationContext.tsx`)
- Application row → Application model: uses model (evidence: `components/dashboard/ApplicationRow.tsx`)
- Application service → Application model: uses model (evidence: `services/applicationService.ts`)
- Application service → REST API Gateway: sends REST requests (evidence: `services/applicationService.ts`)
- REST API Gateway → Lambda handlers: routes requests (evidence: `README.md`)
- Lambda handlers → DynamoDB: performs CRUD (evidence: `README.md`)
