# saikiran9346/meet-scribe architecture

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

- Interactive diagram: https://gitdiagram.com/saikiran9346/meet-scribe
- Repository: https://github.com/saikiran9346/meet-scribe

## Overview

MeetScribe turns a Google Meet session into live English transcripts and persisted AI meeting intelligence, then exposes it through a dashboard, meeting chat, exports, and sharing. The graph combines the documented audio/AI pipeline with source-index references and the shown route, authentication, storage, and socket code. Some capabilities—such as PDF generation and cross-meeting RAG—are documented or route-wired but their full implementations were not sampled.

Main entry points: [`backend/routes/api.js`](https://github.com/saikiran9346/meet-scribe/blob/master/backend/routes/api.js) (REST API routes), [`frontend/src/hooks/useApi.js`](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/hooks/useApi.js) (API client), [`backend/bot/meetBot.js`](https://github.com/saikiran9346/meet-scribe/blob/master/backend/bot/meetBot.js) (Meet automation bot), [`frontend/src/context/AuthContext.jsx`](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/context/AuthContext.jsx) (Auth context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["App routing<br/>[App.jsx]"]
  node_auth["Auth context<br/>[AuthContext.jsx]"]
  node_firebase_client["Firebase client auth<br/>[firebase.js]"]
  node_login["Login page<br/>[Login.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_bot_control["Bot controls<br/>[BotControl.jsx]"]
  node_api_client["API client<br/>[useApi.js]"]
  node_session_page["Live session page<br/>[Session.jsx]"]
  node_live_transcript["Transcript view<br/>[LiveTranscript.jsx]"]
  node_summary_page["Summary page<br/>[Summary.jsx]"]
  node_meeting_chat["Meeting chatbot<br/>[MeetingChatbot.jsx]"]
  node_global_chat["Global RAG chat"]
  node_share_page["Public share page<br/>[Share.jsx]"]
end

subgraph group_session["Meeting capture"]
  node_bot["Meet automation bot<br/>[meetBot.js]"]
  node_transcription["Live translation<br/>[meetBot.js]"]
  node_socket_server["Session event server<br/>[server.js]"]
end

subgraph group_intelligence["AI intelligence"]
  node_ai_engine["Meeting AI engine"]
end

subgraph group_backend["API and persistence"]
  node_api["REST API routes<br/>[api.js]"]
  node_auth_middleware["Token verification<br/>[auth.js]"]
  node_storage["Meeting storage and PDF<br/>[storageService.js]"]
end

subgraph group_observability["Observability"]
  node_logger["Structured logging<br/>[logger.js]"]
end

node_organizer(("Meeting organizer"))
node_meet["Google Meet"]
node_groq["Groq AI services"]
node_firestore[("Firestore meetings")]

node_organizer -->|"uses"| node_app
node_app -->|"provides auth"| node_auth
node_auth -->|"uses"| node_firebase_client
node_login -->|"signs in"| node_auth
node_dashboard -->|"renders"| node_bot_control
node_bot_control -->|"calls"| node_api_client
node_api_client -->|"gets token"| node_auth
node_api_client -->|"sends API requests"| node_api
node_api -->|"verifies requests"| node_auth_middleware
node_api -->|"starts and stops"| node_bot
node_meet -->|"provides meeting audio"| node_bot
node_bot -->|"streams audio"| node_transcription
node_transcription -->|"translates speech"| node_groq
node_transcription -->|"emits transcript events"| node_socket_server
node_session_page -->|"joins session"| node_socket_server
node_socket_server -->|"sends transcript events"| node_session_page
node_session_page -->|"renders"| node_live_transcript
node_bot -->|"provides transcript"| node_ai_engine
node_api -->|"requests summaries and chat"| node_ai_engine
node_ai_engine -->|"generates meeting intelligence"| node_groq
node_api -->|"loads and saves meetings"| node_storage
node_storage -->|"reads and writes"| node_firestore
node_api -->|"publishes session events"| node_socket_server
node_dashboard -->|"renders"| node_global_chat
node_global_chat -->|"uses"| node_api_client
node_api -->|"loads meetings for global chat"| node_firestore
node_summary_page -->|"renders"| node_meeting_chat
node_meeting_chat -->|"uses"| node_api_client
node_summary_page -->|"requests meeting data"| node_api
node_share_page -->|"loads public meeting"| node_api
node_api -->|"generates PDF download"| node_storage
node_api -->|"records request and route activity"| node_logger
node_api -->|"records meeting operations"| node_logger

click node_app "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/App.jsx"
click node_auth "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/context/AuthContext.jsx"
click node_firebase_client "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/firebase.js"
click node_login "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Login.jsx"
click node_dashboard "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Dashboard.jsx"
click node_bot_control "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/components/BotControl.jsx"
click node_api_client "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/hooks/useApi.js"
click node_session_page "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Session.jsx"
click node_live_transcript "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/components/LiveTranscript.jsx"
click node_summary_page "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Summary.jsx"
click node_meeting_chat "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/components/MeetingChatbot.jsx"
click node_global_chat "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/components/GlobalMeetingChatbot.jsx"
click node_share_page "https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Share.jsx"
click node_bot "https://github.com/saikiran9346/meet-scribe/blob/master/backend/bot/meetBot.js"
click node_transcription "https://github.com/saikiran9346/meet-scribe/blob/master/backend/bot/meetBot.js"
click node_socket_server "https://github.com/saikiran9346/meet-scribe/blob/master/backend/server.js"
click node_api "https://github.com/saikiran9346/meet-scribe/blob/master/backend/routes/api.js"
click node_auth_middleware "https://github.com/saikiran9346/meet-scribe/blob/master/backend/middleware/auth.js"
click node_ai_engine "https://github.com/saikiran9346/meet-scribe/blob/master/backend/services/langchainService.js"
click node_storage "https://github.com/saikiran9346/meet-scribe/blob/master/backend/services/storageService.js"
click node_logger "https://github.com/saikiran9346/meet-scribe/blob/master/backend/utils/logger.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_auth,node_firebase_client,node_login,node_dashboard,node_bot_control,node_api_client,node_session_page,node_live_transcript,node_summary_page,node_meeting_chat,node_global_chat,node_share_page toneBlue
class node_bot,node_transcription,node_socket_server,node_firestore toneAmber
class node_ai_engine toneMint
class node_api,node_auth_middleware,node_storage toneRose
class node_logger,node_organizer,node_meet,node_groq toneIndigo
```

## Components

### Web client

- [App routing](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth context](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Firebase client auth](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/firebase.js): `frontend/src/firebase.js`
- [Login page](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Login.jsx): `frontend/src/pages/Login.jsx`
- [Dashboard](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Bot controls](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/components/BotControl.jsx): `frontend/src/components/BotControl.jsx`
- [API client](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/hooks/useApi.js): `frontend/src/hooks/useApi.js`
- [Live session page](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Session.jsx): `frontend/src/pages/Session.jsx`
- [Transcript view](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/components/LiveTranscript.jsx): `frontend/src/components/LiveTranscript.jsx`
- [Summary page](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Summary.jsx): `frontend/src/pages/Summary.jsx`
- [Meeting chatbot](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/components/MeetingChatbot.jsx): `frontend/src/components/MeetingChatbot.jsx`
- [Global RAG chat](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/components/GlobalMeetingChatbot.jsx): `frontend/src/components/GlobalMeetingChatbot.jsx`
- [Public share page](https://github.com/saikiran9346/meet-scribe/blob/master/frontend/src/pages/Share.jsx): `frontend/src/pages/Share.jsx`

### Meeting capture

- [Meet automation bot](https://github.com/saikiran9346/meet-scribe/blob/master/backend/bot/meetBot.js): `backend/bot/meetBot.js`
- [Live translation](https://github.com/saikiran9346/meet-scribe/blob/master/backend/bot/meetBot.js): `backend/bot/meetBot.js`
- [Session event server](https://github.com/saikiran9346/meet-scribe/blob/master/backend/server.js): `backend/server.js`

### AI intelligence

- [Meeting AI engine](https://github.com/saikiran9346/meet-scribe/blob/master/backend/services/langchainService.js): `backend/services/langchainService.js`

### API and persistence

- [REST API routes](https://github.com/saikiran9346/meet-scribe/blob/master/backend/routes/api.js): `backend/routes/api.js`
- [Token verification](https://github.com/saikiran9346/meet-scribe/blob/master/backend/middleware/auth.js): `backend/middleware/auth.js`
- [Meeting storage and PDF](https://github.com/saikiran9346/meet-scribe/blob/master/backend/services/storageService.js): `backend/services/storageService.js`

### Observability

- [Structured logging](https://github.com/saikiran9346/meet-scribe/blob/master/backend/utils/logger.js): `backend/utils/logger.js`

### Other components

- **Meeting organizer**
- **Google Meet**
- **Groq AI services**
- **Firestore meetings**

## Connections

- Meeting organizer → App routing: uses (evidence: `frontend/src/App.jsx`)
- App routing → Auth context: provides auth (evidence: `frontend/src/App.jsx`)
- Auth context → Firebase client auth: uses (evidence: `frontend/src/context/AuthContext.jsx`)
- Login page → Auth context: signs in (evidence: `frontend/src/pages/Login.jsx`)
- Dashboard → Bot controls: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Bot controls → API client: calls (evidence: `frontend/src/components/BotControl.jsx`)
- API client → Auth context: gets token (evidence: `frontend/src/hooks/useApi.js`)
- API client → REST API routes: sends API requests (evidence: `frontend/src/hooks/useApi.js`)
- REST API routes → Token verification: verifies requests (evidence: `backend/routes/api.js`)
- REST API routes → Meet automation bot: starts and stops (evidence: `backend/routes/api.js`)
- Google Meet → Meet automation bot: provides meeting audio (evidence: `README.md`)
- Meet automation bot → Live translation: streams audio (evidence: `README.md`)
- Live translation → Groq AI services: translates speech (evidence: `README.md`)
- Live translation → Session event server: emits transcript events (evidence: `README.md`)
- Live session page → Session event server: joins session (evidence: `backend/server.js`)
- Session event server → Live session page: sends transcript events (evidence: `README.md`)
- Live session page → Transcript view: renders (evidence: `frontend/src/pages/Session.jsx`)
- Meet automation bot → Meeting AI engine: provides transcript (evidence: `README.md`)
- REST API routes → Meeting AI engine: requests summaries and chat (evidence: `backend/routes/api.js`)
- Meeting AI engine → Groq AI services: generates meeting intelligence (evidence: `README.md`)
- REST API routes → Meeting storage and PDF: loads and saves meetings (evidence: `backend/routes/api.js`)
- Meeting storage and PDF → Firestore meetings: reads and writes (evidence: `backend/services/storageService.js`)
- REST API routes → Session event server: publishes session events (evidence: `README.md`)
- Dashboard → Global RAG chat: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Global RAG chat → API client: uses (evidence: `frontend/src/components/GlobalMeetingChatbot.jsx`)
- REST API routes → Firestore meetings: loads meetings for global chat (evidence: `README.md`)
- Summary page → Meeting chatbot: renders (evidence: `frontend/src/pages/Summary.jsx`)
- Meeting chatbot → API client: uses (evidence: `frontend/src/components/MeetingChatbot.jsx`)
- Summary page → REST API routes: requests meeting data (evidence: `frontend/src/pages/Summary.jsx`)
- Public share page → REST API routes: loads public meeting
- REST API routes → Meeting storage and PDF: generates PDF download (evidence: `backend/routes/api.js`)
- REST API routes → Structured logging: records request and route activity (evidence: `backend/app.js`)
- REST API routes → Structured logging: records meeting operations (evidence: `backend/routes/api.js`)
