Feature Specification: Application Catalog
Created: 2026-09-23
Status: Implemented
Input: Reconstructed from the code of api/ at 0bf4ecd36, api/specification.md, and the commit that added the catalog.
User Scenarios & Testing (mandatory)
User Story 1 - List the applications (Priority: P1)
A front-end shows the applications and components that a deployment can have, with a title, a description, a home page and an icon. It gets them from api, and does not keep its own list. The listing is wider than the form: it also holds supporting components that no schema names.
Why this priority: a front-end with its own list shows applications that core does not give, or misses new ones.
Independent Test: unit tests check that the listing has one entry for each entry in the catalog of core.
Acceptance Scenarios:
- Given the catalog of
core, When the client lists it, Thenapireturns each entry with its metadata, and whether the form configures it, whether the operator can turn it off, and whether it has its own subdomain. - Given an entry with an icon, When the client asks for the icon, Then
apireturns the image with a tag from the hash of its content. - Given an unknown entry, or an entry without an icon, When the client asks for its icon, Then
apireports it as not found.
Edge Cases
- A client sends the current tag:
apireports the icon as not modified. - An entry without artwork has no icon in the listing.
Requirements (mandatory)
Functional Requirements
- FR-001:
apiMUST serve the catalog of the default source, made at build time fromcore. The icons MUST come from the package source of each component, and serving one MUST NOT need an eval. - FR-002: The catalog MUST be public, because it contains no data of a deployment.
- FR-003:
apiMUST tag an icon with the hash of its content, not with its modification time, and MUST allow clients to keep it in a cache for a short time. - FR-004: The build MUST fail when an application of the form has no artwork.
Key Entities
- Catalog entry: an application or component of
core: name, metadata, flags and icon.
Success Criteria (mandatory)
Measurable Outcomes
- SC-001: A front-end shows all applications of
corewithout a hard-coded list.
Assumptions
- The catalog follows the default source. The catalog of another source is not served.
Known Deviations
None.