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.
Related services¶
- studio-link-evaluator — consumes
design.v1indirectly (viastudiolink) 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