Files
tibi-svelte-starter/.agents/skills/website-solution-architecture/SKILL.md
T
apairon 958b45272d feat: enhance admin UI configuration and SSR handling
- Add support for number chip arrays and JSON editor in admin UI config.
- Introduce pagebuilder block registry for Svelte components in admin previews.
- Implement custom role names and a 3-layer cascade model for field-level permissions.
- Add CORS configuration hierarchy for better API security.
- Update project setup instructions for admin token and config management.
- Improve SSR 404 signaling with proper context handling in NotFound component.
- Refactor routing structure to separate NotFound page into its own route.
2026-05-12 23:20:31 +00:00

9.0 KiB

name, description
name description
website-solution-architecture Translate website requirements into a complete tibi-svelte-starter solution. Covers solution decomposition across collections, pagebuilder, navigation, SSR, actions, permissions, media, admin UX, and validation.

website-solution-architecture

When to use this skill

Use this skill when:

  • The user wants a complete website built on this starter
  • Requirements exist, but the data model and project structure do not yet
  • A feature request spans frontend, admin, hooks, SSR, and content modeling together
  • An LLM needs to decide what belongs in collections, blocks, actions, settings, or frontend code

Goal

The goal is to teach an LLM how to convert requirements into a coherent website solution on this stack.

That means choosing the right shape for:

  • content model
  • admin authoring UX
  • frontend rendering
  • SSR behavior
  • actions and workflows
  • media handling
  • permissions
  • verification

This skill is about architecture decisions, not isolated file edits.

Core principle

Do not start by adding components. Start by modeling the system.

On this starter, a complete website usually spans these layers:

  1. collections and actions in api/
  2. shared types in types/
  3. app shell, routing, and rendering in frontend/src/
  4. SSR validation and caching in api/hooks/
  5. admin ergonomics in collection meta/field config
  6. tests or direct validation steps

If the work starts at the UI layer without a content/admin model, the solution usually drifts.

Canonical architecture areas

1. Content model

Decide early which collections exist and why.

Typical website collections:

  • content for pages
  • navigation for header/footer/site menus
  • medialib for media assets
  • site settings or global content singleton
  • optional domain collections such as team, jobs, events, products, references

Do not create collections just because the frontend has a section. Create them when the data needs its own lifecycle, relations, searchability, or editorial ownership.

2. Pagebuilder model

Decide whether pages are best modeled as:

  • page entries with blocks[]
  • references to reusable sections
  • a mix of page-local blocks and reusable records

Use pagebuilder structures when editors need flexible composition. Use separate collections when content is reused across multiple pages or needs its own workflows.

3. Navigation model

Navigation is not an afterthought. It is often page-critical runtime and SSR data.

Design:

  • header navigation
  • footer navigation
  • utility navigation if needed
  • relation to localized paths

If navigation is part of the shell, it must be loaded and rendered coherently in browser and SSR.

4. Route model

This starter uses content-driven routing, not file-based routing.

Architectural decisions must account for:

  • language-prefixed public URLs
  • DB paths stored without language prefix
  • route translations
  • canonical paths and alias paths
  • SSR route validation in api/hooks/config.js

If the route model is unclear, the frontend and SSR will diverge.

5. Admin authoring model

Every serious website on this stack needs an editor-friendly Nova model.

Use:

  • preview
  • sidebar
  • containerProps.layout
  • dependsOn
  • drillDown
  • pagebuilder
  • subNavigation
  • singleton
  • foreign previews

I18n field config: When modeling multilingual content, decide early whether to use:

  • Field-level i18n — object fields whose subField names match language codes (de, en, etc.) are auto-detected and rendered with language tabs in Nova. Configured via api.meta.i18n in config.yml or per-collection meta.i18n.
  • Entry-level i18n — each entry represents one language, linked by a shared translationGroup UUID. The I18nEntryConfig type (from tibi-admin-nova/types/admin.d.ts) defines languageField, groupField, and copyFields/clearFields for translation cloning behavior.

See tibi-admin-nova/types/admin.d.ts interfaces I18nFieldConfig and I18nEntryConfig for the full API.

Do not treat admin config as optional polish. It is part of the solution architecture.

6. Actions and workflows

Decide whether non-page features belong in collections, actions, or both.

