Skip to content

craftowen/pomodoro

Repository files navigation

Pomodoro

A lightweight macOS menu bar Pomodoro timer built with Swift 6 and SwiftUI.
Download Latest Release  ·  Report Bug  ·  Request Feature

Latest Release macOS 14.0+ Swift 6.0 License

Pomodoro Menu Bar

Features

  • Menu Bar App — Lives in your menu bar, always accessible without cluttering your dock
  • Visual Progress — Circular progress indicator shows time remaining at a glance
  • Task Management — Create, complete, and track tasks alongside your Pomodoro sessions
  • Calendar Integration — Import today's calendar events as tasks via EventKit
  • Keyboard Shortcuts — Start/pause timer with customizable global shortcuts
  • Customizable Timers — Adjust focus, short break, and long break durations
  • Auto-start — Optionally auto-start the next Pomodoro after a break
  • Notifications — Get notified when a session ends
  • Launch at Login — Start automatically when you log in
  • i18n — English, Korean, and Simplified Chinese

Installation

Homebrew (recommended)

brew install --cask craftowen/pomodoro/pomodoro

Download

Download the latest .app from the Releases page.

Build from Source

git clone https://github.com/craftowen/pomodoro.git
cd pomodoro
./run.sh

How It Works

The app follows the Pomodoro Technique:

Phase Default Duration Description
Focus 25 min Work on a task with full concentration
Short Break 5 min Take a quick break
Long Break 15 min Rest after 4 focus sessions

All durations are configurable in settings.

Requirements

  • macOS 14.0 (Sonoma) or later
  • Swift 6.0 / Xcode 16+ (build from source only)
Project Structure
Pomodoro/
├── PomodoroApp.swift          # App entry point, menu bar setup
├── Models/
│   ├── PomodoroState.swift    # Timer state machine
│   ├── PomodoroSession.swift  # Session history
│   ├── UserSettings.swift     # Persisted user preferences
│   └── TaskItem.swift         # Task model
├── ViewModels/
│   ├── TimerViewModel.swift   # Timer logic
│   ├── TaskViewModel.swift    # Task management
│   └── CalendarViewModel.swift # Calendar integration
├── Views/
│   ├── PopoverView.swift      # Main popover container
│   ├── TimerView.swift        # Timer display & controls
│   ├── TaskListView.swift     # Task list
│   ├── TaskRowView.swift      # Individual task row
│   ├── InlineSettingsView.swift # Settings panel
│   └── DesignTokens.swift     # Color & style tokens
└── Services/
    ├── StorageService.swift    # Data persistence
    ├── NotificationService.swift # User notifications
    └── CalendarService.swift   # EventKit integration

Contributing

Contributions are welcome! Feel free to open an issue or submit a pull request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Acknowledgments

License

Distributed under the MIT License. See LICENSE for details.

About

A lightweight macOS menu bar Pomodoro timer built with Swift 6 and SwiftUI

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors