# aaditb528-web/voluma architecture

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

## Overview

Voluma is a Tauri disk analyzer: users choose a drive, scan it, then explore categorized space and files through tables and a treemap. The frontend invokes Tauri commands; the documented backend scans NTFS MFT data and maintains an in-memory index for lazy data fetching. The graph preserves the documented categorization and allocation capabilities. Backend command handlers and scan internals were not excerpted, so those internal links are marked unverified rather than presented as inspected call paths.

Main entry points: [`app/page.tsx`](https://github.com/aaditb528-web/voluma/blob/main/app/page.tsx) (Scan and Explore), [`app/_lib/api.ts`](https://github.com/aaditb528-web/voluma/blob/main/app/_lib/api.ts) (Tauri API Client), [`src-tauri/src/lib.rs`](https://github.com/aaditb528-web/voluma/blob/main/src-tauri/src/lib.rs) (Command Handlers), [`app/_components/DrivePicker.tsx`](https://github.com/aaditb528-web/voluma/blob/main/app/_components/DrivePicker.tsx) (Drive Picker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Drive and Results UI"]
  node_drive_picker["Drive Picker<br/>[DrivePicker.tsx]"]
  node_main_view["Scan and Explore<br/>[page.tsx]"]
  node_storage_bar["Storage Bar<br/>[StorageBar.tsx]"]
  node_file_table["Virtual File Table<br/>[VirtualTable.tsx]"]
  node_treemap["Interactive Treemap<br/>[Treemap.tsx]"]
  node_context_menu["Context Menu<br/>[ContextMenu.tsx]"]
  node_formatting["Display and Categories<br/>[format.ts]"]
end

subgraph group_bridge["Frontend Bridge"]
  node_api["Tauri API Client<br/>[api.ts]"]
end

subgraph group_backend["Scan and Index"]
  node_tauri_commands["Command Handlers<br/>[lib.rs]"]
  node_index[("In-Memory Index<br/>[lib.rs]")]
end

subgraph group_mft["NTFS Parsing"]
  node_volume["Volume Access<br/>[volume.rs]"]
  node_mft_scan["Raw MFT Scan<br/>[mod.rs]"]
  node_record_read["Record Reading<br/>[engine.rs]"]
  node_entry_build["Entry and Allocation<br/>[entry.rs]"]
  node_data_runs["Data Run Decoder<br/>[data_run.rs]"]
end

node_user(("User"))

node_user -->|"selects drive"| node_drive_picker
node_user -->|"explores results"| node_main_view
node_drive_picker -->|"requests drives"| node_api
node_main_view -->|"requests scan and data"| node_api
node_api -->|"invokes commands"| node_tauri_commands
node_tauri_commands -.->|"serves indexed data"| node_index
node_tauri_commands -.->|"opens selected volume"| node_volume
node_volume -.->|"provides raw MFT"| node_mft_scan
node_mft_scan -.->|"scans records"| node_record_read
node_record_read -.->|"parses records"| node_entry_build
node_entry_build -->|"decodes allocation"| node_data_runs
node_main_view -->|"renders categories"| node_storage_bar
node_main_view -->|"renders file results"| node_file_table
node_main_view -->|"renders treemap"| node_treemap
node_main_view -->|"offers actions"| node_context_menu
node_storage_bar -->|"formats values"| node_formatting
node_main_view -->|"uses category rules"| node_formatting
node_treemap -->|"fetches treemap data"| node_api
node_main_view -.->|"fetches indexed results"| node_index

click node_drive_picker "https://github.com/aaditb528-web/voluma/blob/main/app/_components/DrivePicker.tsx"
click node_main_view "https://github.com/aaditb528-web/voluma/blob/main/app/page.tsx"
click node_storage_bar "https://github.com/aaditb528-web/voluma/blob/main/app/_components/StorageBar.tsx"
click node_file_table "https://github.com/aaditb528-web/voluma/blob/main/app/_components/VirtualTable.tsx"
click node_treemap "https://github.com/aaditb528-web/voluma/blob/main/app/_components/Treemap.tsx"
click node_context_menu "https://github.com/aaditb528-web/voluma/blob/main/app/_components/ContextMenu.tsx"
click node_formatting "https://github.com/aaditb528-web/voluma/blob/main/app/_lib/format.ts"
click node_api "https://github.com/aaditb528-web/voluma/blob/main/app/_lib/api.ts"
click node_tauri_commands "https://github.com/aaditb528-web/voluma/blob/main/src-tauri/src/lib.rs"
click node_index "https://github.com/aaditb528-web/voluma/blob/main/src-tauri/src/lib.rs"
click node_volume "https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/volume.rs"
click node_mft_scan "https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/raw_mft/mod.rs"
click node_record_read "https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/raw_mft/serial/engine.rs"
click node_entry_build "https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/raw_mft/entry_build/entry.rs"
click node_data_runs "https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/raw_mft/layout/data_run.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_drive_picker,node_main_view,node_storage_bar,node_file_table,node_treemap,node_context_menu,node_formatting,node_user toneBlue
class node_api toneAmber
class node_tauri_commands,node_index toneMint
class node_volume,node_mft_scan,node_record_read,node_entry_build,node_data_runs toneRose
```

## Components

### Drive and Results UI

- [Drive Picker](https://github.com/aaditb528-web/voluma/blob/main/app/_components/DrivePicker.tsx): `app/_components/DrivePicker.tsx`
- [Scan and Explore](https://github.com/aaditb528-web/voluma/blob/main/app/page.tsx): `app/page.tsx`
- [Storage Bar](https://github.com/aaditb528-web/voluma/blob/main/app/_components/StorageBar.tsx): `app/_components/StorageBar.tsx`
- [Virtual File Table](https://github.com/aaditb528-web/voluma/blob/main/app/_components/VirtualTable.tsx): `app/_components/VirtualTable.tsx`
- [Interactive Treemap](https://github.com/aaditb528-web/voluma/blob/main/app/_components/Treemap.tsx): `app/_components/Treemap.tsx`
- [Context Menu](https://github.com/aaditb528-web/voluma/blob/main/app/_components/ContextMenu.tsx): `app/_components/ContextMenu.tsx`
- [Display and Categories](https://github.com/aaditb528-web/voluma/blob/main/app/_lib/format.ts): `app/_lib/format.ts`

### Frontend Bridge

- [Tauri API Client](https://github.com/aaditb528-web/voluma/blob/main/app/_lib/api.ts): `app/_lib/api.ts`

### Scan and Index

- [Command Handlers](https://github.com/aaditb528-web/voluma/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [In-Memory Index](https://github.com/aaditb528-web/voluma/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`

### NTFS Parsing

- [Volume Access](https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/volume.rs): `src-tauri/crates/ntfs-mft/src/volume.rs`
- [Raw MFT Scan](https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/raw_mft/mod.rs): `src-tauri/crates/ntfs-mft/src/raw_mft/mod.rs`
- [Record Reading](https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/raw_mft/serial/engine.rs): `src-tauri/crates/ntfs-mft/src/raw_mft/serial/engine.rs`
- [Entry and Allocation](https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/raw_mft/entry_build/entry.rs): `src-tauri/crates/ntfs-mft/src/raw_mft/entry_build/entry.rs`
- [Data Run Decoder](https://github.com/aaditb528-web/voluma/blob/main/src-tauri/crates/ntfs-mft/src/raw_mft/layout/data_run.rs): `src-tauri/crates/ntfs-mft/src/raw_mft/layout/data_run.rs`

### Other components

- **User**

## Connections

- User → Drive Picker: selects drive (evidence: `app/_components/DrivePicker.tsx`)
- User → Scan and Explore: explores results (evidence: `app/page.tsx`)
- Drive Picker → Tauri API Client: requests drives (evidence: `app/_components/DrivePicker.tsx`)
- Scan and Explore → Tauri API Client: requests scan and data (evidence: `app/page.tsx`)
- Tauri API Client → Command Handlers: invokes commands (evidence: `app/_lib/api.ts`)
- Command Handlers → In-Memory Index: serves indexed data (evidence: `README.md`)
- Command Handlers → Volume Access: opens selected volume (evidence: `README.md`)
- Volume Access → Raw MFT Scan: provides raw MFT (evidence: `src-tauri/crates/ntfs-mft/src/lib.rs`)
- Raw MFT Scan → Record Reading: scans records (evidence: `src-tauri/crates/ntfs-mft/src/raw_mft/mod.rs`)
- Record Reading → Entry and Allocation: parses records (evidence: `src-tauri/crates/ntfs-mft/src/raw_mft/serial/engine.rs`)
- Entry and Allocation → Data Run Decoder: decodes allocation (evidence: `src-tauri/crates/ntfs-mft/src/raw_mft/entry_build/entry.rs`)
- Scan and Explore → Storage Bar: renders categories (evidence: `app/page.tsx`)
- Scan and Explore → Virtual File Table: renders file results (evidence: `app/page.tsx`)
- Scan and Explore → Interactive Treemap: renders treemap (evidence: `app/page.tsx`)
- Scan and Explore → Context Menu: offers actions (evidence: `app/page.tsx`)
- Storage Bar → Display and Categories: formats values (evidence: `app/_components/StorageBar.tsx`)
- Scan and Explore → Display and Categories: uses category rules (evidence: `app/page.tsx`)
- Interactive Treemap → Tauri API Client: fetches treemap data (evidence: `app/_components/Treemap.tsx`)
- Scan and Explore → In-Memory Index: fetches indexed results (evidence: `README.md`)
