# sritanvi10/data-cleaning-agent architecture

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

- Interactive diagram: https://gitdiagram.com/sritanvi10/data-cleaning-agent
- Repository: https://github.com/sritanvi10/data-cleaning-agent

## Overview

Data Mining Lab is a browser-based dataset-cleaning and classic data-mining application. Users upload or load a dataset, inspect its profile, optionally accept or edit cleaning advice, apply reversible transformations to a working copy, then compare, export, or run association, tree-classification, and clustering analyses. The graph shows the React/API boundary and the backend’s dataset, cleaning, and mining responsibilities. Backend service-to-service links follow the documented architecture and indexed imports; unsampled implementation details are not inferred.

Main entry points: [`backend/app/api/routes.py`](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/api/routes.py) (Cleaning HTTP routes), [`backend/app/api/mining_routes.py`](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/api/mining_routes.py) (Mining HTTP routes), [`frontend/src/App.tsx`](https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/App.tsx) (Page shell), [`frontend/src/services/api.ts`](https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/services/api.ts) (Typed API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend experience"]
  node_app["Page shell<br/>[App.tsx]"]
  node_state["App state<br/>[useApp.tsx]"]
  node_api_client["Typed API client<br/>[api.ts]"]
  node_clean_pages["Cleaning pages<br/>[Profiling.tsx]"]
  node_mining_pages["Mining pages<br/>[Association.tsx]"]
  node_mining_viz["Mining visualizations<br/>[mining.tsx]"]
end

subgraph group_api["HTTP API"]
  node_http["Cleaning HTTP routes<br/>[routes.py]"]
  node_mining_http["Mining HTTP routes<br/>[mining_routes.py]"]
end

subgraph group_dataset["Dataset workspace"]
  node_loader["Dataset loader<br/>[loader.py]"]
  node_sessions[("Dataset sessions<br/>[workspace.py]")]
end

subgraph group_cleaning["Cleaning services"]
  node_profiler["Profiler and quality<br/>[profiler.py]"]
  node_validation["Validation rules<br/>[validation.py]"]
  node_advice["Cleaning advice<br/>[recommender.py]"]
  node_transforms["Transformation engine<br/>[transforms.py]"]
  node_comparison["Before-after comparison<br/>[comparison.py]"]
  node_export["Data export<br/>[exporter.py]"]
  node_reports["Audit reports<br/>[reporting.py]"]
end

subgraph group_mining["Mining services"]
  node_association["Association mining<br/>[association.py]"]
  node_trees["Decision trees<br/>[trees.py]"]
  node_clustering["Clustering<br/>[clustering.py]"]
  node_samples["Bundled samples<br/>[samples.py]"]
end

node_user(("Dataset user"))

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_clean_pages
node_app -->|"routes to"| node_mining_pages
node_clean_pages -->|"uses"| node_state
node_mining_pages -->|"uses"| node_state
node_mining_pages -->|"renders"| node_mining_viz
node_state -->|"calls"| node_api_client
node_api_client -->|"HTTP requests"| node_http
node_api_client -->|"HTTP requests"| node_mining_http
node_http -->|"loads uploads"| node_loader
node_http -->|"delegates dataset actions"| node_sessions
node_mining_http -->|"reads working copy"| node_sessions
node_mining_http -->|"loads samples"| node_samples
node_mining_http -->|"runs association"| node_association
node_http -->|"profiles datasets"| node_profiler
node_profiler -->|"applies rules"| node_validation
node_http -->|"requests recommendations"| node_advice
node_http -->|"applies operations"| node_transforms
node_sessions -->|"replays pipeline"| node_transforms
node_http -->|"builds comparison"| node_comparison
node_http -->|"exports data"| node_export
node_http -->|"generates reports"| node_reports
node_mining_http -->|"runs classification"| node_trees
node_mining_http -->|"runs clustering"| node_clustering

click node_app "https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/App.tsx"
click node_state "https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/hooks/useApp.tsx"
click node_api_client "https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/services/api.ts"
click node_clean_pages "https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/pages/Profiling.tsx"
click node_mining_pages "https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/pages/Association.tsx"
click node_mining_viz "https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/components/mining.tsx"
click node_http "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/api/routes.py"
click node_mining_http "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/api/mining_routes.py"
click node_loader "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/loader.py"
click node_sessions "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/workspace.py"
click node_profiler "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/profiler.py"
click node_validation "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/validation.py"
click node_advice "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/recommender.py"
click node_transforms "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/transforms.py"
click node_comparison "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/comparison.py"
click node_export "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/exporter.py"
click node_reports "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/reporting.py"
click node_association "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/mining/association.py"
click node_trees "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/mining/trees.py"
click node_clustering "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/mining/clustering.py"
click node_samples "https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/mining/samples.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_state,node_api_client,node_clean_pages,node_mining_pages,node_mining_viz,node_user toneBlue
class node_http,node_mining_http toneAmber
class node_loader,node_sessions toneMint
class node_profiler,node_validation,node_advice,node_transforms,node_comparison,node_export,node_reports toneRose
class node_association,node_trees,node_clustering,node_samples toneIndigo
```

## Components

### Frontend experience

- [Page shell](https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [App state](https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/hooks/useApp.tsx): `frontend/src/hooks/useApp.tsx`
- [Typed API client](https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/services/api.ts): `frontend/src/services/api.ts`
- [Cleaning pages](https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/pages/Profiling.tsx): `frontend/src/pages/Profiling.tsx`
- [Mining pages](https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/pages/Association.tsx): `frontend/src/pages/Association.tsx`
- [Mining visualizations](https://github.com/sritanvi10/data-cleaning-agent/blob/main/frontend/src/components/mining.tsx): `frontend/src/components/mining.tsx`

### HTTP API

- [Cleaning HTTP routes](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/api/routes.py): `backend/app/api/routes.py`
- [Mining HTTP routes](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/api/mining_routes.py): `backend/app/api/mining_routes.py`

### Dataset workspace

- [Dataset loader](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/loader.py): `backend/app/services/loader.py`
- [Dataset sessions](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/workspace.py): `backend/app/services/workspace.py`

### Cleaning services

- [Profiler and quality](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/profiler.py): `backend/app/services/profiler.py`
- [Validation rules](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/validation.py): `backend/app/services/validation.py`
- [Cleaning advice](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/recommender.py): `backend/app/services/recommender.py`
- [Transformation engine](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/transforms.py): `backend/app/services/transforms.py`
- [Before-after comparison](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/comparison.py): `backend/app/services/comparison.py`
- [Data export](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/exporter.py): `backend/app/services/exporter.py`
- [Audit reports](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/reporting.py): `backend/app/services/reporting.py`

### Mining services

- [Association mining](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/mining/association.py): `backend/app/services/mining/association.py`
- [Decision trees](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/mining/trees.py): `backend/app/services/mining/trees.py`
- [Clustering](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/mining/clustering.py): `backend/app/services/mining/clustering.py`
- [Bundled samples](https://github.com/sritanvi10/data-cleaning-agent/blob/main/backend/app/services/mining/samples.py): `backend/app/services/mining/samples.py`

### Other components

- **Dataset user**

## Connections

- Dataset user → Page shell: uses
- Page shell → Cleaning pages: routes to (evidence: `frontend/src/App.tsx`)
- Page shell → Mining pages: routes to (evidence: `frontend/src/App.tsx`)
- Cleaning pages → App state: uses (evidence: `frontend/src/pages/Profiling.tsx`)
- Mining pages → App state: uses (evidence: `frontend/src/pages/Association.tsx`)
- Mining pages → Mining visualizations: renders (evidence: `frontend/src/pages/Association.tsx`)
- App state → Typed API client: calls (evidence: `frontend/src/hooks/useApp.tsx`)
- Typed API client → Cleaning HTTP routes: HTTP requests
- Typed API client → Mining HTTP routes: HTTP requests
- Cleaning HTTP routes → Dataset loader: loads uploads (evidence: `backend/app/api/routes.py`)
- Cleaning HTTP routes → Dataset sessions: delegates dataset actions (evidence: `backend/app/api/routes.py`)
- Mining HTTP routes → Dataset sessions: reads working copy (evidence: `backend/app/api/mining_routes.py`)
- Mining HTTP routes → Bundled samples: loads samples (evidence: `backend/app/api/mining_routes.py`)
- Mining HTTP routes → Association mining: runs association (evidence: `backend/app/api/mining_routes.py`)
- Cleaning HTTP routes → Profiler and quality: profiles datasets
- Profiler and quality → Validation rules: applies rules (evidence: `backend/app/services/profiler.py`)
- Cleaning HTTP routes → Cleaning advice: requests recommendations (evidence: `backend/app/api/routes.py`)
- Cleaning HTTP routes → Transformation engine: applies operations (evidence: `backend/app/api/routes.py`)
- Dataset sessions → Transformation engine: replays pipeline (evidence: `backend/app/services/workspace.py`)
- Cleaning HTTP routes → Before-after comparison: builds comparison (evidence: `backend/app/api/routes.py`)
- Cleaning HTTP routes → Data export: exports data (evidence: `backend/app/api/routes.py`)
- Cleaning HTTP routes → Audit reports: generates reports (evidence: `backend/app/api/routes.py`)
- Mining HTTP routes → Decision trees: runs classification (evidence: `backend/app/api/mining_routes.py`)
- Mining HTTP routes → Clustering: runs clustering (evidence: `backend/app/api/mining_routes.py`)
