Skip to content

30 — Milestone 2 Delivery Plan (Blueprint §9.2)

Cursor-ready execution plan for Milestone 2: public token page, media upload/storage, and moderation inbox/detail.

30 — Milestone 2 Delivery Plan (Blueprint §9.2)

Section titled “30 — Milestone 2 Delivery Plan (Blueprint §9.2)”

Source: 02-Implementation-Blueprint.md§9 Release Plan → Milestone 2 (2 weeks).

Milestone 2 blueprint scope:

  • Public token page
  • Media upload + storage
  • Moderation inbox and detail page

This document is a build spec only. No code changes are implied until a task references this file.

Related: 06 (public submission), 09 (inbox), 10 (detail), 12 (moderation settings), 08 (security/compliance), 29 (Milestone 1 dependencies).


Enable customers to submit token-bound video/photo testimonials and merchants to review/moderate them in admin with reliable media handling and secure validation.


  1. Public submission flow:

    • /t/:token page
    • token validation + consent requirement
    • final submit API
  2. Media handling:

    • signed upload URL endpoint
    • storage key/asset persistence
    • processing status tracking (uploaded/processing/ready/failed)
  3. Moderation UI:

    • submissions inbox (tabs/filters + bulk moderation basics)
    • submission detail (preview, metadata, approve/reject/flag/publish controls)
  • Theme storefront widget rendering (Milestone 3)
  • Analytics and billing pages (Milestone 3)
  • Full UTM/source attribution

Must already exist before Milestone 2 starts:

  • campaign/request schema and webhook request creation (29)
  • valid submissionToken and submissionUrl generation (07)
  • baseline route map and auth conventions (21, 24)

  • Token route (/t/:token) with:
    • valid / invalid / expired states
    • product context locked from token
    • consent checkbox required
  • Upload URL endpoint that returns short-lived signed URLs
  • Media record (TestimonialMediaAsset) linked to submission
  • Submission API stores media reference and request linkage atomically
  • Inbox (/app/testimonials) with pending/approved/rejected/archived
  • Detail page (/app/testimonials/:id) with media preview + moderation actions
  • Moderation action logs

  1. Public submit

    • Valid token allows submission.
    • Invalid/expired token blocked with safe message.
    • Duplicate submit for same token returns idempotent conflict response.
  2. Media flow

    • Upload URL issued only for valid token/request context.
    • Submission and media rows are linked correctly.
    • Processing states visible in detail page.
  3. Moderation

    • New submissions appear in pending tab.
    • Approve/reject actions persist and are auditable.
    • Cross-shop access is blocked.

  1. valid token + video upload + submit
  2. valid token + photo upload + submit
  3. invalid token
  4. expired token
  5. duplicate submit (same token)
  1. pending item appears in inbox immediately
  2. approve transitions to approved
  3. reject requires reason
  4. publish toggle available only when allowed by status rules
  1. rate limit on public submit endpoints
  2. no sensitive token leakage in logs/errors

  1. Upload succeeds but submit fails

    • Mitigation: keep orphan cleanup job by age/status.
  2. Media processing delay causes moderation confusion

    • Mitigation: explicit processing status badges and fallback previews.
  3. Token abuse

    • Mitigation: expiry + rate limits + short-lived upload URLs.

7) Suggested implementation order (Cursor)

Section titled “7) Suggested implementation order (Cursor)”
  1. Implement token route loader + form shell.
  2. Implement upload-url endpoint + storage adapter.
  3. Implement submit endpoint transaction (submission + media + request status).
  4. Implement inbox list with filters and tabs.
  5. Implement detail page moderation actions and logs.
  6. Add security hardening and edge-case handling.

Milestone 2 is complete when:

  • customers can submit real media from token links,
  • submissions are persisted and track media states,
  • merchants can moderate from inbox/detail without manual DB operations,
  • security checks for token/public endpoints are in place.

  • 02-Implementation-Blueprint.md — §9 Milestone 2
  • 06-public-submission-page-screen-13.md
  • 09-submissions-inbox-screen-5.md
  • 10-submission-detail-screen-6.md
  • 12-moderation-settings-screen-9.md
  • 08-security-compliance-and-privacy.md

This folder already includes 05 through 29 plans. This file is 30-....