# monikasomalaraju/meeting-avoider-ai architecture

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

- Interactive diagram: https://gitdiagram.com/monikasomalaraju/meeting-avoider-ai
- Repository: https://github.com/monikasomalaraju/meeting-avoider-ai

## Overview

Meeting Avoider AI combines account and meeting management with transcript ingestion, AI-generated meeting knowledge, and reminders. Users schedule and review meetings in the web app, or send transcript text/audio from the Chrome extension; the backend stores transcripts, transcribes audio when needed, generates structured summaries, and provides per-meeting chat and history. Email reminders run in the backend, while browser reminders are handled by the web app and extension. The README documents additional dashboard, calendar, profile, and report capabilities; their detailed wiring is not established by the sampled source.

Main entry points: [`backend/app/database.py`](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/database.py) (SQLite database), [`backend/app/main.py`](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/main.py) (FastAPI app), [`meeting-avoider-extension/popup.js`](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/meeting-avoider-extension/popup.js) (Extension popup), [`backend/app/routes/summarization.py`](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/routes/summarization.py) (Transcript API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web app"]
  node_webpages["App pages"]
  node_webscripts["Web interactions"]
  node_browsernotify["Browser reminders"]
end

subgraph group_api["Backend API"]
  node_app["FastAPI app<br/>[main.py]"]
  node_auth["Signup and login<br/>[auth.py]"]
  node_meetingroutes["Meeting management<br/>[meeting.py]"]
  node_userroutes["Profile and stats<br/>[user.py]"]
  node_meetingmodel["Meeting records<br/>[meeting.py]"]
  node_usermodel["User records<br/>[user.py]"]
  node_database[("SQLite database<br/>[database.py]")]
end

subgraph group_knowledge["Transcript knowledge"]
  node_sumroutes["Transcript API<br/>[summarization.py]"]
  node_aiservice["AI processing<br/>[ai_summary.py]"]
  node_transcripts["Transcripts<br/>[transcript.py]"]
  node_summaries["Structured summaries<br/>[summary.py]"]
end

subgraph group_reminders["Reminders"]
  node_scheduler["Email reminder scheduler"]
  node_emailservice["Email delivery<br/>[email_service.py]"]
end

subgraph group_extension["Chrome extension"]
  node_extensionpopup["Extension popup<br/>[popup.js]"]
  node_extensionbackground["Reminder worker<br/>[background.js]"]
end

node_visitor(("Visitor / user"))
node_smtp(("SMTP service"))
node_groq(("Groq AI API"))
node_activebrowser(("Active browser tab"))

node_visitor -->|"opens pages"| node_webpages
node_webpages -->|"loads interactions"| node_webscripts
node_webscripts -->|"calls API"| node_app
node_app -->|"dispatches auth"| node_auth
node_app -->|"dispatches meetings"| node_meetingroutes
node_app -->|"dispatches profiles"| node_userroutes
node_app -->|"dispatches summaries"| node_sumroutes
node_auth -->|"reads/writes users"| node_database
node_meetingroutes -->|"reads/writes meetings"| node_database
node_userroutes -->|"reads/writes accounts"| node_database
node_sumroutes -->|"requests AI work"| node_aiservice
node_sumroutes -->|"reads/writes records"| node_database
node_sumroutes -->|"links meetings"| node_meetingmodel
node_aiservice -.->|"transcribes / generates"| node_groq
node_database -->|"stores"| node_transcripts
node_database -->|"stores"| node_summaries
node_database -->|"stores"| node_meetingmodel
node_database -->|"stores"| node_usermodel
node_app -->|"starts loop"| node_scheduler
node_scheduler -->|"checks meetings"| node_database
node_scheduler -->|"sends reminder"| node_emailservice
node_emailservice -.->|"sends email"| node_smtp
node_webscripts -->|"requests reminders"| node_browsernotify
node_browsernotify -->|"polls meetings"| node_meetingroutes
node_visitor -->|"uses extension"| node_extensionpopup
node_extensionpopup -->|"logs in"| node_auth
node_extensionpopup -->|"captures transcript"| node_activebrowser
node_extensionpopup -->|"uploads transcript/audio"| node_sumroutes
node_extensionpopup -->|"syncs reminders"| node_extensionbackground
node_extensionbackground -->|"fetches meetings"| node_meetingroutes
node_extensionbackground -->|"opens meeting link"| node_activebrowser

click node_webpages "https://github.com/monikasomalaraju/meeting-avoider-ai/tree/main/frontend/pages"
click node_webscripts "https://github.com/monikasomalaraju/meeting-avoider-ai/tree/main/frontend/assets/js"
click node_browsernotify "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/frontend/assets/js/browser-notifications.js"
click node_app "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/main.py"
click node_auth "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/routes/auth.py"
click node_meetingroutes "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/routes/meeting.py"
click node_userroutes "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/routes/user.py"
click node_sumroutes "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/routes/summarization.py"
click node_aiservice "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/services/ai_summary.py"
click node_transcripts "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/models/transcript.py"
click node_summaries "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/models/summary.py"
click node_meetingmodel "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/models/meeting.py"
click node_usermodel "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/models/user.py"
click node_database "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/database.py"
click node_scheduler "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/services/reminder_scheduler.py"
click node_emailservice "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/services/email_service.py"
click node_extensionpopup "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/meeting-avoider-extension/popup.js"
click node_extensionbackground "https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/meeting-avoider-extension/background.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_webpages,node_webscripts,node_browsernotify,node_visitor,node_activebrowser toneBlue
class node_app,node_auth,node_meetingroutes,node_userroutes,node_meetingmodel,node_usermodel,node_database toneAmber
class node_sumroutes,node_aiservice,node_transcripts,node_summaries,node_groq toneMint
class node_scheduler,node_emailservice toneRose
class node_extensionpopup,node_extensionbackground,node_smtp toneIndigo
```

## Components

### Web app

- [App pages](https://github.com/monikasomalaraju/meeting-avoider-ai/tree/main/frontend/pages): `frontend/pages`
- [Web interactions](https://github.com/monikasomalaraju/meeting-avoider-ai/tree/main/frontend/assets/js): `frontend/assets/js`
- [Browser reminders](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/frontend/assets/js/browser-notifications.js): `frontend/assets/js/browser-notifications.js`

### Backend API

- [FastAPI app](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/main.py): `backend/app/main.py`
- [Signup and login](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/routes/auth.py): `backend/app/routes/auth.py`
- [Meeting management](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/routes/meeting.py): `backend/app/routes/meeting.py`
- [Profile and stats](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/routes/user.py): `backend/app/routes/user.py`
- [Meeting records](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/models/meeting.py): `backend/app/models/meeting.py`
- [User records](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/models/user.py): `backend/app/models/user.py`
- [SQLite database](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/database.py): `backend/app/database.py`

### Transcript knowledge

- [Transcript API](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/routes/summarization.py): `backend/app/routes/summarization.py`
- [AI processing](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/services/ai_summary.py): `backend/app/services/ai_summary.py`
- [Transcripts](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/models/transcript.py): `backend/app/models/transcript.py`
- [Structured summaries](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/models/summary.py): `backend/app/models/summary.py`

### Reminders

- [Email reminder scheduler](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/services/reminder_scheduler.py): `backend/app/services/reminder_scheduler.py`
- [Email delivery](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/backend/app/services/email_service.py): `backend/app/services/email_service.py`

### Chrome extension

- [Extension popup](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/meeting-avoider-extension/popup.js): `meeting-avoider-extension/popup.js`
- [Reminder worker](https://github.com/monikasomalaraju/meeting-avoider-ai/blob/main/meeting-avoider-extension/background.js): `meeting-avoider-extension/background.js`

### Other components

- **Visitor / user**
- **SMTP service**
- **Groq AI API**
- **Active browser tab**

## Connections

- Visitor / user → App pages: opens pages
- App pages → Web interactions: loads interactions
- Web interactions → FastAPI app: calls API
- FastAPI app → Signup and login: dispatches auth
- FastAPI app → Meeting management: dispatches meetings
- FastAPI app → Profile and stats: dispatches profiles
- FastAPI app → Transcript API: dispatches summaries
- Signup and login → SQLite database: reads/writes users
- Meeting management → SQLite database: reads/writes meetings
- Profile and stats → SQLite database: reads/writes accounts
- Transcript API → AI processing: requests AI work
- Transcript API → SQLite database: reads/writes records
- Transcript API → Meeting records: links meetings
- AI processing → Groq AI API: transcribes / generates
- SQLite database → Transcripts: stores
- SQLite database → Structured summaries: stores
- SQLite database → Meeting records: stores
- SQLite database → User records: stores
- FastAPI app → Email reminder scheduler: starts loop
- Email reminder scheduler → SQLite database: checks meetings
- Email reminder scheduler → Email delivery: sends reminder
- Email delivery → SMTP service: sends email
- Web interactions → Browser reminders: requests reminders
- Browser reminders → Meeting management: polls meetings
- Visitor / user → Extension popup: uses extension
- Extension popup → Signup and login: logs in
- Extension popup → Active browser tab: captures transcript
- Extension popup → Transcript API: uploads transcript/audio
- Extension popup → Reminder worker: syncs reminders
- Reminder worker → Meeting management: fetches meetings
- Reminder worker → Active browser tab: opens meeting link
