Focusbar is a small ADHD-friendly menubar todo app built in Go.
It is designed for lightweight focus sessions:
- add a task quickly
- keep one active task at a time
- pause and resume without losing context
- mark tasks done when your brain is ready
- keep the menu simple and low-friction
The app lives in the macOS menu bar and uses systray for the UI.
Focusbar v0.2.0 turns the app into a more complete local-first macOS release.
- SQLite-backed task storage with automatic legacy
tasks.jsonmigration - adaptive reminders that react to response rate and time of day
- focus-window learning based on the hours you actually respond best
- a lightweight
Donesection so completed tasks still give a small sense of progress - bundled macOS app, DMG packaging, GitHub Pages site, and release workflows
This project is aimed at people who do better with:
- one clear task instead of a large task list
- fast capture with minimal clicks
- visible focus state
- simple momentum over heavy productivity systems
It is not trying to be a full project manager. It is more like a tiny focus companion.
- menubar-based task flow
- quick add task prompt
- one active working task at a time
- pause, resume, complete, and delete actions
- recent completed tasks visible in a lightweight
Donesection - native macOS notifications from the bundled app
- persistent task storage in
~/Library/Application Support/Focusbar/focusbar.db - automatic migration from legacy
tasks.jsonstorage - automatic cleanup for old completed tasks
- live timer in the menu bar while working on a task
- adaptive reminders based on response rate, time-of-day buckets, and stronger/weaker focus hours
- focus-window tracking that learns when you naturally respond best
- short tray-safe titles for multi-display menu bars
focusbar/
├── cmd/
│ └── app/
│ └── main.go
├── internal/
│ ├── adaptive/
│ ├── app/
│ ├── logx/
│ ├── notifier/
│ ├── reminder/
│ ├── task/
│ ├── timer/
│ ├── tray/
│ └── ui/
├── macos/
├── scripts/
├── go.mod
└── README.md
cmd/app: application entrypointinternal/adaptive: response tracking, time buckets, and focus-window learninginternal/app: startup wiring and app lifecycleinternal/logx: file logging for debugging app and notification flowinternal/notifier: native macOS notification bridgeinternal/task: task model, persistence, cleanup, and task managementinternal/timer: focus timer handlinginternal/tray: short menu bar title formattinginternal/ui: systray rendering, menu state, and add-task promptinternal/reminder: reminder evaluation and escalation logicmacos: app bundle metadatascripts: build and run helpers for the macOS app bundle
- macOS
- Go 1.25+
This app is macOS-specific. It uses:
osascriptfor the quick add-task prompt- native macOS notifications through an in-process Objective-C bridge
./scripts/run-app-bundle.shThat script:
- builds the app bundle
- ad-hoc signs it
- launches
Focusbar.app
If you only want to build the bundle:
./scripts/build-app-bundle.shThe generated app bundle lives at:
dist/Focusbar.app
Install Focusbar into your Applications folder:
./scripts/install-app.shCreate a release zip for sharing or GitHub Releases:
./scripts/package-release.shCreate a drag-and-drop DMG installer:
./scripts/package-dmg.shNOTE:
- the DMG is currently not notarized
- macOS may warn that Focusbar cannot be verified because Apple Developer signing is still pending
- the zip build is the safer download for now
A GitHub Pages landing page lives in:
docs/
Once GitHub Pages is enabled for the repository, the Pages workflow will publish that folder automatically on pushes to main.
Live repo:
https://github.com/satya-sudo/ADHD_Todo_manager_mac
Releases:
https://github.com/satya-sudo/ADHD_Todo_manager_mac/releases
This repo uses separate workflows for:
- CI: test code, build Go packages, and build the signed app bundle
- Release Artifacts: run tests, build the app, and package zip + DMG artifacts for releases
- Deploy Pages: publish the
docs/site to GitHub Pages
If you want to compile the code without launching the app:
go build ./...Focusbar writes logs to:
~/Library/Logs/Focusbar/focusbar.log
Tail the log during testing:
tail -f ~/Library/Logs/Focusbar/focusbar.log- The app starts in the menu bar.
- Tasks are loaded from the app support directory SQLite database.
- If a task was already active, the timer resumes.
- You can add a new task from the menu.
- Starting one task pauses any previously active task.
- Completed tasks stay visible in a small
Donesection before they age out. - Completed tasks are cleaned up automatically after they get old enough.
- Reminders only trigger when there are pending tasks.
- Reminder tone and pacing adapt to response history, time of day, and best focus hours.
Tasks are stored locally in:
~/Library/Application Support/Focusbar/focusbar.db
If an older tasks.json file exists in the same app-support directory, Focusbar imports it automatically on first load.
Each task includes:
- id
- title
- state
- created timestamp
Focusbar does not use a fixed reminder loop anymore.
- no reminders when there are no pending tasks
- no reminders while a task is actively working
- softer or stronger wording depending on recent response rate
- slower or faster nudges depending on morning, afternoon, evening, or night
- hour-based learning to detect stronger and weaker focus windows
This keeps reminders closer to “supportive” than “nagging”.
todoworkingpauseddone
- reminder settings and cleanup settings
Test Notification,Open Logs, andReveal Data FolderDone todayfeedback in the menu- clearer first-run and install guidance
- persisted focus sessions in SQLite
- daily stats like focus time and completed tasks
- settings persistence
- launch at login
- keyboard shortcuts
- backup export and import
- better first-launch onboarding
- warmer progress feedback and reward loops
- archive or history view
- task notes or tiny context fields
- more polished menu structure
- Apple Developer signing and notarization
- public-ready DMG and zip distribution
- stable database migrations
- stronger docs, screenshots, and release polish
- final UX sweep across reminders, onboarding, and task flow
Add a license here if you want to open source the project.