# samudralaajaykumarrr/carbon-credits architecture

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

- Interactive diagram: https://gitdiagram.com/samudralaajaykumarrr/carbon-credits
- Repository: https://github.com/samudralaajaykumarrr/carbon-credits

## Overview

EcoCommute Credits is a role-based commuting and carbon-credit application. Users authenticate, join an approved organization, record commutes, and view earned credits; organization and system administrators manage members and organization approvals. Organization administrators can also trade credits through a marketplace, with analytics dashboards for organizational and system views. The graph follows the documented product capabilities and sampled client/server entry points; detailed wiring for unsampled dashboard and commute components is not asserted.

Main entry points: [`client/src/lib/queryClient.ts`](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/lib/queryClient.ts) (API query client), [`client/src/App.tsx`](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/App.tsx) (Role-based router), [`server/routes.ts`](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/server/routes.ts) (REST API routes), [`client/src/pages/auth-page.tsx`](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/pages/auth-page.tsx) (Login and registration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_app["Role-based router<br/>[App.tsx]"]
  node_authpage["Login and registration<br/>[auth-page.tsx]"]
  node_authhook["Auth session state<br/>[use-auth.tsx]"]
  node_query["API query client<br/>[queryClient.ts]"]
  node_employee["Employee dashboard"]
  node_orgadmin["Organization admin"]
  node_sysadmin["System admin"]
  node_commutelog["Commute entry"]
  node_distance["Commute distance"]
end

subgraph group_server["API and domain"]
  node_routes["REST API routes<br/>[routes.ts]"]
  node_authserver["Server authentication<br/>[auth.ts]"]
  node_points["Credit calculation<br/>[utils.ts]"]
end

subgraph group_data["Persistence and models"]
  node_storage["Storage operations<br/>[sqlite-storage.ts]"]
  node_database[("SQLite database<br/>[db.ts]")]
  node_schema["Domain data models<br/>[schema.ts]"]
end

subgraph group_insights["Marketplace and analytics"]
  node_marketplace["Credit marketplace<br/>[marketplace.tsx]"]
  node_analytics["Organization analytics"]
  node_systemanalytics["System analytics"]
end

node_user(("Employee or admin"))

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_authpage
node_app -->|"selects by role"| node_employee
node_app -->|"selects by role"| node_orgadmin
node_app -->|"selects by role"| node_sysadmin
node_app -->|"provides auth"| node_authhook
node_authpage -->|"submits credentials"| node_authhook
node_authpage -->|"loads organizations"| node_query
node_authhook -->|"sends auth requests"| node_query
node_employee -->|"records commutes"| node_commutelog
node_employee -->|"sets distance"| node_distance
node_commutelog -->|"submits log"| node_query
node_distance -->|"updates distance"| node_query
node_query -->|"requests API"| node_routes
node_routes -->|"sets up authentication"| node_authserver
node_routes -->|"reads and writes"| node_storage
node_routes -->|"calculates credits"| node_points
node_storage -->|"persists records"| node_database
node_storage -->|"uses domain models"| node_schema
node_orgadmin -->|"manages listings"| node_marketplace
node_marketplace -->|"loads and trades"| node_query
node_orgadmin -->|"views analytics"| node_analytics
node_sysadmin -->|"views analytics"| node_systemanalytics
node_analytics -->|"loads metrics"| node_query
node_systemanalytics -->|"loads metrics"| node_query

click node_app "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/App.tsx"
click node_authpage "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/pages/auth-page.tsx"
click node_authhook "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/hooks/use-auth.tsx"
click node_query "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/lib/queryClient.ts"
click node_employee "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/pages/employee-dashboard.tsx"
click node_orgadmin "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/pages/org-admin-dashboard.tsx"
click node_sysadmin "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/pages/system-admin-dashboard.tsx"
click node_commutelog "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/commute-log-form.tsx"
click node_distance "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/commute-distance-modal.tsx"
click node_routes "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/server/routes.ts"
click node_authserver "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/server/auth.ts"
click node_points "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/shared/utils.ts"
click node_storage "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/server/sqlite-storage.ts"
click node_database "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/server/db.ts"
click node_schema "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/shared/schema.ts"
click node_marketplace "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/marketplace.tsx"
click node_analytics "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/analytics-dashboard.tsx"
click node_systemanalytics "https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/system-analytics-dashboard.tsx"

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_authpage,node_authhook,node_query,node_employee,node_orgadmin,node_sysadmin,node_commutelog,node_distance toneBlue
class node_routes,node_authserver,node_points toneAmber
class node_storage,node_database,node_schema toneMint
class node_marketplace,node_analytics,node_systemanalytics toneRose
class node_user toneIndigo
```

## Components

### Web application

- [Role-based router](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/App.tsx): `client/src/App.tsx`
- [Login and registration](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/pages/auth-page.tsx): `client/src/pages/auth-page.tsx`
- [Auth session state](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/hooks/use-auth.tsx): `client/src/hooks/use-auth.tsx`
- [API query client](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/lib/queryClient.ts): `client/src/lib/queryClient.ts`
- [Employee dashboard](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/pages/employee-dashboard.tsx): `client/src/pages/employee-dashboard.tsx`
- [Organization admin](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/pages/org-admin-dashboard.tsx): `client/src/pages/org-admin-dashboard.tsx`
- [System admin](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/pages/system-admin-dashboard.tsx): `client/src/pages/system-admin-dashboard.tsx`
- [Commute entry](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/commute-log-form.tsx): `client/src/components/commute-log-form.tsx`
- [Commute distance](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/commute-distance-modal.tsx): `client/src/components/commute-distance-modal.tsx`

### API and domain

- [REST API routes](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/server/routes.ts): `server/routes.ts`
- [Server authentication](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/server/auth.ts): `server/auth.ts`
- [Credit calculation](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/shared/utils.ts): `shared/utils.ts`

### Persistence and models

- [Storage operations](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/server/sqlite-storage.ts): `server/sqlite-storage.ts`
- [SQLite database](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/server/db.ts): `server/db.ts`
- [Domain data models](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/shared/schema.ts): `shared/schema.ts`

### Marketplace and analytics

- [Credit marketplace](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/marketplace.tsx): `client/src/components/marketplace.tsx`
- [Organization analytics](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/analytics-dashboard.tsx): `client/src/components/analytics-dashboard.tsx`
- [System analytics](https://github.com/samudralaajaykumarrr/carbon-credits/blob/main/client/src/components/system-analytics-dashboard.tsx): `client/src/components/system-analytics-dashboard.tsx`

### Other components

- **Employee or admin**

## Connections

- Employee or admin → Role-based router: uses
- Role-based router → Login and registration: routes to
- Role-based router → Employee dashboard: selects by role
- Role-based router → Organization admin: selects by role
- Role-based router → System admin: selects by role
- Role-based router → Auth session state: provides auth
- Login and registration → Auth session state: submits credentials
- Login and registration → API query client: loads organizations
- Auth session state → API query client: sends auth requests
- Employee dashboard → Commute entry: records commutes
- Employee dashboard → Commute distance: sets distance
- Commute entry → API query client: submits log
- Commute distance → API query client: updates distance
- API query client → REST API routes: requests API
- REST API routes → Server authentication: sets up authentication
- REST API routes → Storage operations: reads and writes
- REST API routes → Credit calculation: calculates credits
- Storage operations → SQLite database: persists records
- Storage operations → Domain data models: uses domain models
- Organization admin → Credit marketplace: manages listings
- Credit marketplace → API query client: loads and trades
- Organization admin → Organization analytics: views analytics
- System admin → System analytics: views analytics
- Organization analytics → API query client: loads metrics
- System analytics → API query client: loads metrics
