Skip to content
Client: Our own product, macOS app
  • Our own product
  • macOS
  • Open source
Project status: Live

Eject Guard

A notarised macOS app protecting backups before you unplug the cable.

eject-guard.pxlPreview 1 / 3
Loading project preview…
The Eject Guard menu under its menu bar icon, which is also shown enlarged on the left: a Time Machine disk is backing up at 42% and a meeting starts in seven minutes. Five minutes ahead the app stops the backup and unmounts the disk, and the icon jumps out of the menu bar and lands on a dashed outline. After the meeting the disk is mounted again and Time Machine carries on backing up.
Before a meeting Eject Guard stops the backup cleanly and unmounts the disk. If you never touched the cable, the disk is back after the meeting and the backup carries on.
Eject Guard light-mode menu with disks, backup progress and the next meeting.
Light mode: selected disks, backup at 42% and the planned eject time before a meeting.
Eject Guard dark-mode menu with the same information.
Dark mode with the same readable information. Text contrast is measured.

Project facts

Platform
macOS 14+ · Apple Silicon
Signing
Developer ID + Apple notarisation
Languages
SK · CS · EN · DE
Distribution
GitHub Releases · automatic updates
Technology
  • Swift 6
  • SwiftUI
  • EventKit
  • Sparkle
  • XCTest
  • GitHub Actions

The brief

Eject Guard is a macOS app that safely disconnects external disks before meetings. It watches selected disks and the calendar, distinguishes meetings from blocked time, gracefully stops Time Machine backups and ejects disks five minutes ahead. It is Developer ID signed, Apple notarised and updates automatically.

A meeting starts in a minute and you remember your backup disk only after unplugging it. We built Eject Guard to check the calendar and disconnect selected external disks before you leave your desk. Time Machine is the common case, but it supports any external disk. We use it ourselves and publish it as open source.

What we did

Disks disconnected before you leave your desk

Selected disks are ejected five minutes before a meeting, with configurable timing and a notification. Cancelled meetings are detected and disks left alone.

Distinguishes meetings from blocked time

Only events with other attendees that you have not declined trigger ejection. Focus and lunch blocks do not, without comparing titles. Individual meetings can be skipped and restored.

Backups stop gracefully

If Time Machine is writing to a selected disk, the app stops that backup before ejecting. Backups on other disks continue. If ejection fails, it reports which app holds the disk.

Safety as a rule

System disks and unselected disks are never touched. Stable identifiers distinguish disks. Automated tests enforce these rules. Calendar data stays local; internet access is only for updates.

Delivered as a finished product

Four languages including Slovak and Czech, Developer ID signing, Apple notarisation and signature-verified updates. A production bug was fixed with a signed release the next day and a regression test.

What does this mean for your project?

Eject Guard does a job people remember too late: five minutes before a meeting it ejects the disks on its own. It has firm rules on what it must never touch, the system disk and any disk you have not selected, and automated tests check them on every change. When a disk cannot be ejected, it says which app is holding it, so you do not pull the cable blindly. When a bug turned up in use, the fix shipped the next day with a test that keeps it out. A task your company relies on someone remembering is worth handing to an app, as long as it has clear limits and speaks up when it cannot do its job.

Links

Need something similar?

Tell us about your project in a few sentences. We get back to you with a suggested next step.

Write to us