Skip to content
Back to Projects
FeaturedActive

Shelve

Every developer who switches Macs spends hours reinstalling tools they forgot they had. Shelve solves that. It scans your Mac, lets you pick exactly what to back up via interactive checkboxes, writes a portable shelve.json config, and restores everything on a new machine with a single command. Built entirely in bash 3.2 — the version shipped with macOS — so it runs on any Mac with no dependencies. v0.1.0 ships three stable commands: shelve save, shelve restore, and shelve fresh for brand new machines. The roadmap extends to sync via GitHub, environment drift detection, and team onboarding presets.

Creator & MaintainerStarted Jan 20250 stars0 forks

// Tech Stack

BashGitHub ActionsHomebrewmacOS

Key Features

  • shelve save — scans Mac, interactive checkboxes, writes shelve.json config
  • shelve restore — reads config, interactive checkboxes, installs everything
  • shelve fresh — guided wizard for brand new Macs with no existing backup
  • Homebrew formulae and casks — save and restore
  • Dotfiles backup and restore
  • Manual install detection — nvm, rustup, oh-my-zsh and more
  • Role detection — browser, terminal, editor
  • One-liner install via curl
  • GitHub Actions CI — clean macOS install test on every push

Challenges Faced

  • Bash 3.2 compatibility — no associative arrays, no modern bash features, must work on every Mac out of the box
  • Detecting tools installed outside Homebrew — manual installs leave no registry, required scanning known paths
  • Interactive checkbox UX in a terminal — building a clean selection experience in pure bash
  • Safely handling dotfiles that may contain secrets — warning before backing up sensitive files

Key Learnings

  • 💡Deep bash scripting — POSIX-compatible patterns, portable shell techniques
  • 💡macOS system internals — Homebrew internals, dotfile conventions, manual install paths
  • 💡CLI UX design — making terminal tools feel intuitive without a GUI
  • 💡Open-source project structure — roadmap, contributing guide, CI from day one