Wakey
An alarm that reads tomorrow's calendar and wakes you at the right time, computed on the phone.
- status
- In development, not on the App Store yet
- platform
- iPhone, iOS 26
- app
- SwiftUI, AlarmKit, EventKit, MapKit
- server
- TypeScript, Fastify, SQLite
Your 9:00 moved to 8:00 and your alarm didn't. Wakey reads tomorrow's calendar, does the first event minus prep minus commute math, and sets one Smart Alarm for you. Backup alarms keep ringing until you slide "I'm up", because half-asleep doesn't count.
There are two modes. Manual Mode is free and fully on-device, but you have to open the app every day so it can recompute from the current calendar (an evening local notification reminds you). Auto Mode is a subscription. A small server sends a silent push every night (the Schedule Ping) that wakes the phone in the background, and the phone recomputes tomorrow from your calendar, on the device. There's also an hourly silent sync pulse on top of that. Only a trigger and a timestamp go over the wire. The server never receives, needs or stores your calendar.
# Decisions
One Smart Alarm, no alarm list
ADR-0001- chose
- Exactly one alarm per night, derived from the calendar. Reliability comes from automatic backup alarms.
- rejected
- A Clock-style list of alarms you manage by hand. That's a general alarm app, which Wakey explicitly isn't.
- cost
- No alarm list UI and no per-alarm editing, on purpose.
Pre-schedule the whole backup chain
ADR-0002- chose
- When the Smart Alarm is set, a chain of backups is scheduled at 5-minute intervals, and sliding "I'm up" cancels the rest.
- rejected
- Deciding at fire time whether to ring again. iOS gives the app no background time to make that call.
- cost
- Every backup sits in AlarmKit up front. I measured the pending limit at 100 or more on a real iPhone, so it's fine.
Silent push over BGTaskScheduler
ADR-0004- chose
- Auto Mode uses a server-timed silent push to trigger the nightly recompute.
- rejected
BGAppRefreshTask, which runs when iOS decides. That's unreliable when you have a deadline.
- cost
- A server to run, and silent pushes are still best effort (iOS throttles them if you force-quit the app), so there's a visible push as a fallback.