iOS project
Build an offline task app with correctly scheduled local notifications
A to-do app persisted with SwiftData, where deleting or editing a task correctly cancels and reschedules its notification — the actual edge case that breaks junior submissions.
The brief
Build a task/to-do app using SwiftData (or CoreData) for full offline persistence: create, edit, delete, and complete tasks, with due dates and local notifications. Data must survive app relaunch, and editing or deleting a task must correctly reschedule or cancel its associated notification.
Suggested stack
What you hand in
- A public GitHub repository with the app and a README
- The README explains the notification scheduling/cancellation logic
- A short note describing how persistence across relaunch and notification cancellation on delete were tested
Grading happens against the rubric below, so read it before you start — not after.
How this is graded
Published in advance and weighted out of 100. Nothing here is a surprise.
Data survives an app relaunch with no loss, and edits are actually committed to the persistent store, not just held in memory.
Notifications fire at the correct time, and editing a due date reschedules the existing notification rather than leaving a stale one active.
Create, edit, delete, and complete all work, and deleting a task with a pending notification cancels that notification.
The SwiftData model is sensible and not overloaded with unrelated responsibilities.
No console errors or crashes, no broken layout, no leftover placeholder text or commented-out code.
Why this project is worth your weekend
- Local persistence plus notifications is a genuinely common real feature set (reminders, task apps, habit apps), and the scheduling edge cases are where junior submissions usually break.
- Deleting a task should also cancel its notification, and this is an easy thing for an interviewer to check live.
- SwiftData is Apple's current direction, so building with it signals the candidate isn't stuck on an older CoreData-only mental model.
Where people lose points
- A local notification that still fires after its task was deleted or completed, because the notification wasn't cancelled.
- Editing a task's due date without rescheduling its existing notification, so the old time still fires.
- Data loss on relaunch because changes were only held in memory and never actually saved to the persistent store.
Other iOS projects
Two or three of these turn an empty resume into a portfolio.
Built it? Get it scored against this rubric.
Submit your work and get a score on every criterion above, written feedback, and three resume bullets you can use straight away.