Skip to content

Phase 5 — Portfolio CMS and Acronym public renderer #35

Description

@b5463

Part of Milestone C — Acronym Public Portfolio. Ref: #27

Build portfolio management directly into SYSTEMS., while keeping acronym.sk as a separately deployed public renderer.


Alex tasks

Public catalog API

  • GET /api/public/catalog?locale=sk
  • GET /api/public/catalog?locale=en
  • GET /api/public/products/:slug?locale=sk
  • GET /api/public/snapshot/latest?locale=en

Public API field allowlist

Never expose: container IDs, ports, repo URLs, deployment logs, internal routes, admin IDs, customer data, billing internals, secret names.

  • Enforce allowlist on all /api/public/* responses

Deployment

  • Deploy acronym.sk as the first primary V4 system

Tomas tasks

Portfolio tables

  • portfolio_pages
  • product_portfolio_profiles
  • portfolio_blocks
  • portfolio_snapshots
  • portfolio_redirects
  • public_forms
  • form_submissions
  • lead_status
  • media_assets
  • legal_versions

Snapshot pipeline

  • Draft CMS tables → validation → preview snapshot → publish → immutable snapshot → public catalog API → renderer cache
  • Public renderer must not query draft tables

Dashboard Portfolio area

  • Homepage editor
  • Navigation editor
  • Product-page editor
  • Media library
  • Legal pages
  • Redirects
  • Locales management
  • Preview
  • Publish history
  • Snapshot rollback

SK/EN locale support

  • Localised slugs
  • Localised SEO
  • Language switch mapping
  • Translation completeness indicator
  • Fallback rules
  • Localised legal pages

acronym.sk renderer

  • Pre-rendered pages
  • Snapshot cache
  • Last-known-good snapshot
  • ETag support
  • Stale-while-revalidate headers
  • Hashed assets
  • No live DB dependency for public page render

Tests

  • Draft change does not alter public site
  • Publish creates immutable snapshot
  • Snapshot rollback works
  • SK and EN pages render
  • Missing translation state is visible to operator
  • Public API exposes no private fields
  • Renderer works when SYSTEMS API is temporarily down

Do not build yet

Live payments, product-key emails, entitlement enforcement.

Exit gate

  • Portfolio CMS can publish SK/EN snapshots
  • acronym.sk renders from snapshot
  • Portfolio remains available during SYSTEMS API outage
  • Root domain operated as a primary system

Rollback

Use last-known-good snapshot. Disable new publish actions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions