# magnusinst84-sudo/empath-hackathon architecture

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

- Interactive diagram: https://gitdiagram.com/magnusinst84-sudo/empath-hackathon
- Repository: https://github.com/magnusinst84-sudo/empath-hackathon

## Overview

Empath.ai is a mental-wellness application combining empathetic chat, mood tracking and analytics, account/settings management, and self-guided wellness activities. The principal workflow is a user entering a chat message, the Flask backend analyzing its emotion and conversation context, and the chatbot returning a safety-aware response; the backend also persists conversations and mood data. The graph includes documented capabilities whose source was not sampled, but omits uncertain connections among them. Backend excerpts are partial, so some endpoint wiring is necessarily left unspecified.

Main entry points: [`frontend/src/App.tsx`](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/App.tsx) (App shell), [`backend/app.py`](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/backend/app.py) (Flask API), [`frontend/src/lib/fetchWrapper.ts`](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/lib/fetchWrapper.ts) (HTTP wrapper), [`backend/database.py`](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/backend/database.py) (Persistence operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web experience"]
  node_app["App shell<br/>[App.tsx]"]
  node_authui["Login and registration<br/>[Login.tsx]"]
  node_chatui["Chat interface<br/>[ChatInterface.tsx]"]
  node_moodui["Mood dashboard<br/>[MoodDashboard.tsx]"]
  node_historyui["History viewer<br/>[HistoryViewer.tsx]"]
  node_checkin["Daily check-in<br/>[DailyCheckIn.tsx]"]
  node_quickmood["Quick mood log<br/>[QuickMoodLog.tsx]"]
  node_authctx["Authentication state<br/>[AuthContext.tsx]"]
  node_settingsctx["Settings state"]
  node_authapi["Auth API client<br/>[auth.ts]"]
  node_moodapi["Mood API client<br/>[moodApi.ts]"]
  node_settingsapi["Settings API client<br/>[settingsApi.ts]"]
  node_fetch["HTTP wrapper<br/>[fetchWrapper.ts]"]
end

subgraph group_wellness["Wellness activities"]
  node_onboarding["Onboarding<br/>[Onboarding.tsx]"]
  node_selfcare["Self-care activities<br/>[Meditation.tsx]"]
  node_sounds["Calming sounds<br/>[CalmingSounds.tsx]"]
  node_gratitude["Gratitude practice"]
  node_coping["Coping strategies"]
  node_journal["Journaling<br/>[Journaling.tsx]"]
  node_sleep["Sleep wellness<br/>[SleepWellness.tsx]"]
  node_eating["Eating habits<br/>[EatingHabits.tsx]"]
  node_break["Mindful break<br/>[MindfulBreak.tsx]"]
end

subgraph group_server["Application backend"]
  node_backend["Flask API<br/>[app.py]"]
  node_dbcode["Persistence operations<br/>[database.py]"]
  node_db[("SQLite data")]
end

subgraph group_intelligence["Conversation intelligence"]
  node_analyzer["Emotion analyzer"]
  node_chatbot["Response and safety<br/>[chatbot.py]"]
  node_selector["Response selector"]
end

node_person(("User"))
node_external{{"External sentiment service"}}

node_person -->|"uses"| node_app
node_app -->|"shows"| node_authui
node_app -->|"shows"| node_chatui
node_app -->|"shows"| node_moodui
node_app -->|"shows"| node_historyui
node_app -->|"shows"| node_checkin
node_app -->|"shows"| node_quickmood
node_app -->|"shows"| node_onboarding
node_app -->|"shows"| node_selfcare
node_app -->|"shows"| node_sounds
node_app -->|"shows"| node_gratitude
node_app -->|"shows"| node_break
node_person -->|"uses"| node_coping
node_person -->|"uses"| node_journal
node_person -->|"uses"| node_sleep
node_person -->|"uses"| node_eating
node_authui -->|"requests auth"| node_authapi
node_authctx -->|"checks session"| node_authapi
node_authctx -->|"loads settings"| node_settingsapi
node_settingsctx -->|"syncs settings"| node_settingsapi
node_authapi -->|"sends requests"| node_fetch
node_moodapi -->|"sends requests"| node_fetch
node_settingsapi -->|"sends requests"| node_fetch
node_fetch -->|"HTTP requests"| node_backend
node_chatui -->|"submits chat"| node_backend
node_backend -->|"reads and writes"| node_dbcode
node_dbcode -->|"queries"| node_db
node_backend -->|"analyzes emotion"| node_analyzer
node_backend -->|"generates response"| node_chatbot
node_backend -->|"loads chat history"| node_dbcode
node_backend -.->|"tries sentiment analysis"| node_external
node_backend -->|"stores mood data"| node_dbcode

click node_app "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/App.tsx"
click node_authui "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/Login.tsx"
click node_chatui "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/ChatInterface.tsx"
click node_moodui "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/MoodDashboard.tsx"
click node_historyui "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/HistoryViewer.tsx"
click node_checkin "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/components/DailyCheckIn.tsx"
click node_quickmood "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/components/QuickMoodLog.tsx"
click node_authctx "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/context/AuthContext.tsx"
click node_settingsctx "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/context/SettingsContext.tsx"
click node_authapi "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/api-int/auth.ts"
click node_moodapi "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/api-int/moodApi.ts"
click node_settingsapi "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/api-int/settingsApi.ts"
click node_fetch "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/lib/fetchWrapper.ts"
click node_onboarding "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/Onboarding.tsx"
click node_selfcare "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/Meditation.tsx"
click node_sounds "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/CalmingSounds.tsx"
click node_gratitude "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/GratitudePractice.tsx"
click node_coping "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/CopingStrategies.tsx"
click node_journal "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/Journaling.tsx"
click node_sleep "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/SleepWellness.tsx"
click node_eating "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/EatingHabits.tsx"
click node_break "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/MindfulBreak.tsx"
click node_backend "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/backend/app.py"
click node_dbcode "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/backend/database.py"
click node_analyzer "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/mlmodel/emotion_analyzer.py"
click node_chatbot "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/mlmodel/chatbot.py"
click node_selector "https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/mlmodel/ml_response_selector.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_app,node_authui,node_chatui,node_moodui,node_historyui,node_checkin,node_quickmood,node_authctx,node_settingsctx,node_authapi,node_moodapi,node_settingsapi,node_fetch,node_person toneBlue
class node_onboarding,node_selfcare,node_sounds,node_gratitude,node_coping,node_journal,node_sleep,node_eating,node_break toneAmber
class node_backend,node_dbcode,node_db toneMint
class node_analyzer,node_chatbot,node_selector toneRose
class node_external toneIndigo
```

## Components

### Web experience

- [App shell](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Login and registration](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/Login.tsx): `frontend/src/pages/Login.tsx`
- [Chat interface](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/ChatInterface.tsx): `frontend/src/pages/ChatInterface.tsx`
- [Mood dashboard](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/MoodDashboard.tsx): `frontend/src/pages/MoodDashboard.tsx`
- [History viewer](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/HistoryViewer.tsx): `frontend/src/pages/HistoryViewer.tsx`
- [Daily check-in](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/components/DailyCheckIn.tsx): `frontend/src/components/DailyCheckIn.tsx`
- [Quick mood log](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/components/QuickMoodLog.tsx): `frontend/src/components/QuickMoodLog.tsx`
- [Authentication state](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/context/AuthContext.tsx): `frontend/src/context/AuthContext.tsx`
- [Settings state](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/context/SettingsContext.tsx): `frontend/src/context/SettingsContext.tsx`
- [Auth API client](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/api-int/auth.ts): `frontend/src/api-int/auth.ts`
- [Mood API client](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/api-int/moodApi.ts): `frontend/src/api-int/moodApi.ts`
- [Settings API client](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/api-int/settingsApi.ts): `frontend/src/api-int/settingsApi.ts`
- [HTTP wrapper](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/lib/fetchWrapper.ts): `frontend/src/lib/fetchWrapper.ts`

### Wellness activities

- [Onboarding](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/Onboarding.tsx): `frontend/src/pages/Onboarding.tsx`
- [Self-care activities](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/Meditation.tsx): `frontend/src/pages/Meditation.tsx`
- [Calming sounds](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/CalmingSounds.tsx): `frontend/src/pages/CalmingSounds.tsx`
- [Gratitude practice](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/GratitudePractice.tsx): `frontend/src/pages/GratitudePractice.tsx`
- [Coping strategies](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/CopingStrategies.tsx): `frontend/src/pages/CopingStrategies.tsx`
- [Journaling](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/Journaling.tsx): `frontend/src/pages/Journaling.tsx`
- [Sleep wellness](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/SleepWellness.tsx): `frontend/src/pages/SleepWellness.tsx`
- [Eating habits](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/EatingHabits.tsx): `frontend/src/pages/EatingHabits.tsx`
- [Mindful break](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/frontend/src/pages/MindfulBreak.tsx): `frontend/src/pages/MindfulBreak.tsx`

### Application backend

- [Flask API](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/backend/app.py): `backend/app.py`
- [Persistence operations](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/backend/database.py): `backend/database.py`
- **SQLite data**

### Conversation intelligence

- [Emotion analyzer](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/mlmodel/emotion_analyzer.py): `mlmodel/emotion_analyzer.py`
- [Response and safety](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/mlmodel/chatbot.py): `mlmodel/chatbot.py`
- [Response selector](https://github.com/magnusinst84-sudo/empath-hackathon/blob/main/mlmodel/ml_response_selector.py): `mlmodel/ml_response_selector.py`

### Other components

- **User**
- **External sentiment service**

## Connections

- User → App shell: uses
- App shell → Login and registration: shows
- App shell → Chat interface: shows
- App shell → Mood dashboard: shows
- App shell → History viewer: shows
- App shell → Daily check-in: shows
- App shell → Quick mood log: shows
- App shell → Onboarding: shows
- App shell → Self-care activities: shows
- App shell → Calming sounds: shows
- App shell → Gratitude practice: shows
- App shell → Mindful break: shows
- User → Coping strategies: uses
- User → Journaling: uses
- User → Sleep wellness: uses
- User → Eating habits: uses
- Login and registration → Auth API client: requests auth
- Authentication state → Auth API client: checks session
- Authentication state → Settings API client: loads settings
- Settings state → Settings API client: syncs settings
- Auth API client → HTTP wrapper: sends requests
- Mood API client → HTTP wrapper: sends requests
- Settings API client → HTTP wrapper: sends requests
- HTTP wrapper → Flask API: HTTP requests
- Chat interface → Flask API: submits chat
- Flask API → Persistence operations: reads and writes
- Persistence operations → SQLite data: queries
- Flask API → Emotion analyzer: analyzes emotion
- Flask API → Response and safety: generates response
- Flask API → Persistence operations: loads chat history
- Flask API → External sentiment service: tries sentiment analysis
- Flask API → Persistence operations: stores mood data
