Developer docs  /  Themes

Admin & builder discovery

  • Theme landingURL (admin panel): /admin-panel/website/theme-v2What you do there: Choose between the visual builder and the code editor
  • Visual builderURL (admin panel): /admin-panel/website/theme-v2/editorWhat you do there: Pages (incl. creating CMS pages), sections + their settings, blocks, menus, header/footer/announcement bar, theme settings (colours/typography), page SEO — with a live draft preview
  • Code editorURL (admin panel): /admin-panel/website/theme-v2/codeWhat you do there: Create and edit theme files (templates, sections, snippets, CSS, JS). Saves are validated (Fluid parse + schema JSON) and bump the cache version, so changes are live on the next request
  • Theme settings pageURL (admin panel): /admin-panel/website/theme-v2/settingsWhat you do there: The schema-driven global settings outside the builder

Two deployment paths for new files:

  • Org override (most common): create the file in the code editor. It overlays the base theme for that organisation only, instantly.
  • Base theme: add the file under Alyta.Web/wwwroot/themes/origin/ in the repo. The startup seeder syncs it by content hash; orgs pick it up per the base-update rules in README §6.

How the builder discovers things (the rules)

  • Add-section list — automatic. Every sections/*.fluid whose inline {% schema %} parses as valid JSON appears in the builder's "Add section" panel. There is no registration step: schema/theme.json's sections array is informational only (the seeder reads theme.json for the theme's name/version; nothing gates the builder on that list).
  • Page picker — NOT automatic. The builder's page list is: Home, Spaces, Locations, Features, Contact us, a sample Space detail, plus CMS pages created in the builder's Pages panel. A custom template you add by hand (e.g. templates/storage-tips.fluid) renders fine at /t/storage-tips, but it does not appear in the builder's page picker — see the honest trade-off in Recipe 3.
  • Blocks use the same setting types as sections, including the entity pickers (space, attribute, …). Whatever the reference table in README §5.1 lists works inside a block too.

URLs: the /t mount

The theme engine is mounted under /t. Your new page's real URL is/t/{slug} (e.g. /t/storage-tips). Domain-root paths (/storage-tips)belong to the Angular public app / infrastructure routing and are not thetheme's to claim. Build internal links with site-relative /t/... paths —menu items entered as /storage-tips are normalised throughstorefront_url when the header renders them.