Skip to content

Overview

GitHub Ticket: https://github.com/Arda-cards/management/issues/316

This project delivers the ability for users to attach images to Items (and, by extension, any entity that supports a media field). It covers the full stack: infrastructure (S3 storage, CDN delivery, presigned upload workflow), backend API integration, and user experience design.

  • Use cases: Set, replace, remove, and view entity images via a unified input surface supporting file selection, drag-and-drop, clipboard paste, URL entry, and camera capture. Includes grid thumbnail display, image inspector overlay, and inline edit from grid.
  • First entity: Item product images (1:1 square aspect ratio).
  • Infrastructure: Managed S3 bucket with CloudFront CDN, presigned POST upload, tenant isolation.
  • Reusability: Generic entity media components designed for specialization to other entity types (business affiliates, user profiles, orders).

See Scoping for per-scenario scope decisions.

DirectoryContents
ScopingPer-scenario scope decisions with links to use cases and decision log
Use Case DefinitionUse case analysis, Round 1 SME feedback summary, copyright liability consultation
UX DesignUX design work — component designs, interaction specifications, Storybook story plans
Previous Design WorkBackend architecture: FileStore specification, design sessions, decision log
Decision LogProject-level decisions (SD-01 through SD-16)
Use CaseDescription
GEN::MEDIA::0001Set Entity Image — unified input surface (7 scenarios)
GEN::MEDIA::0002Remove Entity Image — clear and revert to placeholder (1 scenario)
GEN::MEDIA::0003View Entity Image — grid thumbnail, inspector overlay, error fallback (3 scenarios)
REF::ITM::0003::0010Set Item Image During Creation
REF::ITM::0004::0006Change or Remove Item Image

The project is complete with all core phases delivered and the primary frontend PR (arda-frontend-app#742) merged to main. The following administrative items remain open due to reviewer PTO and are tracked for follow-up:

PhaseRepositoryPRStatus
1: AWS Infrastructureinfrastructure#435Merged
2a: common-modulecommon-moduleReleased (8.1.0)
2b: operations endpointsoperations#161Merged
3.1: api-proxy publishapi-proxy#3Merged (v2.0.0)
3.2–3.4: Design systemux-prototype#63–#99Merged (5.0.0)
3.5: BFF routesarda-frontend-app#742Merged (0.102.0)
3.6: SPA integrationarda-frontend-app#742Merged (0.102.0)
3.7: ReleasedocumentationThis closure

Three backend design sessions were completed, covering bucket organization, CDN integration, upload workflow, S3 abstraction design, and Item module integration. Key architectural decisions (two-bucket strategy, presigned POST with S3-enforced validation, phased CloudFront rollout) are documented in the design decision log.

The user-facing use cases (GEN::MEDIA::0001, GEN::MEDIA::0002, GEN::MEDIA::0003) have been written and reviewed. Round 1 SME feedback has been incorporated — see the feedback summary. Scoping decisions (SD-01 through SD-16) are recorded in the decision log.

A copyright liability consultation has been prepared analyzing the risk profile of each image input method. Two addendums cover the effect of a user-facing copyright verification prompt (recommended for all upload methods) and the constraints required for cross-tenant sharing of image data.

IdDecisionStatusReference
SD-01Fetch-and-store external URLsResolved (TD-01/TD-09 — SPA-side fetch-and-store)Decision Log, Copyright Consultation
SD-05Cross-tenant image sharingOut of scope for this versionDecision Log
SD-10Auto-compressionIn scope (implemented in UX components)Decision Log

Copyright: (c) Arda Systems 2025-2026, All rights reserved