# vaishnavisxngh/ai-microservices-platform architecture

> Architecture diagram of the GitHub repository vaishnavisxngh/ai-microservices-platform, 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/vaishnavisxngh/ai-microservices-platform
- Repository: https://github.com/vaishnavisxngh/ai-microservices-platform

## Overview

The repository is a career-support web application with account access, chat, resume analysis, search, and notifications. Its clearest end-to-end workflow is resume upload: the authenticated resume route extracts text, records a pending analysis, and publishes a job; a worker analyzes it and updates the record for status and history views. Chat has a separate authenticated, model-backed history flow. The frontend and several service capabilities are visible in the tree, but their wiring is not shown in the excerpts, so those connections are omitted.

Main entry points: [`services/resume-service/app/routes/resume_routes.py`](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/routes/resume_routes.py) (Resume endpoints), [`services/auth-service/app/routes/auth_routes.py`](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/auth-service/app/routes/auth_routes.py) (Auth endpoints), [`services/chat-service/app/routes/chat_routes.py`](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/chat-service/app/routes/chat_routes.py) (Chat endpoints), [`services/resume-worker-service/app/worker.py`](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-worker-service/app/worker.py) (Analysis worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_auth_ui["Sign in / signup<br/>[AuthForm.tsx]"]
  node_dashboard["Dashboard<br/>[page.tsx]"]
  node_resume_ui["Resume tools<br/>[ResumeUpload.tsx]"]
  node_chat_ui["Chat interface<br/>[ChatWindow.tsx]"]
  node_search_ui["Job search"]
  node_notifications_ui["Notifications<br/>[page.tsx]"]
end

subgraph group_identity["Identity service"]
  node_auth_routes["Auth endpoints<br/>[auth_routes.py]"]
  node_auth_tokens["Token handling<br/>[jwt_handler.py]"]
  node_auth_users["User records<br/>[models.py]"]
  node_auth_db[("Auth database<br/>[db.py]")]
end

subgraph group_chat["Chat service"]
  node_chat_routes["Chat endpoints<br/>[chat_routes.py]"]
  node_chat_ai["Gemini responses<br/>[gemini_service.py]"]
  node_chat_records["Chat records<br/>[models.py]"]
  node_chat_db[("Chat database<br/>[db.py]")]
end

subgraph group_resume["Resume analysis"]
  node_resume_routes["Resume endpoints<br/>[resume_routes.py]"]
  node_pdf_extract["PDF extraction<br/>[pdf_service.py]"]
  node_resume_records["Analysis records<br/>[models.py]"]
  node_resume_db[("Resume database<br/>[db.py]")]
  node_publisher["Job publisher"]
  node_worker["Analysis worker<br/>[worker.py]"]
  node_worker_ai["Resume analysis AI<br/>[gemini_service.py]"]
  node_worker_db[("Worker database<br/>[db.py]")]
end

subgraph group_support["Supporting services"]
  node_embedding["Embedding service<br/>[main.py]"]
  node_notification["Notification service<br/>[main.py]"]
end

node_user(("User"))
node_queue["RabbitMQ queue"]

node_user -.->|"enters credentials"| node_auth_ui
node_auth_routes -->|"queries / writes"| node_auth_users
node_auth_routes -->|"creates token"| node_auth_tokens
node_auth_routes -->|"gets session"| node_auth_db
node_chat_routes -->|"requests response"| node_chat_ai
node_chat_routes -->|"writes / reads"| node_chat_records
node_chat_routes -->|"gets session"| node_chat_db
node_resume_routes -->|"extracts text"| node_pdf_extract
node_resume_routes -->|"writes / reads"| node_resume_records
node_resume_routes -->|"gets session"| node_resume_db
node_resume_routes -->|"publishes job"| node_publisher
node_publisher -->|"sends job"| node_queue
node_queue -->|"delivers job"| node_worker
node_worker -->|"analyzes text"| node_worker_ai
node_worker -->|"updates analysis"| node_worker_db

click node_auth_ui "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/components/AuthForm.tsx"
click node_dashboard "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/app/dashboard/page.tsx"
click node_resume_ui "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/components/ResumeUpload.tsx"
click node_chat_ui "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/components/ChatWindow.tsx"
click node_search_ui "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/components/SearchExperience.tsx"
click node_notifications_ui "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/app/dashboard/notifications/page.tsx"
click node_auth_routes "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/auth-service/app/routes/auth_routes.py"
click node_auth_tokens "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/auth-service/app/jwt_handler.py"
click node_auth_users "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/auth-service/app/models.py"
click node_auth_db "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/auth-service/app/db.py"
click node_chat_routes "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/chat-service/app/routes/chat_routes.py"
click node_chat_ai "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/chat-service/app/gemini_service.py"
click node_chat_records "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/chat-service/app/models.py"
click node_chat_db "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/chat-service/app/db.py"
click node_resume_routes "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/routes/resume_routes.py"
click node_pdf_extract "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/services/pdf_service.py"
click node_resume_records "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/models.py"
click node_resume_db "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/db.py"
click node_publisher "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/services/rabbitmq_service.py"
click node_worker "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-worker-service/app/worker.py"
click node_worker_ai "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-worker-service/app/gemini_service.py"
click node_worker_db "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-worker-service/app/db.py"
click node_embedding "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/embedding-service/app/main.py"
click node_notification "https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/notification-service/app/main.py"

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_auth_ui,node_dashboard,node_resume_ui,node_chat_ui,node_search_ui,node_notifications_ui,node_user toneBlue
class node_auth_routes,node_auth_tokens,node_auth_users,node_auth_db toneAmber
class node_chat_routes,node_chat_ai,node_chat_records,node_chat_db toneMint
class node_resume_routes,node_pdf_extract,node_resume_records,node_resume_db,node_publisher,node_worker,node_worker_ai,node_worker_db,node_queue toneRose
class node_embedding,node_notification toneIndigo
```

## Components

### Web application

- [Sign in / signup](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/components/AuthForm.tsx): `apps/frontend/components/AuthForm.tsx`
- [Dashboard](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/app/dashboard/page.tsx): `apps/frontend/app/dashboard/page.tsx`
- [Resume tools](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/components/ResumeUpload.tsx): `apps/frontend/components/ResumeUpload.tsx`
- [Chat interface](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/components/ChatWindow.tsx): `apps/frontend/components/ChatWindow.tsx`
- [Job search](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/components/SearchExperience.tsx): `apps/frontend/components/SearchExperience.tsx`
- [Notifications](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/apps/frontend/app/dashboard/notifications/page.tsx): `apps/frontend/app/dashboard/notifications/page.tsx`

### Identity service

- [Auth endpoints](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/auth-service/app/routes/auth_routes.py): `services/auth-service/app/routes/auth_routes.py`
- [Token handling](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/auth-service/app/jwt_handler.py): `services/auth-service/app/jwt_handler.py`
- [User records](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/auth-service/app/models.py): `services/auth-service/app/models.py`
- [Auth database](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/auth-service/app/db.py): `services/auth-service/app/db.py`

### Chat service

- [Chat endpoints](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/chat-service/app/routes/chat_routes.py): `services/chat-service/app/routes/chat_routes.py`
- [Gemini responses](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/chat-service/app/gemini_service.py): `services/chat-service/app/gemini_service.py`
- [Chat records](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/chat-service/app/models.py): `services/chat-service/app/models.py`
- [Chat database](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/chat-service/app/db.py): `services/chat-service/app/db.py`

### Resume analysis

- [Resume endpoints](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/routes/resume_routes.py): `services/resume-service/app/routes/resume_routes.py`
- [PDF extraction](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/services/pdf_service.py): `services/resume-service/app/services/pdf_service.py`
- [Analysis records](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/models.py): `services/resume-service/app/models.py`
- [Resume database](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/db.py): `services/resume-service/app/db.py`
- [Job publisher](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-service/app/services/rabbitmq_service.py): `services/resume-service/app/services/rabbitmq_service.py`
- [Analysis worker](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-worker-service/app/worker.py): `services/resume-worker-service/app/worker.py`
- [Resume analysis AI](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-worker-service/app/gemini_service.py): `services/resume-worker-service/app/gemini_service.py`
- [Worker database](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/resume-worker-service/app/db.py): `services/resume-worker-service/app/db.py`

### Supporting services

- [Embedding service](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/embedding-service/app/main.py): `services/embedding-service/app/main.py`
- [Notification service](https://github.com/vaishnavisxngh/ai-microservices-platform/blob/main/services/notification-service/app/main.py): `services/notification-service/app/main.py`

### Other components

- **User**
- **RabbitMQ queue**

## Connections

- User → Sign in / signup: enters credentials
- Auth endpoints → User records: queries / writes (evidence: `services/auth-service/app/routes/auth_routes.py`)
- Auth endpoints → Token handling: creates token (evidence: `services/auth-service/app/routes/auth_routes.py`)
- Auth endpoints → Auth database: gets session (evidence: `services/auth-service/app/routes/auth_routes.py`)
- Chat endpoints → Gemini responses: requests response (evidence: `services/chat-service/app/routes/chat_routes.py`)
- Chat endpoints → Chat records: writes / reads (evidence: `services/chat-service/app/routes/chat_routes.py`)
- Chat endpoints → Chat database: gets session (evidence: `services/chat-service/app/routes/chat_routes.py`)
- Resume endpoints → PDF extraction: extracts text (evidence: `services/resume-service/app/routes/resume_routes.py`)
- Resume endpoints → Analysis records: writes / reads (evidence: `services/resume-service/app/routes/resume_routes.py`)
- Resume endpoints → Resume database: gets session (evidence: `services/resume-service/app/routes/resume_routes.py`)
- Resume endpoints → Job publisher: publishes job (evidence: `services/resume-service/app/routes/resume_routes.py`)
- Job publisher → RabbitMQ queue: sends job (evidence: `services/resume-service/app/services/rabbitmq_service.py`)
- RabbitMQ queue → Analysis worker: delivers job (evidence: `services/resume-worker-service/app/worker.py`)
- Analysis worker → Resume analysis AI: analyzes text (evidence: `services/resume-worker-service/app/worker.py`)
- Analysis worker → Worker database: updates analysis (evidence: `services/resume-worker-service/app/worker.py`)
