# nithyasahasra/taskarena2 architecture

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

- Interactive diagram: https://gitdiagram.com/nithyasahasra/taskarena2
- Repository: https://github.com/nithyasahasra/taskarena2

## Overview

TaskArena is a social productivity platform: users sign in, manage tasks, earn progress through completion, and use groups, rankings, analytics, and coaching to stay accountable. The React client routes feature pages through an authenticated API client to FastAPI; the backend handles domain operations and persists application state in MongoDB, with AI coaching delegated to external language models. The graph includes README-documented capabilities whose implementation was not sampled; their internal details and some runtime connections therefore remain unverified.

Main entry points: [`frontend/src/App.js`](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/App.js) (App routing), [`frontend/src/lib/api.js`](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/lib/api.js) (API client), [`backend/server.py`](https://github.com/nithyasahasra/taskarena2/blob/main/backend/server.py) (FastAPI routes), [`frontend/src/lib/auth.jsx`](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/lib/auth.jsx) (Auth context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["App routing<br/>[App.js]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_identity["Identity"]
  node_login_signup["Login and signup<br/>[Login.jsx]"]
  node_auth_context["Auth context<br/>[auth.jsx]"]
  node_auth_service["JWT and passwords<br/>[auth.py]"]
end

subgraph group_product["Product workflows"]
  node_task_page["Task management<br/>[Tasks.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_groups_page["Groups<br/>[Groups.jsx]"]
  node_group_detail["Group chat<br/>[GroupDetail.jsx]"]
  node_leaderboard["Leaderboards<br/>[Leaderboard.jsx]"]
  node_analytics["Analytics<br/>[Analytics.jsx]"]
  node_coach["AI coach<br/>[Coach.jsx]"]
  node_profile["User profile<br/>[Profile.jsx]"]
end

subgraph group_backend["Backend services"]
  node_backend_api["FastAPI routes<br/>[server.py]"]
  node_schemas["API schemas<br/>[schemas.py]"]
  node_ai_service["AI helpers<br/>[ai_service.py]"]
end

subgraph group_integrations["External services"]
  node_database[("MongoDB")]
  node_llm{{"LLM providers"}}
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_login_signup
node_app -->|"routes to"| node_task_page
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_groups_page
node_app -->|"routes to"| node_group_detail
node_app -->|"routes to"| node_leaderboard
node_app -->|"routes to"| node_analytics
node_app -->|"routes to"| node_coach
node_app -->|"routes to"| node_profile
node_login_signup -->|"uses"| node_auth_context
node_auth_context -->|"requests auth"| node_api_client
node_auth_context -->|"auth requests"| node_backend_api
node_task_page -->|"requests tasks"| node_api_client
node_dashboard -->|"requests stats"| node_api_client
node_groups_page -->|"requests groups"| node_api_client
node_group_detail -->|"requests group data"| node_api_client
node_leaderboard -->|"requests rankings"| node_api_client
node_analytics -->|"requests trends"| node_api_client
node_coach -->|"requests coaching"| node_api_client
node_profile -->|"requests profile"| node_api_client
node_api_client -->|"HTTP requests"| node_backend_api
node_group_detail -->|"opens chat socket"| node_backend_api
node_backend_api -->|"uses auth"| node_auth_service
node_backend_api -->|"validates requests"| node_schemas
node_backend_api -->|"invokes coaching"| node_ai_service
node_backend_api -->|"reads and writes"| node_database
node_ai_service -->|"sends prompts"| node_llm

click node_app "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/App.js"
click node_api_client "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/lib/api.js"
click node_login_signup "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Login.jsx"
click node_auth_context "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/lib/auth.jsx"
click node_auth_service "https://github.com/nithyasahasra/taskarena2/blob/main/backend/auth.py"
click node_task_page "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Tasks.jsx"
click node_dashboard "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Dashboard.jsx"
click node_groups_page "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Groups.jsx"
click node_group_detail "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/GroupDetail.jsx"
click node_leaderboard "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Leaderboard.jsx"
click node_analytics "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Analytics.jsx"
click node_coach "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Coach.jsx"
click node_profile "https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Profile.jsx"
click node_backend_api "https://github.com/nithyasahasra/taskarena2/blob/main/backend/server.py"
click node_schemas "https://github.com/nithyasahasra/taskarena2/blob/main/backend/schemas.py"
click node_ai_service "https://github.com/nithyasahasra/taskarena2/blob/main/backend/ai_service.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_api_client,node_user toneBlue
class node_login_signup,node_auth_context,node_auth_service toneAmber
class node_task_page,node_dashboard,node_groups_page,node_group_detail,node_leaderboard,node_analytics,node_coach,node_profile toneMint
class node_backend_api,node_schemas,node_ai_service toneRose
class node_database,node_llm toneIndigo
```

## Components

### Web client

- [App routing](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/App.js): `frontend/src/App.js`
- [API client](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/lib/api.js): `frontend/src/lib/api.js`

### Identity

- [Login and signup](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Login.jsx): `frontend/src/pages/Login.jsx`
- [Auth context](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/lib/auth.jsx): `frontend/src/lib/auth.jsx`
- [JWT and passwords](https://github.com/nithyasahasra/taskarena2/blob/main/backend/auth.py): `backend/auth.py`

### Product workflows

- [Task management](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Tasks.jsx): `frontend/src/pages/Tasks.jsx`
- [Dashboard](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Groups](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Groups.jsx): `frontend/src/pages/Groups.jsx`
- [Group chat](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/GroupDetail.jsx): `frontend/src/pages/GroupDetail.jsx`
- [Leaderboards](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Leaderboard.jsx): `frontend/src/pages/Leaderboard.jsx`
- [Analytics](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Analytics.jsx): `frontend/src/pages/Analytics.jsx`
- [AI coach](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Coach.jsx): `frontend/src/pages/Coach.jsx`
- [User profile](https://github.com/nithyasahasra/taskarena2/blob/main/frontend/src/pages/Profile.jsx): `frontend/src/pages/Profile.jsx`

### Backend services

- [FastAPI routes](https://github.com/nithyasahasra/taskarena2/blob/main/backend/server.py): `backend/server.py`
- [API schemas](https://github.com/nithyasahasra/taskarena2/blob/main/backend/schemas.py): `backend/schemas.py`
- [AI helpers](https://github.com/nithyasahasra/taskarena2/blob/main/backend/ai_service.py): `backend/ai_service.py`

### External services

- **MongoDB**
- **LLM providers**

### Other components

- **User**

## Connections

- User → App routing: uses (evidence: `README.md`)
- App routing → Login and signup: routes to (evidence: `README.md`)
- App routing → Task management: routes to (evidence: `README.md`)
- App routing → Dashboard: routes to (evidence: `README.md`)
- App routing → Groups: routes to (evidence: `README.md`)
- App routing → Group chat: routes to (evidence: `README.md`)
- App routing → Leaderboards: routes to (evidence: `README.md`)
- App routing → Analytics: routes to (evidence: `README.md`)
- App routing → AI coach: routes to (evidence: `README.md`)
- App routing → User profile: routes to (evidence: `README.md`)
- Login and signup → Auth context: uses (evidence: `frontend/src/pages/Login.jsx`)
- Auth context → API client: requests auth (evidence: `frontend/src/lib/auth.jsx`)
- Auth context → FastAPI routes: auth requests (evidence: `README.md`)
- Task management → API client: requests tasks (evidence: `frontend/src/pages/Tasks.jsx`)
- Dashboard → API client: requests stats (evidence: `frontend/src/pages/Dashboard.jsx`)
- Groups → API client: requests groups (evidence: `frontend/src/pages/Groups.jsx`)
- Group chat → API client: requests group data (evidence: `frontend/src/pages/GroupDetail.jsx`)
- Leaderboards → API client: requests rankings (evidence: `frontend/src/pages/Leaderboard.jsx`)
- Analytics → API client: requests trends (evidence: `README.md`)
- AI coach → API client: requests coaching (evidence: `frontend/src/pages/Coach.jsx`)
- User profile → API client: requests profile (evidence: `frontend/src/pages/Profile.jsx`)
- API client → FastAPI routes: HTTP requests (evidence: `README.md`)
- Group chat → FastAPI routes: opens chat socket (evidence: `README.md`)
- FastAPI routes → JWT and passwords: uses auth (evidence: `backend/server.py`)
- FastAPI routes → API schemas: validates requests (evidence: `backend/server.py`)
- FastAPI routes → AI helpers: invokes coaching (evidence: `backend/server.py`)
- FastAPI routes → MongoDB: reads and writes (evidence: `backend/server.py`)
- AI helpers → LLM providers: sends prompts (evidence: `backend/ai_service.py`)
