BMAD-METHOD/bmad/bmm/agents/hand-off/USER-STORIES.md

5.9 KiB
Raw Blame History

User Stories (Expanded) — Top tickets expanded into stories with Acceptance Criteria and Tasks

Convert each ticket into user stories using the persona. These are ready to copy into your tracker.

Story 1 (T1.2) — Local DB & journaling core

Title: As a Senior PM, I want to create/edit/delete journal entries offline so I can capture thoughts quickly. Priority: P0 | Estimate: 20h Acceptance Criteria:

  • I can create a new entry (title optional) and save it offline.
  • The entry appears in my list immediately with timestamp.
  • I can edit and delete an entry; deleted items move to soft-delete state.
  • Search returns entries by text and tag. Tasks:
  • Choose local DB (SQLite/WatermelonDB) and implement models
  • Implement CRUD operations and local persistence
  • Add full-text search index
  • Write unit tests for CRUD and search

Story 2 (T1.3) — UI: Home/New Entry/Entry Detail/Tags

Title: As a user, I want a quick-capture UI and easy navigation so I can record entries quickly. Priority: P0 | Estimate: 18h Acceptance Criteria:

  • Home shows recent entries with quick + FAB to create new entry.
  • New Entry screen supports multi-line text, tag picker, and save.
  • Entry detail shows transcript/audio (if any), edit, convert button. Tasks:
  • Implement navigation stack and screens
  • Build tag picker component
  • Connect UI to local DB

Story 3 (T1.5) — Audio capture UI & file storage

Title: As a user, I want to record voice clips and play them back so I can capture thoughts hands-free. Priority: P0 | Estimate: 12h Acceptance Criteria:

  • I can record/pause/stop audio clips up to 2 minutes.
  • Recorded files are stored locally and playable.
  • A "Transcribe" button is available on the entry detail screen. Tasks:
  • Build audio recorder using React Native Audio APIs / Expo Audio
  • Store files in app storage and link to entry
  • Add playback UI and controls

Story 4 (T1.6 + T1.7) — Signed upload & client-server integration

Title: As the system, I must upload audio securely to server for transcription so that the transcription service can process it. Priority: P0 | Estimate: 16h Acceptance Criteria:

  • Client requests signed upload URL for audio and successfully uploads to storage.
  • Server creates a transcription job and returns jobId.
  • Client can poll job status or receive push when transcript is ready. Tasks:
  • Implement /api/signed-upload
  • Implement client upload flow (PUT to signed URL)
  • Implement /api/transcribe/start to queue job
  • Implement job status polling or push notification

Story 5 (T2.1) — Whisper transcription worker

Title: As the system, I need to transcribe uploaded audio using Whisper and delete audio after transcription. Priority: P0 | Estimate: 12h Acceptance Criteria:

  • Worker downloads audio, calls Whisper API, returns transcript and confidence.
  • Raw audio is deleted from storage after successful transcription (TTL enforced).
  • Transcript stored and linked to entry; client notified of completion. Tasks:
  • Implement worker to call OpenAI Whisper (or choice of provider)
  • Implement audio deletion post-success
  • Store transcript and publish result to client

Story 6 (T2.3 + T2.4) — OpenAI generation proxy & client convert UI

Title: As a user, I want the app to produce LinkedIn-ready post variants from my entry so I can share insights quickly. Priority: P0 | Estimate: 22h Acceptance Criteria:

  • Server returns 13 variants with hashtags and CTA based on tone preset.
  • Client displays variants; user can select and edit before publishing.
  • Token usage is logged for cost monitoring. Tasks:
  • Implement /api/generate-post proxy with prompt templates
  • Build client convert UI to show variants and allow edit
  • Add token usage logging

Story 7 (T2.5) — LinkedIn OAuth & publish

Title: As a user, I want to connect my LinkedIn account and publish posts directly so I can share without manual copy/paste. Priority: P0 | Estimate: 16h Acceptance Criteria:

  • User can connect LinkedIn using OAuth and grant w_member_social scope.
  • Server stores access token securely; server posts UGC and returns success.
  • Fallback share flow available if OAuth not set up. Tasks:
  • Implement OAuth Authorization Code flow server-side
  • Implement /api/publish-linkedin endpoint
  • Implement client flow for connect and publish

Story 8 (T3.1 + T3.2) — Retention, soft-delete & consent logs

Title: As a user, I want retention controls and clear consent logs so I can manage my data and privacy. Priority: P0 | Estimate: 16h Acceptance Criteria:

  • User can select retention window (30/90/365/indefinite).
  • Soft-delete moves items to a trash that is purged after TTL.
  • Consent logs record processing actions with timestamps and are viewable/exportable. Tasks:
  • Implement retention settings UI
  • Implement soft-delete and purge engine (local & server if synced)
  • Implement consent log storage and UI

Story 9 (T3.3) — Cost controls & quotas

Title: As the operator, I want quotas and usage alerts to control API spend. Priority: P1 | Estimate: 8h Acceptance Criteria:

  • Admin can set daily and monthly quotas for generation and transcription.
  • System enforces quotas and informs users when limits are hit. Tasks:
  • Add usage tracking in server logs
  • Implement enforcement and UI alerts

Story 10 (T3.4) — Build & store prep

Title: As an operator, I want TestFlight/Play Store builds and store assets prepared so we can release the MVP. Priority: P1 | Estimate: 12h Acceptance Criteria:

  • Test builds available for iOS and Android
  • Privacy policy ready and linked
  • Store screenshots and descriptions prepared Tasks:
  • Package builds, create metadata, upload to TestFlight/Play Console

If you want, I will now:

  • Create epic parent issues in GitHub and link these stories (requires GH access), and/or
  • Convert each user story into GitHub issues with the acceptance criteria included (I can run the import once you confirm method).

Say which next action you want: "create epics in GH", "create stories in GH", or "export stories JSON".