# annaangel040/breadcrumbs- architecture

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

- Interactive diagram: https://gitdiagram.com/annaangel040/breadcrumbs-
- Repository: https://github.com/annaangel040/breadcrumbs-

## Overview

Breadcrumbs is a mental-health check-in and clinical triage product with a patient-facing sanctuary and a therapist workspace. The main workflow runs from patient voice or text reflection through API ingestion, local transcription and stress/safety analysis, then structured persistence. Patient views keep clinical scores hidden; clinician-facing analytics add time-decay, stressor threads, trends, severity, and reports. Matching and account/therapist workflows are additional product branches. README documents several capabilities whose source was not sampled, so those components are included only where the tree supports their paths; uncertain wiring is omitted.

Main entry points: [`backend/app/main.py`](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/main.py) (FastAPI Routes), [`backend/app/pipeline.py`](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/pipeline.py) (Entry Pipeline), [`frontend/src/services/api.js`](https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/services/api.js) (API Client), [`frontend/src/App.jsx`](https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/App.jsx) (Check-in App)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_patient_ui["Patient Experience"]
  node_app["Check-in App<br/>[App.jsx]"]
  node_auth_ui["Account Access<br/>[AuthModal.jsx]"]
  node_patient_views["Patient Views<br/>[WelcomePage.jsx]"]
  node_care_ui["Care Finder<br/>[FindCarePage.jsx]"]
  node_therapist_ui["Therapist Portal"]
  node_report_ui["Report Viewer<br/>[ReportModal.jsx]"]
end

subgraph group_backend_api["API and Ingestion"]
  node_api_client["API Client<br/>[api.js]"]
  node_api["FastAPI Routes<br/>[main.py]"]
  node_pipeline["Entry Pipeline<br/>[pipeline.py]"]
end

subgraph group_analysis["Reflection Analysis"]
  node_transcription["Voice Transcription<br/>[transcription.py]"]
  node_stress_model["Stress Classifier<br/>[model_client.py]"]
  node_categorization["Topic Categorization<br/>[categorize.py]"]
  node_crisis_detection["Crisis Detection<br/>[risk_keywords.py]"]
  node_sentiment["Intensity Fusion"]
end

subgraph group_clinical["Clinical Workspace"]
  node_reporting["Clinical Reports<br/>[report.py]"]
  node_threading["Stressor Threads<br/>[threading_logic.py]"]
  node_similarity["Semantic Similarity"]
  node_trends["Trend Analysis<br/>[trends.py]"]
  node_severity["Severity Triage<br/>[severity.py]"]
  node_matching["Therapist Matching<br/>[matching.py]"]
  node_helplines["Crisis Resources"]
end

subgraph group_records["Accounts and Records"]
  node_database[("SQLite Records<br/>[database.py]")]
  node_accounts[("Account and Care Records<br/>[database.py]")]
end

node_patient(("Patient"))
node_therapist(("Therapist"))

node_patient -->|"reflects"| node_app
node_app -->|"submits check-in"| node_api_client
node_app -->|"checks status"| node_api_client
node_api_client -->|"calls endpoints"| node_api
node_api -->|"processes entry"| node_pipeline
node_pipeline -->|"transcribes audio"| node_transcription
node_pipeline -->|"scores text"| node_stress_model
node_pipeline -->|"categorizes text"| node_categorization
node_pipeline -->|"checks risk"| node_crisis_detection
node_pipeline -.->|"optionally fuses"| node_sentiment
node_pipeline -->|"inserts metrics"| node_database
node_api -->|"reads and updates"| node_database
node_api -->|"manages accounts"| node_accounts
node_auth_ui -->|"signs in"| node_api_client
node_app -->|"shows wellness"| node_patient_views
node_patient_views -->|"requests overview"| node_api_client
node_api -->|"builds views"| node_reporting
node_reporting -->|"reads entries"| node_database
node_api -->|"builds threads"| node_threading
node_threading -->|"analyzes thread"| node_trends
node_threading -->|"assigns triage"| node_severity
node_threading -.->|"optionally clusters"| node_similarity
node_api -->|"computes trend"| node_trends
node_api -->|"computes severity"| node_severity
node_api -->|"matches practitioners"| node_matching
node_matching -->|"uses care profiles"| node_accounts
node_therapist -->|"reviews caseload"| node_therapist_ui
node_therapist_ui -->|"requests clinical data"| node_api_client
node_report_ui -->|"requests report"| node_api_client
node_care_ui -->|"requests matches"| node_api_client
node_api -->|"returns crisis resources"| node_helplines
node_patient_views -->|"surfaces safety options"| node_helplines

