szamowski-dev
hora-web
TypeScript

The Mac calendar Google never built.

Last updated Jul 8, 2026
41
Stars
1
Forks
0
Issues
0
Stars/day
Attention Score
40
Language breakdown
TypeScript 65.1%
MDX 33.9%
JavaScript 0.6%
CSS 0.4%
Files click to expand
README

hora Calendar

hora Calendar

The Mac calendar Google never built.

Pure SwiftUI. Direct Google Calendar API. Zero compromises.
No Electron. No CalDAV. Just fast.

Download on the Mac App Store Website

macOS 26+ Swift 6 SwiftUI Google Calendar API No Electron

Website  ·  Features  ·  Blog  ·  Discord  ·  Privacy  ·  Terms  ·  @motoszama  ·  Bluesky


hora Calendar demo


[!NOTE]
hora is native and real-time. Built in SwiftUI, talking to the Google Calendar REST API directly — no CalDAV translation layer, no web views, no Electron. Changes land instantly via APN push sync instead of polling. It sips battery and opens in milliseconds.

Why hora

| | hora | Fantastical | Notion Calendar | | --- | :---: | :---: | :---: | | Pure SwiftUI + AppKit | Yes | Partly | No | | No Electron / no web views | Yes | Yes | No | | Direct Google Calendar API | Yes | CalDAV | Yes | | Google Meet link on create | One click | Yes | Yes | | Built-in Pomodoro timer | Yes | No | No | | Menu bar countdown widget | Yes | Yes | Yes | | Availability sharing (FreeBusy) | Yes | Yes | Yes | | Localized languages | 9 | 8 | Limited | | Pricing | $49 one-time or $30/yr | $100+/yr | Free |

Keyboard shortcuts

The shortcuts you already know from Google Calendar — natively, everywhere.

D Day  ·  W Week  ·  M Month  ·  T Today  ·  C New event  ·  / Search  ·  J / K Prev / Next  ·  Z Undo  ·  A Share availability

Features

15 shipped features — click to collapse


| | Feature | Description | |---|---|---| | Day, Week & Month | 3 Calendar Views | Apple Calendar–style layout with smooth transitions between views. | | Drag & Drop | Full CRUD | Create, edit, resize, delete events. Feels native because it is. | | One Click | Google Meet | Add conference links when creating events. Join instantly. | | D/W/M · C · / · J/K · T | Keyboard Shortcuts | Google Calendar shortcuts you already know. | | Real-time | APN Push Sync | Apple Push Notifications deliver calendar changes instantly — no polling, no waiting. | | Incremental | Smart Sync | Configurable intervals as a fallback. Native macOS notifications for upcoming events. | | Multi-Account | Color-Coded | Multiple Google accounts, each with its own color scheme. | | Autocomplete | Attendees | Invite people from Google Contacts with instant suggestions. | | Pomodoro | Focus Timer | Built-in pomodoro timer with configurable work/break intervals. | | Cmd+Shift+A | Availability Sharing | Query free slots via FreeBusy API, copy to clipboard. | | Menu Bar | Widget | Pill-shaped indicators, upcoming events, countdown to next meeting. | | Recurring | Events | Full support for recurring rules with exception handling. | | 9 Languages | Localization | EN, PL, DE, ES, FR, IT, JA, PT, ZH. | | Undo/Redo | Cmd+Z | Full undo/redo for create, edit, and delete operations. | | Light & Dark | Appearance | Matches system appearance. Polished contrast in both modes. |

See horacal.app/features for the full list.

Architecture

flowchart LR
  U([You]) --> UI[SwiftUI + AppKit]
  UI <--> Core[HoraCore]
  Core <--> Sync[HoraSync]
  Sync <--> Cache[(SwiftData cache)]
  Sync <--> API[HoraGoogleAPI]
  API <-->|REST, incremental| GCal[(Google Calendar)]
  API -.->|OAuth 2.0 + PKCE| Google{{Google}}
  GCal ==>|APN push, real-time| Sync

Three Swift Packages, one main target. SwiftData is a local cache — Google Calendar is the source of truth.

Stack

| | | |---|---| | Language | Swift 6 | | UI | SwiftUI + AppKit | | API | Google Calendar REST API (direct, no CalDAV) | | Auth | OAuth 2.0 + PKCE via ASWebAuthenticationSession | | Storage | SwiftData (local cache, Google API as source of truth) | | Architecture | 3 Swift Packages (HoraCore, HoraGoogleAPI, HoraSync) + main target | | CI/CD | Xcode Cloud (builds + TestFlight) + GitHub Actions (tests on PR) | | Distribution | Mac App Store / TestFlight |

Journey

[!TIP]
24+ features shipped, 25+ bugs squashed. Full changelog on the blog.

Shipped


Day / Week / Month views · full CRUD · drag & drop · resize · multi-account sync · Google OAuth · incremental sync · keyboard shortcuts · menu bar widget · pomodoro timer · availability sharing · invitation management · calendar visibility · recurring events · 9 languages · light & dark mode · 5/7-day week toggle · one-click meeting join · window state restore · Xcode Cloud CI/CD.

Working on now


Apple Intelligence — smart scheduling, focus time planning, meeting prep briefings · Quick "Running late" reply · Email attendees from event detail · Invitation "Ignore" option · Light mode contrast polish · Dynamic Dock icon (macOS 26) · Localization native review.

What's next

| # | Milestone | |---|---| | 1 | ✅ Mac App Store launch — live now | | 2 | iOS & iPadOS TestFlight — same SwiftUI foundation, designed for touch (public beta coming soon) | | 3 | macOS, iOS & iPadOS 27 App Store launch — one hora across every Apple platform |

Links

| | | |---|---| | Website | horacal.app | | Blog | horacal.app/blog (RSS) | | Community | Discord | | X / Twitter | @moto_szama | | Bluesky | @szamski.bsky.social | | Developer | szamowski.dev |

Built with SwiftUI + AppKit. No Electron. No web views. Pure native macOS.

🔗 More in this category

© 2026 GitRepoTrend · szamowski-dev/hora-web · Updated daily from GitHub