Capstone 4 — NoteSync
Tagline: A collaborative notes app where you can share individual notes or entire folders with other iCloud users, with real-time sync via CloudKit shared zones, AppIntents for shortcut automation, and partial iOS+macOS support.
Tech stack: Sign in with Apple · CloudKit shared zones · CKShare · AppIntents · iOS + macOS (partial universal)
Time budget: ~2 weeks
What this capstone proves:
- You can build a multi-user CloudKit experience — not just private DB, but
CKShared zones with collaborator permissions - You understand the CKShare invitation flow (UICloudSharingController on iOS, the macOS equivalent)
- You can resolve edit conflicts in a shared store with
CKRecordserver change tokens - You can expose AppIntents that work in Shortcuts, Siri, and Spotlight on both iOS and macOS
- You can ship a partial universal macOS catalyst-or-native build alongside iOS, picking the right tradeoffs
The 30-second pitch
“NoteSync is a notes app that lets you share individual notes or whole folders with other iCloud users. Sharing uses CloudKit’s CKShare model — you generate a share URL, the recipient accepts, and from that point both clients write to the shared zone with real-time deltas. The interesting work was the conflict resolution layer; when two users edit the same note simultaneously, CloudKit reports a server-change-token mismatch and you get back the divergent versions. I built a three-way merge based on the common ancestor that preserves both edits when possible and otherwise prefers the more recent timestamp with a ‘see both versions’ option. The app ships on iOS and macOS — same Swift package core, separate SwiftUI shells.”
Why this capstone
CloudKit private DB is straightforward. CloudKit shared DB with CKShare is the part nobody in the Apple ecosystem fully understands — and the part that companies that depend on multi-user iCloud sync (Bear, GoodNotes, Things) lose engineers over. Building this end-to-end is a senior-level signal. Adding iOS+macOS shows you can think about cross-platform code organization.
Files
- requirements.md — feature list, user stories, sharing flow
- architecture.md — CloudKit zone topology, conflict resolution, ADRs
- implementation-guide.md — step-by-step build walkthrough
- hardening-checklist.md — production + security review
- interview-talking-points.md — pitch and Q&A
What “done” looks like
- iOS + macOS apps, both on TestFlight
- A folder shared between two iCloud accounts, syncing within ~5 s
- Conflict resolution demonstrated: simultaneous edit on both devices → merged output
- AppIntents for “Create note”, “Append to note”, “Find notes containing” — usable in Shortcuts and Siri
- Hardening checklist ticked
Next: Requirements