Skip to content

TMHSDigital/system-cleaner

Repository files navigation

System Health Tool

System Health Tool

Reclaim disk space, inspect memory pressure, trim startup load, and act on system recommendations from one native desktop app.


License   Version   Tauri   React   Rust


No telemetry · Native desktop shell · Safe-by-default cleanup · Open source


Download   |   Architecture   |   Build from source   |   Contributing


What it does

Module Capabilities
Overview Desktop-style summary shell with health score, reclaimable space, memory pressure, startup load, and capacity tracking.
Disk Cleanup Review workflow for temp files, browser caches, crash dumps, Windows Update leftovers, and developer caches. Filtering never mutates selection.
Memory Inspector for RAM pressure, top memory consumers, grouped process table, VM inventory, and problem-process heuristics.
Startup Grouped startup manager with impact tiers, recommendation badges, and reversible enable/disable switches.
Recommendations Priority-sorted action queue with direct navigation into the relevant screen.

UI architecture

The current frontend is built around a labeled nav rail, per-screen command bars, shared UI primitives, and screen hooks:

  • App.tsx is a thin composition layer that switches tabs and renders the shell.
  • src/components/ErrorBoundary.tsx catches render crashes and shows a styled recovery screen.
  • src/components/layout/ contains shell-level pieces such as the nav rail.
  • src/components/ui/ contains reusable cards, rows, badges, buttons, progress bars, tooltips, and loading/empty states.
  • src/hooks/ owns screen data and side effects so the screen components stay mostly presentational.

Every screen explicitly handles loading, empty, error, and healthy states. Hooks expose an error field so screens can render retry surfaces instead of silently dropping failures.

Safety model

Important

Cleanup always stays review-first. Every target is listed with a path, category, size, and risk level before deletion.

Risk Policy
Safe Temp files, caches, crash dumps, and similar data that can be regenerated automatically. Quick Clean only uses this tier.
Moderate Developer caches and Windows Update leftovers that can be re-downloaded or rebuilt later. These require explicit selection.
Advanced Reserved for future cleanup targets. The filter exists in the UI today, but the current backend does not emit Advanced items.

Additional guarantees:

  • Safe items are preselected in Disk Cleanup.
  • Switching filters does not change the current selection.
  • Quick Clean on the Overview screen only submits Safe items.
  • System processes stay protected in the Memory screen.
  • Startup changes are reversible because they only change launch-on-sign-in behavior.

Full policy: docs/SAFETY.md

Install

Grab the latest build from Releases.

Artifact Notes
System Cleaner_x.x.x_x64-setup.exe NSIS installer
System Cleaner_x.x.x_x64_en-US.msi MSI package

Note

Admin elevation is requested on launch because the app reads protected temp locations, enumerates system processes, and manages startup entries.

Build from source

Node.js >= 18 · Rust >= 1.85 · Windows 10/11 · WebView2 Runtime

git clone https://github.com/TMHSDigital/system-cleaner.git
cd system-cleaner
npm install

npm run dev              # browser preview with mock API data
npm run tauri:dev        # real desktop app with Rust backend + hot reload
npm run tauri:build      # production bundle

Development modes

Command Mode Notes
npm run dev Browser preview Uses src/lib/mockApi.ts when Tauri runtime is unavailable. Useful for UI iteration and browser automation.
npm run tauri:dev Real desktop app Uses the real Rust backend via Tauri invoke() calls. Use this before shipping cleanup, memory, or startup changes.
npm run tauri:build Production build Outputs installers and release binaries under src-tauri/target/release/bundle/.

System architecture

flowchart TD
    subgraph Frontend ["React 19 + TypeScript + Tailwind v4"]
        App["App shell + Nav rail"]
        UI["Shared UI primitives"]
        Hooks["Screen hooks"]
        Api["api.ts"]
        Mock["mockApi.ts (dev browser only)"]

        App --> UI
        App --> Hooks
        Hooks --> Api
        Api --> Mock
    end

    subgraph Backend ["Rust backend — Tauri 2"]
        Disk["disk.rs"]
        Memory["memory.rs"]
        Startup["startup.rs"]
        Cleanup["cleanup.rs"]
        Recommendations["recommendations.rs"]
    end

    Api -- "invoke() in Tauri runtime" --> Disk
    Api -- "invoke() in Tauri runtime" --> Memory
    Api -- "invoke() in Tauri runtime" --> Startup
    Api -- "invoke() in Tauri runtime" --> Cleanup
    Api -- "invoke() in Tauri runtime" --> Recommendations
Loading

Full architecture docs: docs/ARCHITECTURE.md

Tech stack

Frontend React 19 · TypeScript 5.9 · Tailwind CSS v4
UI Framer Motion · Radix UI primitives · Lucide React · clsx · tailwind-merge
Backend Tauri 2 · Rust · sysinfo · winreg · windows-rs
Build Vite 7 · Cargo · tauri-cli
Project structure
src/
├── App.tsx
├── index.css
├── main.tsx
├── vite-env.d.ts
├── components/
│   ├── Dashboard.tsx
│   ├── DiskCleanup.tsx
│   ├── ErrorBoundary.tsx
│   ├── MemoryPanel.tsx
│   ├── Recommendations.tsx
│   ├── StartupManager.tsx
│   ├── layout/
│   │   └── NavRail.tsx
│   └── ui/
│       ├── AppCheckbox.tsx
│       ├── AppSwitch.tsx
│       ├── Button.tsx
│       ├── DataRow.tsx
│       ├── EmptyState.tsx
│       ├── LoadingState.tsx
│       ├── MetricCard.tsx
│       ├── PageHeader.tsx
│       ├── ProgressBar.tsx
│       ├── SectionCard.tsx
│       ├── StatusBadge.tsx
│       ├── StickyActionBar.tsx
│       └── Tooltip.tsx
├── hooks/
│   ├── useDashboardData.ts
│   ├── useDiskCleanup.ts
│   ├── useMemoryData.ts
│   ├── useRecommendations.ts
│   └── useStartupData.ts
├── lib/
│   ├── api.ts
│   ├── cn.ts
│   ├── format.ts
│   ├── mockApi.ts
│   └── types.ts
└── styles/
    └── tokens.css

src-tauri/
├── src/
│   ├── lib.rs
│   ├── main.rs
│   └── commands/
│       ├── cleanup.rs
│       ├── disk.rs
│       ├── memory.rs
│       ├── recommendations.rs
│       └── startup.rs
├── tauri.conf.json
├── Cargo.toml
└── icons/

Contributing

PRs are welcome. Start with docs/CONTRIBUTING.md for setup, workflow, and validation guidance.

About

Lightweight Windows desktop app that scans, diagnoses, and cleans up system issues. Built with Tauri 2, React 19, and Rust.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors