# shlavin/project architecture

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

- Interactive diagram: https://gitdiagram.com/shlavin/project
- Repository: https://github.com/shlavin/project

## Overview

This is a student-focused mental-health support web app: users register or sign in, chat with Rafiki, and can revisit conversations and mood information; the product also offers anxiety resources and mood-boosting content. React routes/pages call a Django API, while the backend exposes authentication, chat, conversation, and mood endpoints. The sampled pipeline detects mood, handles crisis phrases, builds replies, and persists chat messages. The README documents MySQL and transformer-based emotion classification; the endpoint-to-view implementation was not sampled, so uncertain internal dispatch is not expanded here.

Main entry points: [`chatbot-frontend/src/App.js`](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/App.js) (React routes), [`chatbot-frontend/src/pages/moodhistory.js`](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/moodhistory.js) (Mood history), [`chatbot-frontend/src/services/api.js`](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/services/api.js) (API client), [`chatbot/pipeline.py`](https://github.com/shlavin/project/blob/main/chatbot/pipeline.py) (Chat response pipeline)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Student experience"]
  node_app["React routes<br/>[App.js]"]
  node_chatui["Rafiki chat<br/>[chatbot.js]"]
  node_authui["Account pages<br/>[login.js]"]
  node_historyui["Conversation history<br/>[Conversations.js]"]
  node_clientapi["API client<br/>[api.js]"]
end

subgraph group_backend["Django API"]
  node_routes["API routes<br/>[urls.py]"]
  node_views["Request handlers<br/>[views.py]"]
  node_serializers["API serializers<br/>[serializers.py]"]
end

subgraph group_support["Support and insights"]
  node_supportui["Wellness pages"]
  node_moodui["Mood history<br/>[moodhistory.js]"]
  node_boostui["Mood boosters<br/>[moodBoosters.js]"]
  node_charts["Mood visualizations<br/>[MoodBarChart.js]"]
  node_streak["Mood streaks"]
end

subgraph group_ai["Chat intelligence"]
  node_pipeline["Chat response pipeline<br/>[pipeline.py]"]
  node_emotion["Emotion classification<br/>[pipeline.py]"]
  node_llm["Reply generation service<br/>[pipeline.py]"]
end

subgraph group_state["Persistence and services"]
  node_models["User and messages<br/>[models.py]"]
  node_mysql[("MySQL database")]
  node_together["Together API"]
end

node_student(("Student"))

node_student -->|"uses"| node_app
node_app -->|"routes to"| node_chatui
node_app -->|"routes to"| node_authui
node_app -->|"routes to"| node_historyui
node_app -->|"routes to"| node_supportui
node_app -->|"routes to"| node_moodui
node_app -->|"routes to"| node_boostui
node_chatui -->|"posts message"| node_clientapi
node_historyui -->|"fetches history"| node_clientapi
node_moodui -->|"requests moods"| node_clientapi
node_clientapi -->|"sends HTTP"| node_routes
node_routes -->|"dispatches"| node_views
node_routes -->|"serves auth and mood"| node_views
node_pipeline -->|"classifies mood"| node_emotion
node_pipeline -->|"requests reply"| node_llm
node_llm -.->|"calls"| node_together
node_pipeline -->|"reads and writes messages"| node_models
node_models -->|"stores records"| node_mysql
node_moodui -->|"renders"| node_charts
node_moodui -->|"renders"| node_streak

click node_app "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/App.js"
click node_chatui "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/components/chatbot.js"
click node_authui "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/login.js"
click node_historyui "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/Conversations.js"
click node_supportui "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/anxiety-resources.js"
click node_moodui "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/moodhistory.js"
click node_boostui "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/moodBoosters.js"
click node_charts "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/components/MoodBarChart.js"
click node_streak "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/components/MoodStreakTracker.js"
click node_clientapi "https://github.com/shlavin/project/blob/main/chatbot-frontend/src/services/api.js"
click node_routes "https://github.com/shlavin/project/blob/main/chatbot_project/urls.py"
click node_views "https://github.com/shlavin/project/blob/main/chatbot/views.py"
click node_serializers "https://github.com/shlavin/project/blob/main/chatbot/serializers.py"
click node_pipeline "https://github.com/shlavin/project/blob/main/chatbot/pipeline.py"
click node_emotion "https://github.com/shlavin/project/blob/main/chatbot/pipeline.py"
click node_llm "https://github.com/shlavin/project/blob/main/chatbot/pipeline.py"
click node_models "https://github.com/shlavin/project/blob/main/chatbot/models.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_chatui,node_authui,node_historyui,node_clientapi toneBlue
class node_routes,node_views,node_serializers toneAmber
class node_supportui,node_moodui,node_boostui,node_charts,node_streak toneMint
class node_pipeline,node_emotion,node_llm toneRose
class node_models,node_mysql,node_together,node_student toneIndigo
```

## Components

### Student experience

- [React routes](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/App.js): `chatbot-frontend/src/App.js`
- [Rafiki chat](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/components/chatbot.js): `chatbot-frontend/src/components/chatbot.js`
- [Account pages](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/login.js): `chatbot-frontend/src/pages/login.js`
- [Conversation history](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/Conversations.js): `chatbot-frontend/src/pages/Conversations.js`
- [API client](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/services/api.js): `chatbot-frontend/src/services/api.js`

### Django API

- [API routes](https://github.com/shlavin/project/blob/main/chatbot_project/urls.py): `chatbot_project/urls.py`
- [Request handlers](https://github.com/shlavin/project/blob/main/chatbot/views.py): `chatbot/views.py`
- [API serializers](https://github.com/shlavin/project/blob/main/chatbot/serializers.py): `chatbot/serializers.py`

### Support and insights

- [Wellness pages](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/anxiety-resources.js): `chatbot-frontend/src/pages/anxiety-resources.js`
- [Mood history](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/moodhistory.js): `chatbot-frontend/src/pages/moodhistory.js`
- [Mood boosters](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/pages/moodBoosters.js): `chatbot-frontend/src/pages/moodBoosters.js`
- [Mood visualizations](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/components/MoodBarChart.js): `chatbot-frontend/src/components/MoodBarChart.js`
- [Mood streaks](https://github.com/shlavin/project/blob/main/chatbot-frontend/src/components/MoodStreakTracker.js): `chatbot-frontend/src/components/MoodStreakTracker.js`

### Chat intelligence

- [Chat response pipeline](https://github.com/shlavin/project/blob/main/chatbot/pipeline.py): `chatbot/pipeline.py`
- [Emotion classification](https://github.com/shlavin/project/blob/main/chatbot/pipeline.py): `chatbot/pipeline.py`
- [Reply generation service](https://github.com/shlavin/project/blob/main/chatbot/pipeline.py): `chatbot/pipeline.py`

### Persistence and services

- [User and messages](https://github.com/shlavin/project/blob/main/chatbot/models.py): `chatbot/models.py`
- **MySQL database**
- **Together API**

### Other components

- **Student**

## Connections

- Student → React routes: uses
- React routes → Rafiki chat: routes to
- React routes → Account pages: routes to
- React routes → Conversation history: routes to
- React routes → Wellness pages: routes to
- React routes → Mood history: routes to
- React routes → Mood boosters: routes to
- Rafiki chat → API client: posts message
- Conversation history → API client: fetches history
- Mood history → API client: requests moods
- API client → API routes: sends HTTP
- API routes → Request handlers: dispatches
- API routes → Request handlers: serves auth and mood
- Chat response pipeline → Emotion classification: classifies mood
- Chat response pipeline → Reply generation service: requests reply
- Reply generation service → Together API: calls
- Chat response pipeline → User and messages: reads and writes messages
- User and messages → MySQL database: stores records
- Mood history → Mood visualizations: renders
- Mood history → Mood streaks: renders
