Your meetings, always in sight.
A native macOS menu bar calendar — live countdown, one-click join, full event management.
Free forever. Pro for power users ($4.99 one-time, no subscription).
| Fantastical | Dato | Meeter | Ticker | |
|---|---|---|---|---|
| Price | $6.99/mo ($84/yr) | $4.99 | $5.99 | Free (Pro: $4.99 once) |
| Day timeline | Yes | No | No | Yes |
| Create events | Yes | No | No | Yes (Pro) |
| Drag to create/resize | Yes | No | No | Yes (Pro) |
| NLP quick-add | Yes | No | No | Yes (Pro) |
| One-click join | Yes | No | Yes | Yes |
| RSVP from menu bar | No | No | No | Yes (Pro) |
| Open source | No | No | No | Yes |
| Native SwiftUI | No (AppKit) | Yes | No | Yes |
- Download
Ticker.dmgfrom Releases - Open the DMG, drag Ticker to Applications
- Launch Ticker from Applications
- First launch: Right-click Ticker.app → Open → Open (macOS Gatekeeper — one time only)
- Sign in with Google when prompted
git clone https://github.com/sethraj14/ticker.git
cd ticker
# Set up Google OAuth credentials
cp Ticker/Config.xcconfig.example Ticker/Config.xcconfig
# Edit Config.xcconfig with your client ID and secret
# Generate Xcode project and build
brew install xcodegen
xcodegen generate
./scripts/build-dmg.shMenu Bar: "Standup in 23m" → "Standup in 45s" → "Standup NOW"
|
[click menu bar]
|
+-----------------------------------+
| < Today, Mar 15 > |
|-----------------------------------|
| Rama Navami All day |
|-----------------------------------|
| 9 AM +------------------+ |
| | Team Standup > | |
| 10 AM +------------------+ |
| ----- now -------- |
| 11 AM +------------------+ |
| | Design Review > | |
| 12 PM +------------------+ |
|-----------------------------------|
| > UP NEXT |
| Design Review - 11 AM [Join] |
+-----------------------------------+
- Live countdown timer in menu bar
- One-click meeting join (Meet, Zoom, Teams)
- Google Calendar day timeline with color-coded events
- Event details and attendee list
- All-day event banner
- Create, edit, and delete events
- NLP quick-add ("Standup 3pm 45m")
- Click or drag to create on timeline
- Drag to resize and move events
- RSVP — one-tap badge, expand to respond
- Guest management with autocomplete
- Multiple Google accounts
- Apple Calendar sync
- Day navigation (past/future)
- Smart notifications with configurable reminders
- Per-feature toggles in Settings
No subscription. Pay once, own it forever.
Your next meeting + countdown in the menu bar. Per-second ticking under 60s. Calendar icon when your day is clear.
Google Calendar-style vertical timeline. Events sized by duration, color-coded by calendar, overlapping columns for conflicts. Red "now" line.
Google Meet, Zoom, Teams — tap the meeting, click Join. No hunting for links.
Click any empty slot. Or type "Team standup 3pm 45m" — NLP parses it. Drag on timeline to set duration visually.
Drag the bottom edge to resize. Grab the color bar to move. 60fps, snaps to 15-min grid.
Compact badge shows your status. Tap to expand and respond Going/Maybe/No. Collapses after selection.
Every Pro feature has its own switch in Settings. Keep what you use, disable what you don't.
Ticker/
├── TickerApp.swift # MenuBarExtra entry point
├── ViewModels/
│ └── CalendarViewModel.swift # State, timers, caching, fetch
├── Services/
│ ├── GoogleCalendarService # OAuth + Calendar API
│ ├── EventKitService # Apple Calendar via EventKit
│ ├── NotificationService # Scheduled notifications
│ ├── LicenseManager # LemonSqueezy license validation
│ └── LoopbackHTTPServer # OAuth callback server
├── Models/
│ ├── CalendarEvent # Unified event model
│ ├── FeatureFlags # Per-feature Pro toggles
│ └── GoogleAccount # Multi-account support
├── Views/
│ ├── PopoverView # Main container
│ ├── DayTimelineView # 24h scrollable timeline
│ ├── DraggableEventBlock # Resize + move gestures
│ ├── MeetingBlockView # Color-coded event blocks
│ ├── JoinSection # "Up Next" with RSVP badge
│ ├── CreateEventView # NLP + manual event creation
│ ├── DayNavigationBar # Date nav with Pro gate
│ └── SettingsView # Accounts, features, license
└── Helpers/
└── KeychainHelper # Token storage
| Decision | Why |
|---|---|
| SwiftUI + MenuBarExtra | Native macOS 13+ API, smallest binary |
Custom Layout for timeline |
Pixel-perfect grid alignment |
| No dock icon | Pure utility — LSUIElement = true |
| XcodeGen | Reproducible builds, no .xcodeproj conflicts |
| LemonSqueezy | One-time purchase, no subscription infra needed |
| Per-feature flags | Pro users control exactly what's active |
- Multiple Google accounts
- Apple Calendar integration
- Create, edit, delete events
- NLP quick-add
- Drag to create, resize, move
- RSVP from menu bar
- Guest management
- Smart notifications
- Per-feature toggles
- Light/dark theme on landing page
- Custom app icon
- Calendar selection (show/hide)
- Keyboard shortcuts
- Homebrew cask
- Week view
- Auto-update (Sparkle)
See CONTRIBUTING.md for setup instructions and guidelines.
Fork, branch (feat/your-feature), commit (conventional commits), PR.
Built by Rajdeep Gupta. Because checking your calendar shouldn't require opening a browser.