# jaya1274/musicmind-starter architecture

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

- Interactive diagram: https://gitdiagram.com/jaya1274/musicmind-starter
- Repository: https://github.com/jaya1274/musicmind-starter

## Overview

MusicMind’s main backend supports Spotify sign-in, retrieves listening data, and exposes prototype feature extraction and OCEAN scoring based on a mock profile. The principal user flow is browser → OAuth → dashboard/API; the full-profile endpoint gathers Spotify data, while analysis endpoints currently score the mock profile rather than that live profile. The repository also contains a separate starter snapshot with OAuth and data-fetching routes. Edges reflect the sampled source and README; the starter’s HTML and unsampled behavior are not inferred.

Main entry points: [`backend/routes/data.js`](https://github.com/jaya1274/musicmind-starter/blob/main/backend/routes/data.js) (Data Routes), [`backend/server.js`](https://github.com/jaya1274/musicmind-starter/blob/main/backend/server.js) (HTTP Server), [`musicmind-starter/backend/server.js`](https://github.com/jaya1274/musicmind-starter/blob/main/musicmind-starter/backend/server.js) (Starter HTTP Server), [`backend/routes/auth.js`](https://github.com/jaya1274/musicmind-starter/blob/main/backend/routes/auth.js) (OAuth Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_main["Main MusicMind"]
  node_main_server["HTTP Server<br/>[server.js]"]
  node_main_pages["Dashboard Pages<br/>[dashboard.html]"]
  node_main_auth["OAuth Routes<br/>[auth.js]"]
  node_main_data["Data Routes<br/>[data.js]"]
end

subgraph group_analysis["Profile Analysis"]
  node_main_profile["Mock Profile<br/>[profile.js]"]
  node_features["Feature Extraction<br/>[features.js]"]
  node_ocean["OCEAN Scoring<br/>[ocean.js]"]
end

subgraph group_starter["Starter Snapshot"]
  node_starter_server["Starter HTTP Server<br/>[server.js]"]
  node_starter_auth["Starter OAuth Routes<br/>[auth.js]"]
  node_starter_data["Starter Data Routes<br/>[data.js]"]
  node_starter_pages["Starter Dashboard<br/>[dashboard.html]"]
end

subgraph group_external["External Services"]
  node_spotify_accounts["Spotify Accounts"]
  node_spotify_api["Spotify Web API"]
end

node_browser(("User Browser"))

node_browser -->|"requests pages/API"| node_main_server
node_main_server -->|"serves static files"| node_main_pages
node_main_server -->|"mounts /auth"| node_main_auth
node_main_server -->|"mounts /api"| node_main_data
node_browser -->|"starts login"| node_main_auth
node_main_auth -->|"redirects and exchanges code"| node_spotify_accounts
node_spotify_accounts -->|"redirects after login"| node_browser
node_main_auth -->|"sets token cookies"| node_browser
node_main_data -->|"fetches listening data"| node_spotify_api
node_main_data -->|"returns API JSON"| node_browser
node_main_data -->|"serves mock profile"| node_main_profile
node_main_data -->|"extracts features"| node_features
node_main_data -->|"scores features"| node_ocean
node_features -->|"reads profile data"| node_main_profile
node_ocean -->|"uses feature scores"| node_features
node_browser -->|"requests starter pages/API"| node_starter_server
node_starter_server -->|"serves static files"| node_starter_pages
node_starter_server -->|"mounts /auth"| node_starter_auth
node_starter_server -->|"mounts /api"| node_starter_data
node_starter_auth -->|"redirects and exchanges code"| node_spotify_accounts
node_starter_data -->|"fetches listening data"| node_spotify_api

click node_main_server "https://github.com/jaya1274/musicmind-starter/blob/main/backend/server.js"
click node_main_pages "https://github.com/jaya1274/musicmind-starter/blob/main/public/dashboard.html"
click node_main_auth "https://github.com/jaya1274/musicmind-starter/blob/main/backend/routes/auth.js"
click node_main_data "https://github.com/jaya1274/musicmind-starter/blob/main/backend/routes/data.js"
click node_main_profile "https://github.com/jaya1274/musicmind-starter/blob/main/backend/mock/profile.js"
click node_features "https://github.com/jaya1274/musicmind-starter/blob/main/backend/analysis/features.js"
click node_ocean "https://github.com/jaya1274/musicmind-starter/blob/main/backend/analysis/ocean.js"
click node_starter_server "https://github.com/jaya1274/musicmind-starter/blob/main/musicmind-starter/backend/server.js"
click node_starter_auth "https://github.com/jaya1274/musicmind-starter/blob/main/musicmind-starter/backend/routes/auth.js"
click node_starter_data "https://github.com/jaya1274/musicmind-starter/blob/main/musicmind-starter/backend/routes/data.js"
click node_starter_pages "https://github.com/jaya1274/musicmind-starter/blob/main/musicmind-starter/public/dashboard.html"

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_main_server,node_main_pages,node_main_auth,node_main_data,node_browser toneBlue
class node_main_profile,node_features,node_ocean toneAmber
class node_starter_server,node_starter_auth,node_starter_data,node_starter_pages toneMint
class node_spotify_accounts,node_spotify_api toneRose
```

## Components

### Main MusicMind

- [HTTP Server](https://github.com/jaya1274/musicmind-starter/blob/main/backend/server.js): `backend/server.js`
- [Dashboard Pages](https://github.com/jaya1274/musicmind-starter/blob/main/public/dashboard.html): `public/dashboard.html`
- [OAuth Routes](https://github.com/jaya1274/musicmind-starter/blob/main/backend/routes/auth.js): `backend/routes/auth.js`
- [Data Routes](https://github.com/jaya1274/musicmind-starter/blob/main/backend/routes/data.js): `backend/routes/data.js`

### Profile Analysis

- [Mock Profile](https://github.com/jaya1274/musicmind-starter/blob/main/backend/mock/profile.js): `backend/mock/profile.js`
- [Feature Extraction](https://github.com/jaya1274/musicmind-starter/blob/main/backend/analysis/features.js): `backend/analysis/features.js`
- [OCEAN Scoring](https://github.com/jaya1274/musicmind-starter/blob/main/backend/analysis/ocean.js): `backend/analysis/ocean.js`

### Starter Snapshot

- [Starter HTTP Server](https://github.com/jaya1274/musicmind-starter/blob/main/musicmind-starter/backend/server.js): `musicmind-starter/backend/server.js`
- [Starter OAuth Routes](https://github.com/jaya1274/musicmind-starter/blob/main/musicmind-starter/backend/routes/auth.js): `musicmind-starter/backend/routes/auth.js`
- [Starter Data Routes](https://github.com/jaya1274/musicmind-starter/blob/main/musicmind-starter/backend/routes/data.js): `musicmind-starter/backend/routes/data.js`
- [Starter Dashboard](https://github.com/jaya1274/musicmind-starter/blob/main/musicmind-starter/public/dashboard.html): `musicmind-starter/public/dashboard.html`

### External Services

- **Spotify Accounts**
- **Spotify Web API**

### Other components

- **User Browser**

## Connections

- User Browser → HTTP Server: requests pages/API (evidence: `backend/server.js`)
- HTTP Server → Dashboard Pages: serves static files (evidence: `backend/server.js`)
- HTTP Server → OAuth Routes: mounts /auth (evidence: `backend/server.js`)
- HTTP Server → Data Routes: mounts /api (evidence: `backend/server.js`)
- User Browser → OAuth Routes: starts login (evidence: `README.md`)
- OAuth Routes → Spotify Accounts: redirects and exchanges code (evidence: `backend/routes/auth.js`)
- Spotify Accounts → User Browser: redirects after login
- OAuth Routes → User Browser: sets token cookies (evidence: `backend/routes/auth.js`)
- Data Routes → Spotify Web API: fetches listening data (evidence: `backend/routes/data.js`)
- Data Routes → User Browser: returns API JSON (evidence: `backend/routes/data.js`)
- Data Routes → Mock Profile: serves mock profile (evidence: `backend/routes/data.js`)
- Data Routes → Feature Extraction: extracts features (evidence: `backend/routes/data.js`)
- Data Routes → OCEAN Scoring: scores features (evidence: `backend/routes/data.js`)
- Feature Extraction → Mock Profile: reads profile data (evidence: `backend/analysis/features.js`)
- OCEAN Scoring → Feature Extraction: uses feature scores (evidence: `backend/analysis/ocean.js`)
- User Browser → Starter HTTP Server: requests starter pages/API (evidence: `musicmind-starter/backend/server.js`)
- Starter HTTP Server → Starter Dashboard: serves static files (evidence: `musicmind-starter/backend/server.js`)
- Starter HTTP Server → Starter OAuth Routes: mounts /auth (evidence: `musicmind-starter/backend/server.js`)
- Starter HTTP Server → Starter Data Routes: mounts /api (evidence: `musicmind-starter/backend/server.js`)
- Starter OAuth Routes → Spotify Accounts: redirects and exchanges code (evidence: `musicmind-starter/backend/routes/auth.js`)
- Starter Data Routes → Spotify Web API: fetches listening data (evidence: `musicmind-starter/backend/routes/data.js`)
