# yusufky63/reclaim-cleaner architecture

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

## Overview

ReClaim Cleaner is a desktop disk-space analyzer and cleanup tool. Users inspect recommendations or scan a location, review risk-ranked findings, then explicitly confirm a cleanup; the engine enforces safety rules while scanning and deleting. The UI also exposes space maps, hidden-space accounting, and specialized scans for apps, developer artifacts, AI models, downloads, games, duplicates, and more. The README documents the Rust engine and Tauri/React stack; sampled code shows UI routing, API invocation, and parts of scanning and cleaning, but not the full command-to-engine wiring.

Main entry points: [`crates/core/src/clean.rs`](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/clean.rs) (Cleaner), [`src/lib/api.ts`](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/lib/api.ts) (Desktop API), [`crates/core/src/walk.rs`](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/walk.rs) (Directory walker), [`src/App.tsx`](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/App.tsx) (App routing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Desktop experience"]
  node_app["App routing<br/>[App.tsx]"]
  node_overview["Overview<br/>[Overview.tsx]"]
  node_cleaner["Junk cleaner<br/>[Cleaner.tsx]"]
  node_explorer["Space map<br/>[Explorer.tsx]"]
  node_special_pages["Specialized scans"]
  node_apps_page["Apps manager<br/>[Apps.tsx]"]
  node_state["App state<br/>[app.ts]"]
  node_api["Desktop API<br/>[api.ts]"]
  node_treemap["Treemap view<br/>[Treemap.tsx]"]
  node_hidden["Hidden space panel<br/>[HiddenSpace.tsx]"]
  node_recommend["Recommendations<br/>[recommend.ts]"]
  node_tauri["Tauri command host<br/>[lib.rs]"]
end

subgraph group_analysis["Space analysis"]
  node_walker["Directory walker<br/>[walk.rs]"]
  node_fsmeta["Filesystem metadata<br/>[fsmeta.rs]"]
  node_paths["Scan paths<br/>[paths.rs]"]
  node_explorer_engine["Explorer analysis<br/>[explorer.rs]"]
  node_duplicates["Duplicate finder<br/>[duplicates.rs]"]
  node_empty["Empty folders<br/>[empty.rs]"]
  node_organize["Project analysis<br/>[organize.rs]"]
end

subgraph group_cleanup["Cleanup engine"]
  node_rules["Safety rules<br/>[rules.rs]"]
  node_junk["Junk locations<br/>[junk.rs]"]
  node_clean["Cleaner<br/>[clean.rs]"]
  node_job["Job progress<br/>[job.rs]"]
  node_mounts["Volume operations<br/>[mounts.rs]"]
end

subgraph group_inventory["System inventory"]
  node_system["System inventory<br/>[system.rs]"]
  node_apps_engine["Installed apps<br/>[apps.rs]"]
  node_leftovers["App leftovers<br/>[leftovers.rs]"]
  node_steam["Steam libraries<br/>[steam.rs]"]
  node_locks["File locks<br/>[locks.rs]"]
  node_history["Cleanup history<br/>[history.rs]"]
  node_settings["Settings<br/>[settings.rs]"]
  node_store["Persistent state<br/>[state.rs]"]
end

node_user(("Desktop user"))

node_user -->|"opens"| node_app
node_app -->|"routes to"| node_overview
node_app -->|"routes to"| node_explorer
node_app -->|"boots"| node_state
node_overview -->|"requests"| node_recommend
node_cleaner -->|"requests"| node_recommend
node_explorer -->|"renders"| node_treemap
node_explorer -->|"renders"| node_hidden
node_apps_page -->|"invokes"| node_api
node_state -->|"invokes"| node_api
node_overview -->|"invokes"| node_api
node_cleaner -->|"invokes"| node_api
node_explorer -->|"invokes"| node_api
node_api -->|"invokes commands"| node_tauri
node_tauri -.->|"dispatches"| node_clean
node_tauri -.->|"dispatches"| node_system
node_walker -->|"reads metadata"| node_fsmeta
node_walker -->|"queries mounts"| node_mounts
node_walker -->|"uses scan roots"| node_paths
node_clean -->|"checks safety"| node_rules
node_clean -->|"uses rules"| node_junk
node_clean -->|"scans targets"| node_walker
node_clean -->|"checks metadata"| node_fsmeta
node_clean -->|"uses operations"| node_mounts
node_clean -->|"reports progress"| node_job
node_system -.->|"uses inventory"| node_steam
node_paths -->|"uses locations"| node_leftovers
node_paths -->|"uses libraries"| node_steam
node_paths -->|"uses platform data"| node_system
node_apps_engine -->|"uses system data"| node_system
node_apps_engine -->|"scans locations"| node_walker
node_overview -->|"shows accounting"| node_hidden
node_user -.->|"selects scan"| node_special_pages
node_user -->|"reviews cleanup"| node_cleaner
node_cleaner -.->|"requests confirmed clean"| node_clean
node_tauri -->|"uses state"| node_store

click node_app "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/App.tsx"
click node_overview "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/pages/Overview.tsx"
click node_cleaner "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/pages/Cleaner.tsx"
click node_explorer "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/pages/Explorer.tsx"
click node_special_pages "https://github.com/yusufky63/reclaim-cleaner/tree/main/src/pages"
click node_apps_page "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/pages/Apps.tsx"
click node_state "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/store/app.ts"
click node_api "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/lib/api.ts"
click node_treemap "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/components/Treemap.tsx"
click node_hidden "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/components/HiddenSpace.tsx"
click node_recommend "https://github.com/yusufky63/reclaim-cleaner/blob/main/src/lib/recommend.ts"
click node_tauri "https://github.com/yusufky63/reclaim-cleaner/blob/main/src-tauri/src/lib.rs"
click node_walker "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/walk.rs"
click node_fsmeta "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/fsmeta.rs"
click node_paths "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/paths.rs"
click node_explorer_engine "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/explorer.rs"
click node_duplicates "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/duplicates.rs"
click node_empty "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/empty.rs"
click node_organize "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/organize.rs"
click node_rules "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/rules.rs"
click node_junk "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/junk.rs"
click node_clean "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/clean.rs"
click node_job "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/job.rs"
click node_mounts "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/mounts.rs"
click node_system "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/system.rs"
click node_apps_engine "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/apps.rs"
click node_leftovers "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/leftovers.rs"
click node_steam "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/steam.rs"
click node_locks "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/locks.rs"
click node_history "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/history.rs"
click node_settings "https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/settings.rs"
click node_store "https://github.com/yusufky63/reclaim-cleaner/blob/main/src-tauri/src/state.rs"

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_overview,node_cleaner,node_explorer,node_special_pages,node_apps_page,node_state,node_api,node_treemap,node_hidden,node_recommend,node_tauri,node_user toneBlue
class node_walker,node_fsmeta,node_paths,node_explorer_engine,node_duplicates,node_empty,node_organize toneAmber
class node_rules,node_junk,node_clean,node_job,node_mounts toneMint
class node_system,node_apps_engine,node_leftovers,node_steam,node_locks,node_history,node_settings,node_store toneRose
```

## Components

### Desktop experience

- [App routing](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/App.tsx): `src/App.tsx`
- [Overview](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/pages/Overview.tsx): `src/pages/Overview.tsx`
- [Junk cleaner](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/pages/Cleaner.tsx): `src/pages/Cleaner.tsx`
- [Space map](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/pages/Explorer.tsx): `src/pages/Explorer.tsx`
- [Specialized scans](https://github.com/yusufky63/reclaim-cleaner/tree/main/src/pages): `src/pages`
- [Apps manager](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/pages/Apps.tsx): `src/pages/Apps.tsx`
- [App state](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/store/app.ts): `src/store/app.ts`
- [Desktop API](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/lib/api.ts): `src/lib/api.ts`
- [Treemap view](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/components/Treemap.tsx): `src/components/Treemap.tsx`
- [Hidden space panel](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/components/HiddenSpace.tsx): `src/components/HiddenSpace.tsx`
- [Recommendations](https://github.com/yusufky63/reclaim-cleaner/blob/main/src/lib/recommend.ts): `src/lib/recommend.ts`
- [Tauri command host](https://github.com/yusufky63/reclaim-cleaner/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`

### Space analysis

- [Directory walker](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/walk.rs): `crates/core/src/walk.rs`
- [Filesystem metadata](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/fsmeta.rs): `crates/core/src/fsmeta.rs`
- [Scan paths](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/paths.rs): `crates/core/src/paths.rs`
- [Explorer analysis](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/explorer.rs): `crates/core/src/explorer.rs`
- [Duplicate finder](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/duplicates.rs): `crates/core/src/duplicates.rs`
- [Empty folders](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/empty.rs): `crates/core/src/empty.rs`
- [Project analysis](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/organize.rs): `crates/core/src/organize.rs`

### Cleanup engine

- [Safety rules](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/rules.rs): `crates/core/src/rules.rs`
- [Junk locations](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/junk.rs): `crates/core/src/junk.rs`
- [Cleaner](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/clean.rs): `crates/core/src/clean.rs`
- [Job progress](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/job.rs): `crates/core/src/job.rs`
- [Volume operations](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/mounts.rs): `crates/core/src/mounts.rs`

### System inventory

- [System inventory](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/system.rs): `crates/core/src/system.rs`
- [Installed apps](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/apps.rs): `crates/core/src/apps.rs`
- [App leftovers](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/leftovers.rs): `crates/core/src/leftovers.rs`
- [Steam libraries](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/steam.rs): `crates/core/src/steam.rs`
- [File locks](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/locks.rs): `crates/core/src/locks.rs`
- [Cleanup history](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/history.rs): `crates/core/src/history.rs`
- [Settings](https://github.com/yusufky63/reclaim-cleaner/blob/main/crates/core/src/settings.rs): `crates/core/src/settings.rs`
- [Persistent state](https://github.com/yusufky63/reclaim-cleaner/blob/main/src-tauri/src/state.rs): `src-tauri/src/state.rs`

### Other components

- **Desktop user**

## Connections

- Desktop user → App routing: opens (evidence: `README.md`)
- App routing → Overview: routes to (evidence: `src/App.tsx`)
- App routing → Space map: routes to (evidence: `src/App.tsx`)
- App routing → App state: boots (evidence: `src/App.tsx`)
- Overview → Recommendations: requests (evidence: `src/pages/Overview.tsx`)
- Junk cleaner → Recommendations: requests (evidence: `src/pages/Cleaner.tsx`)
- Space map → Treemap view: renders (evidence: `src/pages/Explorer.tsx`)
- Space map → Hidden space panel: renders (evidence: `src/pages/Explorer.tsx`)
- Apps manager → Desktop API: invokes (evidence: `src/pages/Apps.tsx`)
- App state → Desktop API: invokes (evidence: `src/store/app.ts`)
- Overview → Desktop API: invokes (evidence: `src/pages/Overview.tsx`)
- Junk cleaner → Desktop API: invokes (evidence: `src/pages/Cleaner.tsx`)
- Space map → Desktop API: invokes (evidence: `src/pages/Explorer.tsx`)
- Desktop API → Tauri command host: invokes commands (evidence: `src/lib/api.ts`)
- Tauri command host → Cleaner: dispatches
- Tauri command host → System inventory: dispatches
- Directory walker → Filesystem metadata: reads metadata (evidence: `crates/core/src/walk.rs`)
- Directory walker → Volume operations: queries mounts (evidence: `crates/core/src/walk.rs`)
- Directory walker → Scan paths: uses scan roots (evidence: `crates/core/src/walk.rs`)
- Cleaner → Safety rules: checks safety (evidence: `crates/core/src/clean.rs`)
- Cleaner → Junk locations: uses rules (evidence: `crates/core/src/clean.rs`)
- Cleaner → Directory walker: scans targets (evidence: `crates/core/src/clean.rs`)
- Cleaner → Filesystem metadata: checks metadata (evidence: `crates/core/src/clean.rs`)
- Cleaner → Volume operations: uses operations (evidence: `crates/core/src/clean.rs`)
- Cleaner → Job progress: reports progress (evidence: `crates/core/src/clean.rs`)
- System inventory → Steam libraries: uses inventory
- Scan paths → App leftovers: uses locations (evidence: `crates/core/src/paths.rs`)
- Scan paths → Steam libraries: uses libraries (evidence: `crates/core/src/paths.rs`)
- Scan paths → System inventory: uses platform data (evidence: `crates/core/src/paths.rs`)
- Installed apps → System inventory: uses system data (evidence: `crates/core/src/apps.rs`)
- Installed apps → Directory walker: scans locations (evidence: `crates/core/src/apps.rs`)
- Overview → Hidden space panel: shows accounting (evidence: `src/pages/Overview.tsx`)
- Desktop user → Specialized scans: selects scan (evidence: `README.md`)
- Desktop user → Junk cleaner: reviews cleanup (evidence: `README.md`)
- Junk cleaner → Cleaner: requests confirmed clean
- Tauri command host → Persistent state: uses state (evidence: `src-tauri/src/lib.rs`)
