stacks/pomodoro
publicClone
Push over the same URL. A password will not work: create a token under access tokens and use it in place of one.
- .github
- .vscode
- .zed
- dist
- docs
- src
- test
- .editorconfig 147 B
- .gitattributes 12 B
- .gitignore 215 B
- bun.lock 184.7 KB
- bunfig.toml 88 B
- CHANGELOG.md 1 B
- deps.yaml 32 B
- LICENSE.md 1.0 KB
- package.json 1.8 KB
- pkgx.yaml 52 B
- README.md 4.6 KB
- tsconfig.json 627 B

Pomodoro.app
A minimal, functional, yet simple Pomodoro menubar app to help you stay focused. Built exclusively for macOS.
Features
- 🍎 macOS Native - Built with SwiftUI for a seamless Mac experience
- 🔔 Menu Bar App - Always accessible from your menu bar
- ⏱️ Customizable Timers - Set your own work and break durations
- 🪟 Detachable Timer Window - Pop out the timer when you need it visible
- 🔊 Audio Notifications - Get alerted when your timer completes
- ⚙️ Configurable Settings - Customize to fit your workflow
Getting Started
Prerequisites
- macOS 11.0 (Big Sur) or later
- Xcode 13.0 or later
- Bun for running build scripts (optional)
Development Setup
- Clone the repository
git clone https://github.com/stacksjs/pomodoro.git
cd pomodoro- Open the project in Xcode
open src/Timer.xcodeproj- Build and run the app
- Select the "Timer" scheme in Xcode
- Choose your Mac as the run destination
- Click the Run button (▶️) or press Cmd+R
Building from Source
If you prefer to build from the command line:
# Build the app
bun run build
# cd src && xcodebuild -project Timer.xcodeproj -scheme Timer -configuration Release
# The built app will be in src/build/Release/Timer.appInstalling the App
After building, you can install the app by:
- Locating the built
Timer.appinsrc/build/Release/ - Dragging it to your Applications folder
Usage
- Launch the app - The timer will appear in your menu bar
- Click the menu bar icon - Opens the timer interface
- Set your timer - Use the slider or preset buttons (25, 5, or 10 minutes)
- Start the timer - Click "Start" to begin your focus session
- Detach the timer - Click "Detach Timer" to open a floating window
- Configure settings - Click "Settings" to customize timer presets
Development
This project uses:
- SwiftUI for the user interface
- Combine for reactive programming
- AVFoundation for audio playback
- AppKit for macOS-specific functionality
Project Structure
TimerApp.swift- Main app entry pointAppDelegate.swift- Handles menu bar integrationContentView.swift- Main timer interfaceTimerViewModel.swift- Core timer logicTimerState.swift- Timer state managementsettingsView.swift- Settings interfacetimerView.swift- Detachable timer window
Testing
bun testChangelog
Please see our releases page for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Community
For help, discussion about best practices, or any other conversation that would benefit from being searchable:
For casual chit-chat with others using this package:
Join the Stacks Discord Server
Postcardware
“Software that is free, but hopes for a postcard.” We love receiving postcards from around the world showing where Pomodoro.app is being used! We showcase them on our website too.
Our address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094, United States 🌎
Credits
Sponsors
We would like to extend our thanks to the following sponsors for funding Stacks development. If you are interested in becoming a sponsor, please reach out to us.
License
The MIT License (MIT). Please see LICENSE for more information.
Made with 💙
[codecov-href]: https://codecov.io/gh/stacksjs/ts-starter -->