# thenabinamallik/cubesat-sensor-fusion-dashboard architecture

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

- Interactive diagram: https://gitdiagram.com/thenabinamallik/cubesat-sensor-fusion-dashboard
- Repository: https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard

## Overview

This is a CubeSat sensor-monitoring dashboard. A browser loads the React app; its dashboard polls a local sensor-data endpoint, retains up to 30 recent readings, and presents them as status, charts, a data log, satellite orientation, and location. The frontend flow and component links are visible in the excerpts and source index. Backend files are present, but the supplied evidence does not establish their responsibilities or how they serve the endpoint, so they are not connected to it.

Main entry points: [`src/pages/Index.tsx`](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/pages/Index.tsx) (Dashboard Poller), [`src/App.tsx`](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/App.tsx) (App Router), [`src/main.tsx`](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/main.tsx) (React Entry), [`src/components/SensorCharts.tsx`](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/SensorCharts.tsx) (Sensor Charts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Dashboard"]
  node_entry["React Entry<br/>[main.tsx]"]
  node_app_shell["App Router<br/>[App.tsx]"]
  node_dashboard["Dashboard Poller<br/>[Index.tsx]"]
  node_sensor_type["Sensor Data Type<br/>[sensorData.ts]"]
end

subgraph group_views["Sensor Views"]
  node_header["Status Header"]
  node_charts["Sensor Charts<br/>[SensorCharts.tsx]"]
  node_data_table["Sensor Log"]
  node_sat_model["Satellite Model<br/>[SatelliteModel.tsx]"]
  node_location["Satellite Location"]
end

subgraph group_ui["UI Primitives"]
  node_card["Card Primitive<br/>[card.tsx]"]
  node_chart_ui["Chart Primitive<br/>[chart.tsx]"]
  node_table_ui["Table Primitive<br/>[table.tsx]"]
  node_toast_system["Toast System<br/>[use-toast.ts]"]
  node_toast_render["Toast Renderer<br/>[toaster.tsx]"]
  node_sonner["Sonner Notices<br/>[sonner.tsx]"]
end

subgraph group_backend["Backend Files"]
  node_backend_app["Python Backend<br/>[app.py]"]
  node_backend_server["Node Backend<br/>[server.js]"]
end

node_browser(("Browser User"))
node_sensor_api["Sensor API"]

node_browser -->|"opens app"| node_entry
node_entry -->|"renders"| node_app_shell
node_app_shell -->|"routes to"| node_dashboard
node_dashboard -->|"polls readings"| node_sensor_api
node_dashboard -->|"renders"| node_header
node_dashboard -->|"renders"| node_charts
node_dashboard -->|"renders"| node_data_table
node_dashboard -->|"renders"| node_sat_model
node_dashboard -->|"renders"| node_location
node_dashboard -->|"uses"| node_card
node_charts -->|"uses"| node_chart_ui
node_data_table -->|"uses"| node_table_ui
node_app_shell -->|"renders"| node_toast_render
node_app_shell -->|"renders"| node_sonner
node_toast_render -->|"reads toast state"| node_toast_system

click node_entry "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/main.tsx"
click node_app_shell "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/App.tsx"
click node_dashboard "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/pages/Index.tsx"
click node_sensor_type "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/types/sensorData.ts"
click node_header "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/DashboardHeader.tsx"
click node_charts "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/SensorCharts.tsx"
click node_data_table "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/SensorDataTable.tsx"
click node_sat_model "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/SatelliteModel.tsx"
click node_location "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/SatelliteLocation.tsx"
click node_card "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/card.tsx"
click node_chart_ui "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/chart.tsx"
click node_table_ui "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/table.tsx"
click node_toast_system "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/hooks/use-toast.ts"
click node_toast_render "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/toaster.tsx"
click node_sonner "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/sonner.tsx"
click node_backend_app "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/backend/app.py"
click node_backend_server "https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/backend/server.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_entry,node_app_shell,node_dashboard,node_sensor_type,node_browser toneBlue
class node_header,node_charts,node_data_table,node_sat_model,node_location toneAmber
class node_card,node_chart_ui,node_table_ui,node_toast_system,node_toast_render,node_sonner,node_sensor_api toneMint
class node_backend_app,node_backend_server toneRose
```

## Components

### Dashboard

- [React Entry](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/main.tsx): `src/main.tsx`
- [App Router](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/App.tsx): `src/App.tsx`
- [Dashboard Poller](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/pages/Index.tsx): `src/pages/Index.tsx`
- [Sensor Data Type](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/types/sensorData.ts): `src/types/sensorData.ts`

### Sensor Views

- [Status Header](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/DashboardHeader.tsx): `src/components/DashboardHeader.tsx`
- [Sensor Charts](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/SensorCharts.tsx): `src/components/SensorCharts.tsx`
- [Sensor Log](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/SensorDataTable.tsx): `src/components/SensorDataTable.tsx`
- [Satellite Model](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/SatelliteModel.tsx): `src/components/SatelliteModel.tsx`
- [Satellite Location](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/SatelliteLocation.tsx): `src/components/SatelliteLocation.tsx`

### UI Primitives

- [Card Primitive](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/card.tsx): `src/components/ui/card.tsx`
- [Chart Primitive](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/chart.tsx): `src/components/ui/chart.tsx`
- [Table Primitive](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/table.tsx): `src/components/ui/table.tsx`
- [Toast System](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/hooks/use-toast.ts): `src/hooks/use-toast.ts`
- [Toast Renderer](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/toaster.tsx): `src/components/ui/toaster.tsx`
- [Sonner Notices](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/src/components/ui/sonner.tsx): `src/components/ui/sonner.tsx`

### Backend Files

- [Python Backend](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/backend/app.py): `backend/app.py`
- [Node Backend](https://github.com/thenabinamallik/cubesat-sensor-fusion-dashboard/blob/main/backend/server.js): `backend/server.js`

### Other components

- **Browser User**
- **Sensor API**

## Connections

- Browser User → React Entry: opens app (evidence: `src/main.tsx`)
- React Entry → App Router: renders (evidence: `src/main.tsx`)
- App Router → Dashboard Poller: routes to (evidence: `src/App.tsx`)
- Dashboard Poller → Sensor API: polls readings (evidence: `src/pages/Index.tsx`)
- Dashboard Poller → Status Header: renders (evidence: `src/pages/Index.tsx`)
- Dashboard Poller → Sensor Charts: renders (evidence: `src/pages/Index.tsx`)
- Dashboard Poller → Sensor Log: renders (evidence: `src/pages/Index.tsx`)
- Dashboard Poller → Satellite Model: renders (evidence: `src/pages/Index.tsx`)
- Dashboard Poller → Satellite Location: renders (evidence: `src/pages/Index.tsx`)
- Dashboard Poller → Card Primitive: uses (evidence: `src/pages/Index.tsx`)
- Sensor Charts → Chart Primitive: uses (evidence: `src/components/SensorCharts.tsx`)
- Sensor Log → Table Primitive: uses (evidence: `src/components/SensorDataTable.tsx`)
- App Router → Toast Renderer: renders (evidence: `src/App.tsx`)
- App Router → Sonner Notices: renders (evidence: `src/App.tsx`)
- Toast Renderer → Toast System: reads toast state (evidence: `src/components/ui/toaster.tsx`)
