Capstone 1 — SkyWatch
Tagline: A delightful, location-aware weather app with widgets that update in the background, severe-weather alerts, and a saved-location map you can scrub through.
Tech stack: WeatherKit · MapKit · CloudKit · WidgetKit · App Intents · SwiftUI · Fastlane CI
Time budget: ~2 weeks (one full week if you skip widgets and complications)
What this capstone proves:
- You can integrate multiple first-party SDKs end-to-end without each one becoming a half-finished demo
- You can build widgets people actually want (not the toy widgets every tutorial ships)
- You understand the WeatherKit usage-based pricing and how to design a UI that respects it
- You can sync CloudKit private database correctly with conflict handling
- You can ship a Fastlane TestFlight pipeline
The 30-second pitch
“SkyWatch is a weather app I built end-to-end on Apple’s stack — WeatherKit for forecasts, MapKit for a scrubbable radar-style map, CloudKit private DB for saved locations that sync across devices, and a Lock Screen widget that updates every 15 minutes with the next hour’s precipitation. The interesting bit was designing the WeatherKit call budget — Apple gives you 500K calls a month free, and I built a caching layer with TTL keyed by
(location, forecast type)that brought us to under 5K calls/month even with 100 daily users. Source is on GitHub, TestFlight build is live.”
Why this capstone
WeatherKit + CloudKit + WidgetKit hit three different parts of the iOS stack in one project. You get to talk about:
- API budget design (caching, TTL, deduplication) — a real engineering conversation, not a CRUD app conversation
- Widget timelines and refresh policy — separates juniors from mids
- CloudKit conflict resolution — separates mids from seniors
- MapKit performance with many annotations and overlays
- App Intents for Siri integration and Shortcuts
Files
- requirements.md — full feature list, user stories, acceptance criteria
- architecture.md — module layout, data flow, ADRs
- implementation-guide.md — step-by-step build walkthrough
- hardening-checklist.md — production + security review
- interview-talking-points.md — the conversation this capstone earns you
What “done” looks like
- Live on TestFlight with at least 5 external testers
- GitHub repo public with a README that shows screenshots and the architecture diagram
- All seven sections in
hardening-checklist.mdticked off - You can deliver the 30-second pitch above without looking at notes
- You can answer all 12 interview questions in
interview-talking-points.md
Stretch goals
- Apple Watch complication with the next hour’s precipitation
- Live Activity for active weather alerts (severe thunderstorm, tornado warning)
- App Intent for Siri: “Hey Siri, will it rain in Portland tomorrow?”
- Localize for Spanish, Japanese, German — and validate the
MeasurementFormatterpaths
Next: Requirements