TriStar
Desktop app · macOS · 2026

TidyDisk

The macOS menu bar app that reclaims the disk space your dependencies cost.

The TidyDisk landing page, "Reclaim every byte your dependencies cost." above a menu bar dropdown showing 5.42 GB of node_modules
Role
Design + Engineering
Timeline
Ongoing · 2026
Stack
Electron · React · TypeScript · Remotion
Problem

node_modules is the heaviest object in the known universe.

Every JavaScript project writes gigabytes of dependencies to disk, and the projects you abandoned two years ago are still holding theirs. No native macOS surface tells you where those gigabytes live or which ones are safe to let go.

TidyDisk lives in the menu bar and keeps watch: every node_modules folder on the machine, the shared pnpm store, and a whole-machine inventory of every package your projects depend on. It rescans on a schedule, nudges you when you cross the gigabyte limit you set, and reclaims space in one click, always to the Trash, never rm -rf.

The landing page's lifecycle explainer comparing npm and yarn's full copy per project against pnpm's single shared store
The explainer that sells the problem: npm writes lodash to disk ten times for ten projects; pnpm stores it once but the store still grows. TidyDisk works both ends.
Decisions

Free to scan. 19 euros to clean.

The riskiest decision was the business model. Scanning is free forever and the source is MIT on GitHub, so the app earns trust before it asks for anything. One-click cleanup is a one-time lifetime license (19 euros founding price, 29 after launch) delivered instantly through Polar, with a 30-day money-back window.

The safety posture is equally deliberate. Deletion goes to the Trash and stays recoverable until you empty it; the app only ever touches node_modules, never source files. On pnpm it reports the bytes you would actually free, counting the shared store once instead of re-counting the same hard-linked packages across a dozen projects, and the store prune never deletes the store itself. Analytics are anonymous (never file paths, project names, or package names) with a one-click opt-out.

The TidyDisk launcher listing stale node_modules folders ranked by last use, 15.2 GB over a 5 GB limit
The launcher: Spotlight-style search, stalest offenders first, full keyboard navigation.
The launcher with a folder row highlighted and its delete button active, one click from the Trash
One click, straight to the Trash. Recoverable until you empty it.
The Packages tab: a whole-machine inventory with unify badges, update arrows, and a security-advisory pill on minimatch
Packages: a computer-wide dependency inventory with version drift and security advisories.
The landing page's Always watching section, a native notification appearing as node_modules cross the set limit
Always watching: scheduled background scans and a native nudge the moment you cross your limit.
The Remotion-rendered launch video, shipped under the app's original name: Clean my node_modules.
Outcome
19 €
Founding lifetime license, 29 € after launch
MIT
Source on GitHub, scan free forever
0
Uses of rm -rf: everything goes to the Trash

TidyDisk shipped as a signed and notarized DMG with the free-scan, paid-clean split intact, and was renamed from its launch title, Clean my node_modules, once the scope grew past node_modules into caches and a whole-machine package inventory. The menu bar stays the product's center of gravity: one glance at the pixel meter tells you where you stand, and everything else (launcher, caches, packages) is one keystroke away.