click node_app "https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/App.jsx"
click node_auth_ui "https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/AuthModal.jsx"
click node_patient_views "https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/WelcomePage.jsx"
click node_care_ui "https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/FindCarePage.jsx"
click node_therapist_ui "https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/TherapistPortalModal.jsx"
click node_report_ui "https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/ReportModal.jsx"
click node_api_client "https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/services/api.js"
click node_api "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/main.py"
click node_pipeline "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/pipeline.py"
click node_transcription "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/transcription.py"
click node_stress_model "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/model_client.py"
click node_categorization "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/categorize.py"
click node_crisis_detection "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/risk_keywords.py"
click node_sentiment "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/sentiment_intensity.py"
click node_database "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/database.py"
click node_accounts "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/database.py"
click node_reporting "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/report.py"
click node_threading "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/threading_logic.py"
click node_similarity "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/stressor_similarity.py"
click node_trends "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/trends.py"
click node_severity "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/severity.py"
click node_matching "https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/matching.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_auth_ui,node_patient_views,node_care_ui,node_therapist_ui,node_report_ui toneBlue
class node_api_client,node_api,node_pipeline toneAmber
class node_transcription,node_stress_model,node_categorization,node_crisis_detection,node_sentiment,node_therapist toneMint
class node_reporting,node_threading,node_similarity,node_trends,node_severity,node_matching,node_helplines toneRose
class node_database,node_accounts,node_patient toneIndigo
```

## Components

### Patient Experience

- [Check-in App](https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Account Access](https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/AuthModal.jsx): `frontend/src/components/AuthModal.jsx`
- [Patient Views](https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/WelcomePage.jsx): `frontend/src/components/WelcomePage.jsx`
- [Care Finder](https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/FindCarePage.jsx): `frontend/src/components/FindCarePage.jsx`
- [Therapist Portal](https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/TherapistPortalModal.jsx): `frontend/src/components/TherapistPortalModal.jsx`
- [Report Viewer](https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/components/ReportModal.jsx): `frontend/src/components/ReportModal.jsx`

### API and Ingestion

- [API Client](https://github.com/annaangel040/breadcrumbs-/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [FastAPI Routes](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/main.py): `backend/app/main.py`
- [Entry Pipeline](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/pipeline.py): `backend/app/pipeline.py`

### Reflection Analysis

- [Voice Transcription](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/transcription.py): `backend/app/transcription.py`
- [Stress Classifier](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/model_client.py): `backend/app/model_client.py`
- [Topic Categorization](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/categorize.py): `backend/app/categorize.py`
- [Crisis Detection](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/risk_keywords.py): `backend/app/risk_keywords.py`
- [Intensity Fusion](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/sentiment_intensity.py): `backend/app/sentiment_intensity.py`

### Clinical Workspace

- [Clinical Reports](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/report.py): `backend/app/report.py`
- [Stressor Threads](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/threading_logic.py): `backend/app/threading_logic.py`
- [Semantic Similarity](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/stressor_similarity.py): `backend/app/stressor_similarity.py`
- [Trend Analysis](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/trends.py): `backend/app/trends.py`
- [Severity Triage](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/severity.py): `backend/app/severity.py`
- [Therapist Matching](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/matching.py): `backend/app/matching.py`
- **Crisis Resources**

### Accounts and Records

- [SQLite Records](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/database.py): `backend/app/database.py`
- [Account and Care Records](https://github.com/annaangel040/breadcrumbs-/blob/main/backend/app/database.py): `backend/app/database.py`

### Other components

- **Patient**
- **Therapist**

## Connections

- Patient → Check-in App: reflects
- Check-in App → API Client: submits check-in
- Check-in App → API Client: checks status
- API Client → FastAPI Routes: calls endpoints
- FastAPI Routes → Entry Pipeline: processes entry
- Entry Pipeline → Voice Transcription: transcribes audio
- Entry Pipeline → Stress Classifier: scores text
- Entry Pipeline → Topic Categorization: categorizes text
- Entry Pipeline → Crisis Detection: checks risk
- Entry Pipeline → Intensity Fusion: optionally fuses
- Entry Pipeline → SQLite Records: inserts metrics
- FastAPI Routes → SQLite Records: reads and updates
- FastAPI Routes → Account and Care Records: manages accounts
- Account Access → API Client: signs in
- Check-in App → Patient Views: shows wellness
- Patient Views → API Client: requests overview
- FastAPI Routes → Clinical Reports: builds views
- Clinical Reports → SQLite Records: reads entries
- FastAPI Routes → Stressor Threads: builds threads
- Stressor Threads → Trend Analysis: analyzes thread
- Stressor Threads → Severity Triage: assigns triage
- Stressor Threads → Semantic Similarity: optionally clusters
- FastAPI Routes → Trend Analysis: computes trend
- FastAPI Routes → Severity Triage: computes severity
- FastAPI Routes → Therapist Matching: matches practitioners
- Therapist Matching → Account and Care Records: uses care profiles
- Therapist → Therapist Portal: reviews caseload
- Therapist Portal → API Client: requests clinical data
- Report Viewer → API Client: requests report
- Care Finder → API Client: requests matches
- FastAPI Routes → Crisis Resources: returns crisis resources
- Patient Views → Crisis Resources: surfaces safety options
