# kashishinamdar/datalens architecture

> Architecture diagram of the GitHub repository kashishinamdar/datalens, 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/kashishinamdar/datalens
- Repository: https://github.com/kashishinamdar/datalens

## Overview

DataLens is a Streamlit no-code analytics app whose main workflow takes CSV or Excel data through upload, inspection, cleaning, exploration, visualization, statistical testing, and export. Pages share a session-state working dataset; cleaning updates that copy while preserving the original. The README documents the full capability set, while source excerpts show selected page-to-utility calls and app navigation. Some page implementations and the visualization engine were not sampled, so their internal relationships are shown only where documented or evidenced by the source index.

Main entry points: [`app.py`](https://github.com/kashishinamdar/datalens/blob/main/app.py) (App Navigation), [`utils/helpers.py`](https://github.com/kashishinamdar/datalens/blob/main/utils/helpers.py) (Session State), [`pages/analysis.py`](https://github.com/kashishinamdar/datalens/blob/main/pages/analysis.py) (Statistical Analysis), [`pages/eda.py`](https://github.com/kashishinamdar/datalens/blob/main/pages/eda.py) (Exploratory Analysis)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Analysis Workflow"]
  node_app["App Navigation<br/>[app.py]"]
  node_upload["Upload<br/>[upload.py]"]
  node_overview["Dataset Overview<br/>[overview.py]"]
  node_cleaning_page["Data Cleaning<br/>[cleaning.py]"]
  node_eda["Exploratory Analysis<br/>[eda.py]"]
  node_visualization_page["Visualization Studio<br/>[visualization.py]"]
  node_analysis["Statistical Analysis<br/>[analysis.py]"]
end

subgraph group_shared["Shared Data State"]
  node_session[("Session State<br/>[helpers.py]")]
end

subgraph group_engines["Analytics Engines"]
  node_loader["Dataset Loader<br/>[data_loader.py]"]
  node_cleaning_engine["Cleaning Operations<br/>[cleaning.py]"]
  node_statistics["Statistics Engine<br/>[statistics.py]"]
  node_charts["Chart Engine<br/>[visualization.py]"]
end

subgraph group_outputs["Exports and Reports"]
  node_export_page["Export and Report<br/>[export.py]"]
  node_reporting["Export Builders<br/>[reporting.py]"]
end

node_user(("Analyst"))

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_upload
node_app -->|"routes to"| node_overview
node_app -->|"routes to"| node_cleaning_page
node_app -->|"routes to"| node_eda
node_app -->|"routes to"| node_visualization_page
node_app -->|"routes to"| node_analysis
node_app -->|"routes to"| node_export_page
node_upload -->|"loads file"| node_loader
node_upload -->|"sets dataset"| node_session
node_overview -->|"reads dataset"| node_session
node_cleaning_page -->|"reads and updates"| node_session
node_cleaning_page -->|"applies operations"| node_cleaning_engine
node_eda -->|"reads dataset"| node_session
node_eda -->|"computes summaries"| node_statistics
node_eda -->|"renders charts"| node_charts
node_visualization_page -->|"reads dataset"| node_session
node_visualization_page -->|"builds charts"| node_charts
node_analysis -->|"reads dataset"| node_session
node_analysis -->|"runs tests"| node_statistics
node_analysis -->|"renders correlation"| node_charts
node_analysis -->|"records results"| node_session
node_export_page -->|"reads results"| node_session
node_export_page -->|"builds exports"| node_reporting
node_reporting -->|"bundles figures"| node_charts
node_user -->|"provides dataset"| node_upload

click node_app "https://github.com/kashishinamdar/datalens/blob/main/app.py"
click node_upload "https://github.com/kashishinamdar/datalens/blob/main/pages/upload.py"
click node_overview "https://github.com/kashishinamdar/datalens/blob/main/pages/overview.py"
click node_cleaning_page "https://github.com/kashishinamdar/datalens/blob/main/pages/cleaning.py"
click node_eda "https://github.com/kashishinamdar/datalens/blob/main/pages/eda.py"
click node_visualization_page "https://github.com/kashishinamdar/datalens/blob/main/pages/visualization.py"
click node_analysis "https://github.com/kashishinamdar/datalens/blob/main/pages/analysis.py"
click node_export_page "https://github.com/kashishinamdar/datalens/blob/main/pages/export.py"
click node_loader "https://github.com/kashishinamdar/datalens/blob/main/utils/data_loader.py"
click node_session "https://github.com/kashishinamdar/datalens/blob/main/utils/helpers.py"
click node_cleaning_engine "https://github.com/kashishinamdar/datalens/blob/main/utils/cleaning.py"
click node_statistics "https://github.com/kashishinamdar/datalens/blob/main/utils/statistics.py"
click node_charts "https://github.com/kashishinamdar/datalens/blob/main/utils/visualization.py"
click node_reporting "https://github.com/kashishinamdar/datalens/blob/main/utils/reporting.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_upload,node_overview,node_cleaning_page,node_eda,node_visualization_page,node_analysis toneBlue
class node_session toneAmber
class node_loader,node_cleaning_engine,node_statistics,node_charts toneMint
class node_export_page,node_reporting toneRose
class node_user toneIndigo
```

## Components

### Analysis Workflow

- [App Navigation](https://github.com/kashishinamdar/datalens/blob/main/app.py): `app.py`
- [Upload](https://github.com/kashishinamdar/datalens/blob/main/pages/upload.py): `pages/upload.py`
- [Dataset Overview](https://github.com/kashishinamdar/datalens/blob/main/pages/overview.py): `pages/overview.py`
- [Data Cleaning](https://github.com/kashishinamdar/datalens/blob/main/pages/cleaning.py): `pages/cleaning.py`
- [Exploratory Analysis](https://github.com/kashishinamdar/datalens/blob/main/pages/eda.py): `pages/eda.py`
- [Visualization Studio](https://github.com/kashishinamdar/datalens/blob/main/pages/visualization.py): `pages/visualization.py`
- [Statistical Analysis](https://github.com/kashishinamdar/datalens/blob/main/pages/analysis.py): `pages/analysis.py`

### Shared Data State

- [Session State](https://github.com/kashishinamdar/datalens/blob/main/utils/helpers.py): `utils/helpers.py`

### Analytics Engines

- [Dataset Loader](https://github.com/kashishinamdar/datalens/blob/main/utils/data_loader.py): `utils/data_loader.py`
- [Cleaning Operations](https://github.com/kashishinamdar/datalens/blob/main/utils/cleaning.py): `utils/cleaning.py`
- [Statistics Engine](https://github.com/kashishinamdar/datalens/blob/main/utils/statistics.py): `utils/statistics.py`
- [Chart Engine](https://github.com/kashishinamdar/datalens/blob/main/utils/visualization.py): `utils/visualization.py`

### Exports and Reports

- [Export and Report](https://github.com/kashishinamdar/datalens/blob/main/pages/export.py): `pages/export.py`
- [Export Builders](https://github.com/kashishinamdar/datalens/blob/main/utils/reporting.py): `utils/reporting.py`

### Other components

- **Analyst**

## Connections

- Analyst → App Navigation: uses (evidence: `README.md`)
- App Navigation → Upload: routes to (evidence: `app.py`)
- App Navigation → Dataset Overview: routes to (evidence: `app.py`)
- App Navigation → Data Cleaning: routes to (evidence: `app.py`)
- App Navigation → Exploratory Analysis: routes to (evidence: `app.py`)
- App Navigation → Visualization Studio: routes to (evidence: `app.py`)
- App Navigation → Statistical Analysis: routes to (evidence: `app.py`)
- App Navigation → Export and Report: routes to (evidence: `app.py`)
- Upload → Dataset Loader: loads file (evidence: `pages/upload.py`)
- Upload → Session State: sets dataset (evidence: `pages/upload.py`)
- Dataset Overview → Session State: reads dataset (evidence: `README.md`)
- Data Cleaning → Session State: reads and updates (evidence: `pages/cleaning.py`)
- Data Cleaning → Cleaning Operations: applies operations (evidence: `pages/cleaning.py`)
- Exploratory Analysis → Session State: reads dataset (evidence: `README.md`)
- Exploratory Analysis → Statistics Engine: computes summaries (evidence: `pages/eda.py`)
- Exploratory Analysis → Chart Engine: renders charts (evidence: `pages/eda.py`)
- Visualization Studio → Session State: reads dataset (evidence: `README.md`)
- Visualization Studio → Chart Engine: builds charts (evidence: `pages/visualization.py`)
- Statistical Analysis → Session State: reads dataset (evidence: `README.md`)
- Statistical Analysis → Statistics Engine: runs tests (evidence: `pages/analysis.py`)
- Statistical Analysis → Chart Engine: renders correlation (evidence: `pages/analysis.py`)
- Statistical Analysis → Session State: records results (evidence: `pages/analysis.py`)
- Export and Report → Session State: reads results (evidence: `pages/export.py`)
- Export and Report → Export Builders: builds exports (evidence: `pages/export.py`)
- Export Builders → Chart Engine: bundles figures (evidence: `utils/reporting.py`)
- Analyst → Upload: provides dataset (evidence: `README.md`)
