Timebase is a world clock and meeting planner for people who live across time zones. It runs offline, syncs only via your own iCloud, and asks for nothing.
There's no signup. No analytics. No servers we control. The app does its thinking on your device and keeps it there.
This repo contains the iOS, iPadOS, and watchOS targets — all bespoke, all in one Xcode project, shipped as one App Store record via Universal Purchase. The macOS app lives in timebaseapp/macos, linked into the same App Store product via Universal Purchase in App Store Connect. The web app lives in timebaseapp/web.
| 🌐 World Clock | Up to 8 cities, ordered by offset. Time-of-day gradients flow with the hour, anywhere on Earth. Scrub vertically to see how the day looks somewhere else. |
| 📅 Meeting Planner | Pick participants by city. Anchor the meeting to anyone's timezone — your home or theirs. Save straight to Calendar. |
| ⏳ Up Next | Native Calendar integration. Real countdowns to your real events. |
| 📱 Widgets | Home + lock screen, every size. World Clock and Up Next, side by side. |
| ⚡ Live Activities | A ticking countdown card on the lock screen. The Dynamic Island gets a small gradient dot + timer for the next 60 minutes before any event. |
| 🎙️ Siri & Shortcuts | "Hey Siri, what time is it in Tokyo?" Indexed by Spotlight. App-icon long-press for the rest. |
| 🎛️ Control Center | One-tap Timebase tile on iOS 18+. |
A bespoke iPad layout — not a scaled-up iPhone app. Built inside this Xcode project as part of the same iOS binary (iPad isn't a separately-shippable target under Universal Purchase). Larger widgets, multi-column where it earns its keep, full-bleed ambient world clock for Stage Manager. See scope/ipad.md for the spec — in progress.
A standalone watchOS app target inside this project: world clock pages, Up Next, complications across every family, and a Live Activity bridge from the paired iPhone. Dark-only — the Watch lives at night. See Sources/TimebaseWatch/ and TimebaseWatchComplications/.
SwiftUI, iOS 17+, Swift 6 strict concurrency. One Xcode project, multiple targets (iOS, watchOS, widget extension, watch complications). No third-party dependencies.
TimebaseStore—@Observable,@MainActor, the single source of truthEventKitfor Calendar across Apple / Google / Exchange / iCloudWeatherKitfor per-city weather in the detail sheetNSUbiquitousKeyValueStorefor cross-device sync via the user's iCloudActivityKitfor the Dynamic Island + lock-screen Live ActivityApp Intentsfor Siri / Shortcuts / Spotlight- An OKLCH palette per fractional hour, with a paper-grain texture overlay
Requires Xcode 16+ and xcodegen.
xcodegen generate
open Timebase.xcodeprojOr, headlessly:
xcodebuild -project Timebase.xcodeproj -scheme Timebase \
-sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
build CODE_SIGNING_ALLOWED=NObundle exec fastlane beta # → TestFlight
bundle exec fastlane release # → App Store Connect (binary, no auto-submit)Fastlane handles provisioning, signing, build-number bumping, and the upload. App Store metadata for all 10 US-indexed locales lives under fastlane/metadata/ and pushes via bundle exec fastlane push_metadata.
Sources/Timebase/Resources/cities.json is a curated set of ~150 cities. The canonical copy lives in timebaseapp/web — sync from there when adding new ones.
Crafted by @amrith in Amsterdam.