# soumalyasaha/atmos.ai architecture

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

- Interactive diagram: https://gitdiagram.com/soumalyasaha/atmos.ai
- Repository: https://github.com/soumalyasaha/atmos.ai

## Overview

Atmos AI is a React carbon-footprint tracker. Users sign in, complete onboarding and footprint calculation, then view dashboard analytics and use challenges, AI advice, profile, and community rankings. The sampled frontend shows route ownership, API use, and token handling; backend internals described in the README are not present in this tree, so they are represented only as an external service.

Main entry points: [`src/App.jsx`](https://github.com/soumalyasaha/atmos.ai/blob/main/src/App.jsx) (App & Routes), [`src/utils/api.js`](https://github.com/soumalyasaha/atmos.ai/blob/main/src/utils/api.js) (API Client), [`src/pages/Login.jsx`](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Login.jsx) (Sign In), [`src/pages/Onboarding.jsx`](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Onboarding.jsx) (Onboarding)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App Entry"]
  node_app["App &amp; Routes<br/>[App.jsx]"]
  node_login["Sign In<br/>[Login.jsx]"]
  node_onboarding["Onboarding<br/>[Onboarding.jsx]"]
end

subgraph group_footprint["Footprint &amp; Insights"]
  node_calculator["Footprint Calculator<br/>[Calculator.jsx]"]
  node_dashboard["Footprint Dashboard<br/>[Dashboard.jsx]"]
  node_chat["AI Assistant<br/>[Chatbot.jsx]"]
end

subgraph group_engagement["Engagement"]
  node_challenges["Challenges<br/>[Challenges.jsx]"]
  node_leaderboard["Leaderboard<br/>[Leaderboard.jsx]"]
  node_profile["User Profile<br/>[Profile.jsx]"]
end

subgraph group_shared["Shared UI &amp; API"]
  node_layout["Navigation Layout<br/>[Layout.jsx]"]
  node_api["API Client<br/>[api.js]"]
end

node_person(("User"))
node_google{{"Google OAuth"}}
node_backend{{"Backend API"}}

node_person -->|"signs in"| node_login
node_google -->|"provides credential"| node_login
node_login -->|"submits login"| node_api
node_api -->|"sends requests"| node_backend
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_onboarding
node_app -->|"routes to"| node_calculator
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_challenges
node_app -->|"routes to"| node_chat
node_app -->|"routes to"| node_leaderboard
node_app -->|"routes to"| node_profile
node_app -->|"wraps routes"| node_layout
node_onboarding -->|"uses"| node_api
node_calculator -->|"saves footprint"| node_api
node_dashboard -->|"loads metrics"| node_api
node_chat -->|"requests advice"| node_api
node_challenges -->|"uses"| node_api
node_leaderboard -->|"loads rankings"| node_api
node_profile -->|"uses"| node_api

click node_app "https://github.com/soumalyasaha/atmos.ai/blob/main/src/App.jsx"
click node_login "https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Login.jsx"
click node_onboarding "https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Onboarding.jsx"
click node_calculator "https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Calculator.jsx"
click node_dashboard "https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Dashboard.jsx"
click node_chat "https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Chatbot.jsx"
click node_challenges "https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Challenges.jsx"
click node_leaderboard "https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Leaderboard.jsx"
click node_profile "https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Profile.jsx"
click node_layout "https://github.com/soumalyasaha/atmos.ai/blob/main/src/components/Layout.jsx"
click node_api "https://github.com/soumalyasaha/atmos.ai/blob/main/src/utils/api.js"

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_onboarding,node_person toneBlue
class node_calculator,node_dashboard,node_chat toneAmber
class node_challenges,node_leaderboard,node_profile,node_backend toneMint
class node_layout,node_api toneRose
class node_google toneIndigo
```

## Components

### App Entry

- [App & Routes](https://github.com/soumalyasaha/atmos.ai/blob/main/src/App.jsx): `src/App.jsx`
- [Sign In](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Login.jsx): `src/pages/Login.jsx`
- [Onboarding](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Onboarding.jsx): `src/pages/Onboarding.jsx`

### Footprint & Insights

- [Footprint Calculator](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Calculator.jsx): `src/pages/Calculator.jsx`
- [Footprint Dashboard](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Dashboard.jsx): `src/pages/Dashboard.jsx`
- [AI Assistant](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Chatbot.jsx): `src/pages/Chatbot.jsx`

### Engagement

- [Challenges](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Challenges.jsx): `src/pages/Challenges.jsx`
- [Leaderboard](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Leaderboard.jsx): `src/pages/Leaderboard.jsx`
- [User Profile](https://github.com/soumalyasaha/atmos.ai/blob/main/src/pages/Profile.jsx): `src/pages/Profile.jsx`

### Shared UI & API

- [Navigation Layout](https://github.com/soumalyasaha/atmos.ai/blob/main/src/components/Layout.jsx): `src/components/Layout.jsx`
- [API Client](https://github.com/soumalyasaha/atmos.ai/blob/main/src/utils/api.js): `src/utils/api.js`

### Other components

- **User**
- **Google OAuth**
- **Backend API**

## Connections

- User → Sign In: signs in (evidence: `README.md`)
- Google OAuth → Sign In: provides credential (evidence: `src/pages/Login.jsx`)
- Sign In → API Client: submits login (evidence: `src/pages/Login.jsx`)
- API Client → Backend API: sends requests (evidence: `README.md`)
- App & Routes → Sign In: routes to (evidence: `src/App.jsx`)
- App & Routes → Onboarding: routes to (evidence: `src/App.jsx`)
- App & Routes → Footprint Calculator: routes to (evidence: `src/App.jsx`)
- App & Routes → Footprint Dashboard: routes to (evidence: `src/App.jsx`)
- App & Routes → Challenges: routes to (evidence: `src/App.jsx`)
- App & Routes → AI Assistant: routes to (evidence: `src/App.jsx`)
- App & Routes → Leaderboard: routes to (evidence: `src/App.jsx`)
- App & Routes → User Profile: routes to (evidence: `src/App.jsx`)
- App & Routes → Navigation Layout: wraps routes (evidence: `src/App.jsx`)
- Onboarding → API Client: uses (evidence: `src/pages/Onboarding.jsx`)
- Footprint Calculator → API Client: saves footprint (evidence: `src/pages/Calculator.jsx`)
- Footprint Dashboard → API Client: loads metrics (evidence: `src/pages/Dashboard.jsx`)
- AI Assistant → API Client: requests advice (evidence: `src/pages/Chatbot.jsx`)
- Challenges → API Client: uses (evidence: `src/pages/Challenges.jsx`)
- Leaderboard → API Client: loads rankings (evidence: `src/pages/Leaderboard.jsx`)
- User Profile → API Client: uses (evidence: `src/pages/Profile.jsx`)
