PlanBoard — Requirements
Personas
- Solo planner — uses PlanBoard on iPhone in the morning to plan the day, switches to Mac at the desk for deep work, glances at the iPad on the side.
- Project lead — manages 3 boards across iOS and macOS, expects keyboard shortcuts and multi-window on Mac.
- Casual user — only uses the iOS widget to track 3 things; never opens the full app.
Universal user stories
(Apply to iPhone, iPad, Mac unless noted.)
Boards & columns
- User can create multiple boards.
- Each board has user-defined columns (default: “To Do”, “In Progress”, “Done”).
- Columns are reorderable via drag.
Cards
- Cards have title, optional description, due date, priority, color tag, optional checklist.
- Cards can be moved between columns via drag.
- Cards can be reordered within a column via drag.
- Tapping a card opens detail in a sheet (iPhone) or inspector (iPad/Mac).
Sync
- All boards sync across the user’s devices via CloudKit private DB.
- New boards/cards appear on other devices within 5 s when online.
Widget
- iOS: widget shows top 3 cards of the user’s “primary” board.
- macOS: a menu bar item shows the same (acts as the macOS widget).
AppIntents
- Shortcuts shows: “Add Card”, “Move Card”, “Find Cards by Tag”, “Open Board”.
- Siri invocations work without launching the app.
iPhone-specific user stories
- Board list is the root; tap a board to drill into columns.
- Columns are a horizontally-paged view (one column per page on small phones).
- Pull-to-refresh forces a CloudKit sync.
iPad-specific user stories
- Default split view: board list (sidebar) | columns (content) | card detail (inspector).
- Drag-and-drop between columns is fluid with multitouch.
- Apple Pencil scribble works in card detail.
Mac-specific user stories
- NSToolbar with: “+ New Card”, “+ New Board”, “Sync now,” “Show inspector” buttons.
- CommandMenu entries:
⌘Nnew card,⇧⌘Nnew board,⌘Rrefresh sync,⌘Itoggle inspector,⌘Fsearch. - Multi-window: open multiple boards side-by-side, each in its own window.
- Menu bar item: click to show top 3 cards in a popover; keyboard shortcut
⌥⌘Popens it. - Sidebar visible by default; user can collapse via
⌘0. - Drag a card from one window to another window (different boards) moves it.
Acceptance criteria
- Cold launch on each platform: < 1.5 s
- CloudKit sync latency, online: < 5 s
- Mac app passes “Mac-app smell test” — sidebar, toolbar, command menu, native menu items, no iOS popover-on-Mac UX antipatterns
- iOS widget refresh: every 30 min background, immediate on board change
- macOS menu bar popover opens in < 100 ms from click
- Zero crashes in 50 simulated user sessions per platform
Non-goals
- No collaboration / multi-user sharing (covered by NoteSync capstone).
- No automation beyond AppIntents.
- No Apple Watch app for v1.
- No web view.
- No support for Linux or Windows.
Constraints
- iOS 17+, iPadOS 17+, macOS 14+
- One App Store Connect record per platform (iOS app + macOS app; iPad shares iOS).
- Single Xcode project, multiple targets sharing 80%+ of code.
Next: Architecture