# arpita368/devpulse-github-developer-analytics architecture

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

- Interactive diagram: https://gitdiagram.com/arpita368/devpulse-github-developer-analytics
- Repository: https://github.com/arpita368/devpulse-github-developer-analytics

## Overview

DevPulse is a GitHub developer-analytics application: users authenticate, connect a GitHub account, import repositories, and sync repository activity for presentation in the dashboard and repository views. The backend separates API routing, GitHub account/OAuth handling, repository synchronization, and persisted analytics records. The sync service explicitly fetches commits, pull requests, issues, contributors, and reviews, recording job status as it progresses. The README contains no feature detail, and frontend pages and several route implementations were not sampled, so uncertain page-to-API wiring is omitted.

Main entry points: [`backend/app/services/sync_service.py`](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/services/sync_service.py) (Sync orchestration), [`frontend/src/App.jsx`](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/App.jsx) (Route application), [`backend/app/main.py`](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/main.py) (FastAPI application), [`backend/app/services/github_service.py`](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/services/github_service.py) (Account connection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["Route application<br/>[App.jsx]"]
  node_login["Login and register"]
  node_callback["GitHub callback<br/>[GithubCallback.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_repositories_view["Repositories view<br/>[Repositories.jsx]"]
  node_supabase_client["Supabase client<br/>[supabase.js]"]
end

subgraph group_api["API and identity"]
  node_api_app["FastAPI application<br/>[main.py]"]
  node_auth_routes["Auth routes<br/>[auth.py]"]
  node_profile_routes["Profile routes"]
  node_github_routes["GitHub routes<br/>[github.py]"]
  node_repository_routes["Repository routes<br/>[repositories.py]"]
  node_sync_routes["Sync job routes<br/>[sync_jobs.py]"]
  node_jwt_auth["Token verification<br/>[auth.py]"]
end

subgraph group_github["GitHub integration"]
  node_github_service["Account connection<br/>[github_service.py]"]
  node_github_data["GitHub data client<br/>[github_client.py]"]
end

subgraph group_sync["Repository sync"]
  node_sync_service["Sync orchestration<br/>[sync_service.py]"]
  node_mappers["GitHub mappers<br/>[github_mappers.py]"]
end

subgraph group_storage["Persistent data"]
  node_records["Analytics records"]
  node_jobs["Sync jobs<br/>[sync_job.py]"]
  node_database[("Database session<br/>[database.py]")]
end

node_user(("Developer"))
node_supabase(("Supabase Auth"))
node_github(("GitHub"))

node_user -->|"uses"| node_app
node_app -->|"routes"| node_login
node_app -->|"routes"| node_callback
node_app -->|"routes"| node_dashboard
node_app -->|"routes"| node_repositories_view
node_login -->|"uses"| node_supabase_client
node_callback -->|"uses"| node_supabase_client
node_app -->|"API requests"| node_api_app
node_api_app -->|"dispatches"| node_auth_routes
node_api_app -->|"dispatches"| node_profile_routes
node_api_app -->|"dispatches"| node_github_routes
node_api_app -->|"dispatches"| node_repository_routes
node_api_app -->|"dispatches"| node_sync_routes
node_auth_routes -->|"verifies token"| node_jwt_auth
node_jwt_auth -->|"fetches signing keys"| node_supabase
node_github_routes -->|"account operations"| node_github_service
node_github_service -->|"OAuth and user lookup"| node_github
node_repository_routes -->|"imports and syncs"| node_sync_service
node_sync_routes -->|"lists jobs"| node_sync_service
node_sync_service -->|"gets account token"| node_github_service
node_sync_service -->|"requests repository data"| node_github_data
node_github_data -->|"fetches API data"| node_github
node_sync_service -->|"maps responses"| node_mappers
node_sync_service -->|"upserts activity"| node_records
node_sync_service -->|"creates and updates"| node_jobs
node_github_service -->|"persists account"| node_database
node_sync_service -->|"reads and writes"| node_database

click node_app "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/App.jsx"
click node_login "https://github.com/arpita368/devpulse-github-developer-analytics/tree/main/frontend/src/pages"
click node_callback "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/pages/GithubCallback.jsx"
click node_dashboard "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/pages/Dashboard.jsx"
click node_repositories_view "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/pages/Repositories.jsx"
click node_supabase_client "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/lib/supabase.js"
click node_api_app "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/main.py"
click node_auth_routes "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/api/routes/auth.py"
click node_profile_routes "https://github.com/arpita368/devpulse-github-developer-analytics/tree/main/backend/app/api/routes"
click node_github_routes "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/api/routes/github.py"
click node_repository_routes "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/api/routes/repositories.py"
click node_sync_routes "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/api/routes/sync_jobs.py"
click node_jwt_auth "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/core/auth.py"
click node_github_service "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/services/github_service.py"
click node_github_data "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/clients/github_client.py"
click node_sync_service "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/services/sync_service.py"
click node_mappers "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/services/github_mappers.py"
click node_records "https://github.com/arpita368/devpulse-github-developer-analytics/tree/main/backend/app/models"
click node_jobs "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/models/sync_job.py"
click node_database "https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/db/database.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_login,node_callback,node_dashboard,node_repositories_view,node_supabase_client toneBlue
class node_api_app,node_auth_routes,node_profile_routes,node_github_routes,node_repository_routes,node_sync_routes,node_jwt_auth toneAmber
class node_github_service,node_github_data toneMint
class node_sync_service,node_mappers toneRose
class node_records,node_jobs,node_database,node_user,node_supabase,node_github toneIndigo
```

## Components

### Web application

- [Route application](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Login and register](https://github.com/arpita368/devpulse-github-developer-analytics/tree/main/frontend/src/pages): `frontend/src/pages`
- [GitHub callback](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/pages/GithubCallback.jsx): `frontend/src/pages/GithubCallback.jsx`
- [Dashboard](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Repositories view](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/pages/Repositories.jsx): `frontend/src/pages/Repositories.jsx`
- [Supabase client](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/frontend/src/lib/supabase.js): `frontend/src/lib/supabase.js`

### API and identity

- [FastAPI application](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/main.py): `backend/app/main.py`
- [Auth routes](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/api/routes/auth.py): `backend/app/api/routes/auth.py`
- [Profile routes](https://github.com/arpita368/devpulse-github-developer-analytics/tree/main/backend/app/api/routes): `backend/app/api/routes`
- [GitHub routes](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/api/routes/github.py): `backend/app/api/routes/github.py`
- [Repository routes](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/api/routes/repositories.py): `backend/app/api/routes/repositories.py`
- [Sync job routes](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/api/routes/sync_jobs.py): `backend/app/api/routes/sync_jobs.py`
- [Token verification](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/core/auth.py): `backend/app/core/auth.py`

### GitHub integration

- [Account connection](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/services/github_service.py): `backend/app/services/github_service.py`
- [GitHub data client](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/clients/github_client.py): `backend/app/clients/github_client.py`

### Repository sync

- [Sync orchestration](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/services/sync_service.py): `backend/app/services/sync_service.py`
- [GitHub mappers](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/services/github_mappers.py): `backend/app/services/github_mappers.py`

### Persistent data

- [Analytics records](https://github.com/arpita368/devpulse-github-developer-analytics/tree/main/backend/app/models): `backend/app/models`
- [Sync jobs](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/models/sync_job.py): `backend/app/models/sync_job.py`
- [Database session](https://github.com/arpita368/devpulse-github-developer-analytics/blob/main/backend/app/db/database.py): `backend/app/db/database.py`

### Other components

- **Developer**
- **Supabase Auth**
- **GitHub**

## Connections

- Developer → Route application: uses
- Route application → Login and register: routes
- Route application → GitHub callback: routes
- Route application → Dashboard: routes
- Route application → Repositories view: routes
- Login and register → Supabase client: uses
- GitHub callback → Supabase client: uses
- Route application → FastAPI application: API requests
- FastAPI application → Auth routes: dispatches
- FastAPI application → Profile routes: dispatches
- FastAPI application → GitHub routes: dispatches
- FastAPI application → Repository routes: dispatches
- FastAPI application → Sync job routes: dispatches
- Auth routes → Token verification: verifies token
- Token verification → Supabase Auth: fetches signing keys
- GitHub routes → Account connection: account operations
- Account connection → GitHub: OAuth and user lookup
- Repository routes → Sync orchestration: imports and syncs
- Sync job routes → Sync orchestration: lists jobs
- Sync orchestration → Account connection: gets account token
- Sync orchestration → GitHub data client: requests repository data
- GitHub data client → GitHub: fetches API data
- Sync orchestration → GitHub mappers: maps responses
- Sync orchestration → Analytics records: upserts activity
- Sync orchestration → Sync jobs: creates and updates
- Account connection → Database session: persists account
- Sync orchestration → Database session: reads and writes
