- Theme landing — URL (admin panel):
/admin-panel/website/theme-v2— What you do there: Choose between the visual builder and the code editor - Visual builder — URL (admin panel):
/admin-panel/website/theme-v2/editor— What 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 editor — URL (admin panel):
/admin-panel/website/theme-v2/code— What 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 page — URL (admin panel):
/admin-panel/website/theme-v2/settings— What 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/*.fluidwhose inline{% schema %}parses as valid JSON appears in the builder's "Add section" panel. There is no registration step:schema/theme.json'ssectionsarray is informational only (the seeder readstheme.jsonfor 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.