A beautiful, minimal task manager that lives in your macOS menu bar.
No dock icon. No clutter. Just click the ✓ and get things done.
|
|
|
|
|
|
|
|
|
# Build
./build.sh
# Run
open build/Docket.app
# Install permanently
cp -r build/Docket.app /Applications/Requirements: macOS 14+ and Xcode Command Line Tools (
xcode-select --install)
| Shortcut | Action |
|---|---|
⌘⇧D |
Toggle Docket (configurable) |
⌘⇧D × 2 |
Quick-add: jump to new task |
⌘N |
New task (popover open) |
Esc |
Go back |
| Right-click icon | Context menu |
Type natural language in the due date field:
| Input | Parsed as |
|---|---|
today / eod |
Today 5:00 PM |
tonight |
Today 9:00 PM |
noon |
Today 12:00 PM |
this afternoon |
Today 2:00 PM |
later |
3 hours from now |
tomorrow 3pm |
Tomorrow 3:00 PM |
day after tomorrow |
+2 days 9:00 AM |
next friday |
Next Friday 9:00 AM |
monday 9:30am |
Next Monday 9:30 AM |
in 2 hours |
2 hours from now |
in 3 days |
3 days from now |
this weekend |
Saturday 10:00 AM |
next week |
Next Monday 9:00 AM |
end of week / eow |
Friday 5:00 PM |
| Light | Dark | Custom | Glass |
|---|---|---|---|
| White, Lavender, Rose, Peach, Lemon, Mint, Sky, Periwinkle | Night | Any color via hue + intensity | Liquid Glass on/off |
All UI elements — buttons, toggles, pills, calendar, toast — adapt to the theme's accent color. With Liquid Glass enabled, the system translucent material shows through with a subtle theme tint.
Docket/
├── DocketApp.swift # App entry, menu bar, hotkey, context menu
├── Models/
│ ├── TodoItem.swift # Task model (Codable, backward-compatible)
│ ├── TaskList.swift # List/project model + DocketExport
│ ├── TaskLabel.swift # Label model with color + icon
│ ├── ReminderOffset.swift # Notification timing options
│ ├── AppTheme.swift # 9 themes + custom + ThemeManager
│ ├── SortMode.swift # Custom vs By Due Date
│ └── Strings.swift # L10n localization strings
├── Services/
│ ├── Store.swift # JSON persistence, CRUD, lists, labels, reorder
│ ├── NotificationManager.swift # UNUserNotifications scheduling
│ ├── DateParser.swift # Natural language → Date parsing
│ └── DueDateFormatter.swift # Relative date display formatting
└── Views/
├── ContentView.swift # Router, theme, onboarding, keyboard nav
├── TaskListView.swift # Main list, sort bar, label filter, undo toast
├── TaskRowView.swift # Task card with priority bar + labels
├── SwipeableTaskRow.swift # Swipe gestures + reorder arrows
├── ConfettiView.swift # Completion celebration
├── UndoToast.swift # Undo notification toast
├── CalendarPickerView.swift # Custom themed calendar
├── TimePickerView.swift # Custom themed time selector
├── ReminderPickerView.swift # Themed reminder dropdown
├── PriorityPickerView.swift # Colored priority pills
├── LabelPickerView.swift # Multi-select label pills
├── ThemedToggle.swift # Custom accent toggle switch
├── CreateTaskView.swift # New task + smart dates + labels
├── TaskDetailView.swift # Edit task + reminders + labels
├── CompletedTasksView.swift # Done tasks with restore
├── SettingsView.swift # Preferences + lists + labels + export
└── OnboardingView.swift # First-launch guide
| Decision | Rationale |
|---|---|
| JSON file, not SwiftData | Builds with swiftc alone — no Xcode.app needed |
| No Dock icon | LSUIElement = true — stays out of the way |
| Popover, not window | Dismisses on click-outside, feels native |
| Custom pickers & toggles | Native controls don't respect themes |
| Carbon hotkey API | Only way to register global shortcuts on macOS |
@Observable Store |
Single source of truth, reactive UI updates |
| Separate tap/swipe targets | Prevents gesture conflicts in popover |
| Layer | Technology |
|---|---|
| UI | SwiftUI |
| App Lifecycle | AppKit (NSStatusItem, NSPopover) |
| Persistence | JSON → Application Support |
| Notifications | UserNotifications |
| Global Hotkey | Carbon HIToolbox |
| Launch at Login | ServiceManagement |
| Build | Single swiftc invocation |
Tasks, lists, and labels are stored at:
~/Library/Application Support/Docket/
├── tasks.json
├── lists.json
└── labels.json
Settings use UserDefaults (standard macOS preferences).
| Permission | Why | When |
|---|---|---|
| Notifications | Task reminders | First launch |
| Accessibility | Global keyboard shortcut | When using hotkey |
MIT — see LICENSE
Made with ☕ by @santoru