Typical action-based website workflows:

  • contact form
  • newsletter signup
  • booking or quote request
  • webhook receiver
  • AI helper endpoint

Do not force endpoint logic into fake CRUD collections.

7. SSR and caching

If the project uses SSR, the architecture must define:

  • which routes are SSR-valid
  • which collections influence rendered HTML
  • how invalidation happens
  • which page-critical data must be loaded during SSR

On this starter, SSR is architecture, not a plugin. It must be considered while modeling routing, navigation, page content, and mutation hooks.

8. Media and SEO

Most website projects need explicit decisions for:

  • media library usage
  • image fields and filters
  • alt texts and captions
  • SEO metadata per page
  • social/share metadata where required
  • publication windows

These decisions often belong partly in content collections and partly in admin ergonomics.

9. Permissions and editorial safety

Before implementing, decide:

  • who may edit which collection
  • which fields are readonly or hidden
  • which collections are public or internal
  • whether actions are public, authenticated, or internal only

Permissions are part of the architecture, not only a final hardening step.

Step 1: Extract the website capabilities

Turn the brief into concrete capability buckets:

  • page types
  • reusable sections
  • navigation
  • forms/workflows
  • media/SEO
  • localization
  • editor roles
  • SSR/publication needs

Step 2: Map capabilities to runtime surfaces

For each capability, decide whether it belongs in:

  • collection schema
  • action endpoint
  • pagebuilder block
  • site settings singleton
  • frontend-only presentation
  • hook-based server logic

Step 3: Shape the editor workflows

Before building components, decide how editors will:

  • create pages
  • compose blocks
  • edit navigation
  • manage reusable entities
  • preview references
  • find the right entries in Nova

If this step is skipped, the content model often becomes technically correct but operationally poor.

Step 4: Define the frontend boundaries

Clarify:

  • app shell responsibilities
  • which parts are pure presentation blocks
  • where data loading lives
  • how route parameters map to content queries
  • which features must be SSR-safe

Step 5: Define server responsibilities

Clarify:

  • route validation
  • public read filtering
  • cache invalidation
  • action validation and side effects
  • publication behavior

Step 6: Define verification before implementation expands

At minimum, define how to verify:

  • pages load in the browser
  • pages render in SSR when applicable
  • admin authoring is usable
  • actions/forms behave correctly
  • build and validate stay clean

Typical solution patterns

Marketing website

Typical shape:

  • content collection with pagebuilder blocks
  • navigation collection
  • global site settings singleton
  • SSR enabled for public pages
  • one or more public actions for forms

Content-heavy editorial website

Typical shape:

  • content plus additional domain collections
  • stronger use of relations and reusable entities
  • richer preview/search ergonomics in Nova
  • publication-aware SSR invalidation

Product or service website with lead generation

Typical shape:

  • structured domain collections for offers/services
  • pagebuilder pages for marketing presentation
  • public actions for inquiry flows
  • staff-facing inquiry persistence when follow-up is needed

Anti-patterns

  • Starting from Svelte components before defining collections and flows
  • Treating admin ergonomics as a later cleanup step
  • Mixing page data, workflow data, and settings without clear boundaries
  • Creating one-off block types for every page variation
  • Using collections where actions are the better model
  • Forgetting SSR implications while changing route or content shape
  • Leaving types, renderer, and collection schema out of sync

Architecture checklist

Before calling a website solution on this starter coherent, verify that all of these are answered:

  1. Which collections exist and why?
  2. Which content is page-local versus reusable?
  3. How are routes, language prefixes, and canonical paths modeled?
  4. Which authoring workflows exist in Nova?
  5. Which non-CRUD workflows require actions?
  6. Which data is page-critical for SSR?
  7. Which permissions protect content and workflows?
  8. How will success be validated technically and functionally?

What an LLM should inspect first

When asked to build a complete website on this starter, inspect in this order:

  1. api/collections/content.yml
  2. api/collections/navigation.yml
  3. frontend/src/App.svelte
  4. frontend/src/blocks/BlockRenderer.svelte
  5. types/global.d.ts
  6. api/hooks/config.js
  7. existing actions/hooks if the project already has workflows

This order exposes the actual project architecture before the LLM starts generating new code.