# pradeep-polishetty/friday architecture

> Architecture diagram of the GitHub repository pradeep-polishetty/friday, 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/pradeep-polishetty/friday
- Repository: https://github.com/pradeep-polishetty/friday

## Overview

This repository is a web app for AI-assisted conversations with persistent, user-specific history and uploaded-file analysis. The main workflow is user sign-in, protected chat, optional retrieval of relevant prior conversations, AI response generation, and saving the exchange; conversation grouping and file visualization are separate capabilities. The client also exposes speech routes. README content was empty, and several routes and services were not sampled, so those branches are shown only where the tree and server wiring support them.

Main entry points: [`server/controllers/chatController.js`](https://github.com/pradeep-polishetty/friday/blob/main/server/controllers/chatController.js) (Chat controller), [`server/server.js`](https://github.com/pradeep-polishetty/friday/blob/main/server/server.js) (HTTP server), [`client/src/components/api.jsx`](https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/api.jsx) (Client API), [`client/src/App.jsx`](https://github.com/pradeep-polishetty/friday/blob/main/client/src/App.jsx) (App routing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["App routing<br/>[App.jsx]"]
  node_login["Login UI<br/>[Login.jsx]"]
  node_chatui["Chat UI<br/>[Chat.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_fileviz["File visualization"]
  node_api["Client API<br/>[api.jsx]"]
end

subgraph group_identity["Identity and API"]
  node_server["HTTP server<br/>[server.js]"]
  node_authroutes["Auth routes<br/>[userRoutes.js]"]
  node_authguard["JWT guard<br/>[authMiddleware.js]"]
end

subgraph group_conversation["Conversation intelligence"]
  node_chatroutes["Chat routes<br/>[chatRoutes.js]"]
  node_chat["Chat controller<br/>[chatController.js]"]
  node_rag["Context retrieval<br/>[ragService.js]"]
  node_embedding["Embeddings"]
  node_llm["AI response<br/>[llmService.js]"]
  node_grouping["Conversation grouping<br/>[groupingService.js]"]
end

subgraph group_files["File analysis"]
  node_fileapi["File routes<br/>[fileRoutes.js]"]
  node_documents["Document processing<br/>[documentService.js]"]
  node_speech["Speech routes<br/>[speech.js]"]
end

subgraph group_persistence["Persistent data"]
  node_conversations[("Conversation records<br/>[Conversation.js]")]
  node_groups[("Conversation groups")]
  node_users[("User records<br/>[User.js]")]
end

node_user(("User"))
node_ai_provider["Groq AI"]
node_speech_provider["Speech service"]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_login
node_app -->|"protects route"| node_chatui
node_login -->|"requests auth"| node_api
node_chatui -->|"requests chat"| node_api
node_api -->|"sends requests"| node_server
node_server -->|"dispatches auth"| node_authroutes
node_server -->|"dispatches chat"| node_chatroutes
node_server -->|"dispatches files"| node_fileapi
node_server -->|"dispatches speech"| node_speech
node_authroutes -->|"reads/writes"| node_users
node_authguard -->|"identifies user"| node_users
node_chatroutes -->|"routes chat"| node_chat
node_chat -->|"embeds message"| node_embedding
node_chat -->|"retrieves context"| node_rag
node_chat -->|"generates reply"| node_llm
node_chat -->|"reads/writes"| node_conversations
node_rag -->|"embeds query"| node_embedding
node_rag -->|"reads history"| node_conversations
node_chat -->|"triggers grouping"| node_grouping
node_grouping -->|"writes groups"| node_groups
node_grouping -->|"updates conversations"| node_conversations
node_llm -->|"requests completion"| node_ai_provider
node_fileapi -.->|"processes documents"| node_documents
node_user -->|"views analysis"| node_fileviz
node_fileviz -->|"requests visualization"| node_api
node_api -->|"loads dashboard"| node_dashboard
node_speech -.->|"uses speech"| node_speech_provider

click node_app "https://github.com/pradeep-polishetty/friday/blob/main/client/src/App.jsx"
click node_login "https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/Login.jsx"
click node_chatui "https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/Chat.jsx"
click node_dashboard "https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/Dashboard.jsx"
click node_fileviz "https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/FileVisualization.jsx"
click node_api "https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/api.jsx"
click node_server "https://github.com/pradeep-polishetty/friday/blob/main/server/server.js"
click node_authroutes "https://github.com/pradeep-polishetty/friday/blob/main/server/routes/userRoutes.js"
click node_authguard "https://github.com/pradeep-polishetty/friday/blob/main/server/middleware/authMiddleware.js"
click node_chatroutes "https://github.com/pradeep-polishetty/friday/blob/main/server/routes/chatRoutes.js"
click node_chat "https://github.com/pradeep-polishetty/friday/blob/main/server/controllers/chatController.js"
click node_rag "https://github.com/pradeep-polishetty/friday/blob/main/server/services/ragService.js"
click node_embedding "https://github.com/pradeep-polishetty/friday/blob/main/server/services/embeddingService.js"
click node_llm "https://github.com/pradeep-polishetty/friday/blob/main/server/services/llmService.js"
click node_grouping "https://github.com/pradeep-polishetty/friday/blob/main/server/services/groupingService.js"
click node_fileapi "https://github.com/pradeep-polishetty/friday/blob/main/server/routes/fileRoutes.js"
click node_documents "https://github.com/pradeep-polishetty/friday/blob/main/server/services/documentService.js"
click node_speech "https://github.com/pradeep-polishetty/friday/blob/main/server/routes/speech.js"
click node_conversations "https://github.com/pradeep-polishetty/friday/blob/main/server/models/Conversation.js"
click node_groups "https://github.com/pradeep-polishetty/friday/blob/main/server/models/ConversationGroup.js"
click node_users "https://github.com/pradeep-polishetty/friday/blob/main/server/models/User.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_login,node_chatui,node_dashboard,node_fileviz,node_api,node_user toneBlue
class node_server,node_authroutes,node_authguard toneAmber
class node_chatroutes,node_chat,node_rag,node_embedding,node_llm,node_grouping toneMint
class node_fileapi,node_documents,node_speech toneRose
class node_conversations,node_groups,node_users,node_ai_provider,node_speech_provider toneIndigo
```

## Components

### Web client

- [App routing](https://github.com/pradeep-polishetty/friday/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Login UI](https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/Login.jsx): `client/src/components/Login.jsx`
- [Chat UI](https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/Chat.jsx): `client/src/components/Chat.jsx`
- [Dashboard](https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/Dashboard.jsx): `client/src/components/Dashboard.jsx`
- [File visualization](https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/FileVisualization.jsx): `client/src/components/FileVisualization.jsx`
- [Client API](https://github.com/pradeep-polishetty/friday/blob/main/client/src/components/api.jsx): `client/src/components/api.jsx`

### Identity and API

- [HTTP server](https://github.com/pradeep-polishetty/friday/blob/main/server/server.js): `server/server.js`
- [Auth routes](https://github.com/pradeep-polishetty/friday/blob/main/server/routes/userRoutes.js): `server/routes/userRoutes.js`
- [JWT guard](https://github.com/pradeep-polishetty/friday/blob/main/server/middleware/authMiddleware.js): `server/middleware/authMiddleware.js`

### Conversation intelligence

- [Chat routes](https://github.com/pradeep-polishetty/friday/blob/main/server/routes/chatRoutes.js): `server/routes/chatRoutes.js`
- [Chat controller](https://github.com/pradeep-polishetty/friday/blob/main/server/controllers/chatController.js): `server/controllers/chatController.js`
- [Context retrieval](https://github.com/pradeep-polishetty/friday/blob/main/server/services/ragService.js): `server/services/ragService.js`
- [Embeddings](https://github.com/pradeep-polishetty/friday/blob/main/server/services/embeddingService.js): `server/services/embeddingService.js`
- [AI response](https://github.com/pradeep-polishetty/friday/blob/main/server/services/llmService.js): `server/services/llmService.js`
- [Conversation grouping](https://github.com/pradeep-polishetty/friday/blob/main/server/services/groupingService.js): `server/services/groupingService.js`

### File analysis

- [File routes](https://github.com/pradeep-polishetty/friday/blob/main/server/routes/fileRoutes.js): `server/routes/fileRoutes.js`
- [Document processing](https://github.com/pradeep-polishetty/friday/blob/main/server/services/documentService.js): `server/services/documentService.js`
- [Speech routes](https://github.com/pradeep-polishetty/friday/blob/main/server/routes/speech.js): `server/routes/speech.js`

### Persistent data

- [Conversation records](https://github.com/pradeep-polishetty/friday/blob/main/server/models/Conversation.js): `server/models/Conversation.js`
- [Conversation groups](https://github.com/pradeep-polishetty/friday/blob/main/server/models/ConversationGroup.js): `server/models/ConversationGroup.js`
- [User records](https://github.com/pradeep-polishetty/friday/blob/main/server/models/User.js): `server/models/User.js`

### Other components

- **User**
- **Groq AI**
- **Speech service**

## Connections

- User → App routing: uses
- App routing → Login UI: routes to
- App routing → Chat UI: protects route
- Login UI → Client API: requests auth
- Chat UI → Client API: requests chat
- Client API → HTTP server: sends requests
- HTTP server → Auth routes: dispatches auth
- HTTP server → Chat routes: dispatches chat
- HTTP server → File routes: dispatches files
- HTTP server → Speech routes: dispatches speech
- Auth routes → User records: reads/writes
- JWT guard → User records: identifies user
- Chat routes → Chat controller: routes chat
- Chat controller → Embeddings: embeds message
- Chat controller → Context retrieval: retrieves context
- Chat controller → AI response: generates reply
- Chat controller → Conversation records: reads/writes
- Context retrieval → Embeddings: embeds query
- Context retrieval → Conversation records: reads history
- Chat controller → Conversation grouping: triggers grouping
- Conversation grouping → Conversation groups: writes groups
- Conversation grouping → Conversation records: updates conversations
- AI response → Groq AI: requests completion
- File routes → Document processing: processes documents
- User → File visualization: views analysis
- File visualization → Client API: requests visualization
- Client API → Dashboard: loads dashboard
- Speech routes → Speech service: uses speech
