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

  1. User can create multiple boards.
  2. Each board has user-defined columns (default: “To Do”, “In Progress”, “Done”).
  3. Columns are reorderable via drag.

Cards

  1. Cards have title, optional description, due date, priority, color tag, optional checklist.
  2. Cards can be moved between columns via drag.
  3. Cards can be reordered within a column via drag.
  4. Tapping a card opens detail in a sheet (iPhone) or inspector (iPad/Mac).

Sync

  1. All boards sync across the user’s devices via CloudKit private DB.
  2. New boards/cards appear on other devices within 5 s when online.

Widget

  1. iOS: widget shows top 3 cards of the user’s “primary” board.
  2. macOS: a menu bar item shows the same (acts as the macOS widget).

AppIntents

  1. Shortcuts shows: “Add Card”, “Move Card”, “Find Cards by Tag”, “Open Board”.
  2. Siri invocations work without launching the app.

iPhone-specific user stories

  1. Board list is the root; tap a board to drill into columns.
  2. Columns are a horizontally-paged view (one column per page on small phones).
  3. Pull-to-refresh forces a CloudKit sync.

iPad-specific user stories

  1. Default split view: board list (sidebar) | columns (content) | card detail (inspector).
  2. Drag-and-drop between columns is fluid with multitouch.
  3. Apple Pencil scribble works in card detail.

Mac-specific user stories

  1. NSToolbar with: “+ New Card”, “+ New Board”, “Sync now,” “Show inspector” buttons.
  2. CommandMenu entries: ⌘N new card, ⇧⌘N new board, ⌘R refresh sync, ⌘I toggle inspector, ⌘F search.
  3. Multi-window: open multiple boards side-by-side, each in its own window.
  4. Menu bar item: click to show top 3 cards in a popover; keyboard shortcut ⌥⌘P opens it.
  5. Sidebar visible by default; user can collapse via ⌘0.
  6. 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