# TimeToLeave — Implementation Checklist ## Phase 1 — Workspace + Shared Packages (Steps 1-9) | # | Step | ✅ | ✔️ | |---|---|----|-| | 1 | Create safety baseline (typecheck, lint, test, build) | [x] | [x] | | 2 | Add workspace support to root `package.json` | [x] | [x] | | 3 | Move web app into `apps/web/` | [x] | [x] | | 4 | Create `packages/core/` with shared types + utilities | [x] | [x] | | 5 | Update web imports to use `@timetoleave/core` | [x] | [x] | | 6 | Create `packages/api-client/` with typed API wrapper | [x] | [x] | | 7 | Refactor web hooks to use `api-client` | [x] | [x] | | 8 | Run web verification again (typecheck, lint, test, build) | [x] | [x] | | 9 | Phase 1 summary verification (all packages compile) | [x] | [x] | ## Phase 2 — Expo Mobile MVP (Steps 10-18) | # | Step | ✅ | ✔️ | |---|---|----|-| | 10 | Scaffold Expo mobile app with TypeScript | [x] | [x] | | 11 | Configure mobile API base URL (`.env` + singleton) | [x] | [x] | | 12 | Add mobile app shell (navigation + 5 screens) | [x] | [x] | | 13 | Add mobile event store (AsyncStorage) | [x] | [x] | | 14 | Build Event List screen | [x] | [x] | | 15 | Build Add Event screen with validation | [x] | [x] | | 16 | Build Origin Setup in Settings | [x] | [x] | | 17 | Build Event Detail screen (trains + bike + errors) | [x] | [x] | | 18 | Phase 2 summary verification | [x] | [x] | ## Phase 3 — Notifications, Calendar, Deployment (Steps 19-24) | # | Step | ✅ | ✔️ | |---|---|----|-| | 19 | Add local notifications (expo-notifications) | [x] | [x] | | 20 | Add native calendar import with calendar selection | [x] | [x] | | 21 | Add mobile tests (core + API + store + screens) | [x] | [x] | | 22 | Prepare deployment (web backend + EAS mobile) | [x] | [x] | | 23 | Release MVP (verify acceptance criteria) | [x] | [x] | | 24 | Plan post-MVP improvements | [x] | [x] | --- **Legend:** - ✅ = Done (code written) - ✔️ = Verified (tests/builds pass) - `[~]` = Optional or deferred (never blocks phase advancement)