Skip to content

studio-design-library

Cloud Run / CQS queue name: studio-design-library Legacy name: platform-designer-service (deprecated) Tech stack: Quarkus (Java 21), Gradle multi-module, Cloud Spanner, Liquibase API: Apigee — Designer API

studio-design-library is the authoritative source of all creative assets on the platform. It manages the full lifecycle of designs (SVG-based ESL templates with property-mapping rules), canvas designs (multi-page design containers), design images (raster assets embedded in designs), fonts, colour palettes, ESL device-type metadata (esltype), canvas type definitions, and pre-evaluation link references (designerlink). When a design is published it transitions to an immutable state; the service writes the published design DTO to DTOflow so downstream services always see a stable snapshot.

Module Structure

The service is split into four Gradle modules:

Module Purpose
root /version and /health endpoints; consolidates all tests and dependencies for the entire project
common Shared configuration, cross-cutting concerns, Cloud Spanner client setup
asset Upload, download, and listing of raster and font assets
design CRUD and publication lifecycle for designs, canvas designs, and device types
device ESL device and ESL-type management

DTO Ownership

DTO Version Why this service owns it
design v1 Core creative template: SVG content + property-mapping rules. Becomes immutable on publication.
canvasdesign v1 Multi-page canvas container referencing one or more design records.
designimage v1 Raster image asset embedded inside an SVG design element.
font v1 Font file asset uploaded by studio users; referenced by designs at render time.
palette v1 Named colour palette applied to a design during rendering.
designerlink v1 Pre-evaluation link written by the designer when attaching a design to an ESL. Superseded by studiolink after evaluation by studio-link-evaluator.
esltype v1 ESL device-type specification (screen dimensions, colour depth, page count).
canvastype v1 Canvas-type definition used by the canvas editor.

CQS Subscriptions

studio-design-library has no CQS subscriptions. It is a primary source of truth: users and API clients push data in via REST, and the service publishes resulting DTOs outward. Other services subscribe to its outputs.

Processing Logic

Inbound (REST): Studio users interact with the Apigee-fronted Designer API. Mutations are validated, persisted to Cloud Spanner (schema managed by Liquibase), and then published as DTOs to DTOflow.

Publication gate: A design begins in a mutable draft state. Once a user triggers publication, the service transitions its status, freezes the content, and emits the design.v1 DTO. Downstream services (notably studio-renderer and studio-link-evaluator) only ever consume published, immutable designs from DTOflow — they never read directly from Cloud Spanner.

Asset storage: Binary assets (images, fonts) are stored in Cloud Storage and referenced by path within the DTO. The designimage and font DTOs carry the resolved download URLs so consumers do not need direct storage access.

Monitoring: The alert policy platform_designer_service_error_log_alert_policy fires to the EVO Maintenance Teams channel if Cloud Logging records more than 1 severity=ERROR per minute for 5 consecutive minutes. Dashboard resources are managed in platform-gcp-resources.

  • studio-link-evaluator — consumes design.v1 indirectly (via studiolink) and reads designs to perform rendering context resolution
  • studio-renderer — subscribes to design.v1, canvasdesign.v1, designerlink.v1; fetches full design content at render time
  • studio-scenario-library — scenario rules reference design IDs that must exist in this service