Skip to content

Changelog: Backend Services for Item Image Upload

Summary of all changes delivered by the backend services sub-project (Phase 2).

PRs: #167 (merged 2026-04-02)

  • S3AssetService — presigned PUT, presigned POST (manual SigV4), HEAD with metadata validation. Single constructor, full capabilities, exposes s3AsyncClient and bucket for delegate access.
  • AssetKeyGenerator — tenant-scoped S3 key construction (<tenantId>/<namespace>/<uuid>.<ext>).
  • CdnUrlResolver — CDN URL construction and validation with tenant isolation. Collects all validation errors into AppError.Composite.
  • CsvS3BucketDirectAccess refactored to delegate all S3 primitives to injected S3AssetService. Simplified factory: invoke(keyNamespace, s3AssetService).
  • MockAWS.Service.STS added for LocalStack STS support in tests.
  • AWS SDK upgraded from 2.34.3 to 2.42.24. Added aws-sdk2-sts module.
  • Fixed pre-existing bug: metadata[it.value] corrected to metadata[it.key] in CSV metadata error messages.

PRs: #168 (merged 2026-04-03)

  • ImageS3AssetAccess — entity-agnostic facade for image upload operations. Encapsulates credential generation, CDN URL resolution, and upload verification. Parameterized via Config(entityType, fieldName, ardaKeyPrefix).

PRs: #161 (merged 2026-04-06)

  • POST /v1/item/image-upload/request-upload-credentials endpoint returning presigned S3 POST form fields, object key, and CDN URL.
  • ItemValidator imageUrl validation on create/update: CDN host and tenant path validation, S3 object existence and tenant metadata check. Unchanged URLs grandfathered (TD-15).
  • ItemValidator converted from object to class with injected ImageS3AssetAccess dependency. ItemUniverse accepts ItemValidator as constructor parameter.
  • IAM policies: ImageS3AccessPolicy and AllowAssumeImagePresignRole in CloudFormation pre-install template.
  • Helm configmap values for image infrastructure + uploadPresignRoleArn.
  • Helm value loader (read-cloudFormation-values.cmd) updated with all image infrastructure exports and uploadPresignRoleArn.
  • ImageUploadConstants deleted — absorbed into ImageS3AssetAccess.Config and Impl companion.
  • arda-common-version bumped to 8.1.0.

Branch: jmpicnic/item-image-upload-backend (pending PR)

  • Decision log entries TD-26 through TD-30.
  • Full backend services project documentation: goal, requirements, analysis, specification, verification, plans (Run 1 + Run 2), choreography.
  • Kotlin coding standards updates: !! prohibition, single exit point, flatInApplicationContext, URI.toURL(), Result<T> for all fallible ops, fail-fast ordering, data classes before producers, collect-all-errors, DI rules, AppError subclass reference.
  • Release lifecycle: CHANGELOG category selection and version impact guidance.

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