This page gives a general overview of the key concepts behind the Laioutr frontend product. Understanding these will help you work with the frontend, extend it with apps, or integrate a new backend or feature.
The Laioutr frontend is a Nuxt 3 application. It is the storefront or website your end customers see: product pages, category listings, search, cart, content pages, and so on. Everything that runs in the browser—routing, rendering, client-side state—lives in this single Nuxt app.
On top of Nuxt, the frontend uses Laioutr core packages (e.g. @laioutr-core/frontend-core) for shared behaviour: consent store, tracking store, link resolver, page and section rendering, and APIs for media library and Orchestr. Apps (Nuxt modules) then add UI components, sections, blocks, and backend integrations (Shopify, Shopware, Commercetools, etc.). So: Nuxt + Frontend Core + Orchestr + Apps form the frontend product.
The structure and content of the frontend are not hard-coded. They are defined in Cockpit (Studio), where editors configure:
So the frontend is driven by configuration. The same Nuxt app can serve many different “sites” by changing the project config; editors change the experience without deploying new code.
The frontend does not talk to Shopify, Shopware, or your CMS directly. It talks to a single Orchestr API (the backend-for-frontend) that runs as part of the same Nuxt app (server-side). Orchestr is the data layer:
All of this is token-based: the frontend uses canonical tokens (e.g. ProductBySlugQuery, ProductVariantsLink) and does not know which app implements them. Apps register handlers for those tokens and call their backends; Orchestr caches and composes the result. So the frontend stays backend-agnostic; swapping or adding a backend is done by adding or changing apps, not by changing the storefront code.
A page in the config has an id, a type (a page type token name, e.g. ecommerce/product-detail-page), and a path (e.g. /products/:slug). Page types are defined in code and describe:
So routing is driven by the RC: each page in the config becomes a route. The link resolver on the frontend can resolve links by page (by id), by page type (with params), or by reference (e.g. Product slug → Product Detail page URL). Page types are the bridge between “what kind of page this is” and “what URL and data it has”.
Laioutr uses canonical types so that the frontend and all apps speak the same language. Products, categories, media, cart, filters, sortings—these are defined once (e.g. in @laioutr-core/canonical-types and @laioutr-core/core-types) and used everywhere. So a section that displays a “product tile” expects a canonical Product shape (or a subset of components); it does not care whether the data came from Shopify or Shopware.
Tokens are the same idea for behaviour: query tokens, link tokens, action tokens, page type tokens. They are unique identifiers (often with type metadata) that the frontend uses to request data or run an action. Apps implement handlers for those tokens. So the frontend says “run ProductsByCategorySlugQuery with this input”; Orchestr finds the handler (e.g. from the Shopify app) and returns the result. Tokens are the contract between the frontend, Orchestr, and apps.
The frontend ships with features that are themselves abstracted so you can plug in different implementations:
So the frontend product is layered: a stable core (Nuxt + Frontend Core + Orchestr), canonical types and tokens, and then features and apps that implement or extend those concepts. As a developer, you can add a new app (with Orchestr handlers and sections), implement a new adapter (consent, tracking, media), or add a new page type—without changing the core.
Together, these concepts let you build a storefront that is configurable in Studio, powered by any backend via Orchestr and apps, and extensible with new features and adapters. For more, see Features and Orchestr.
Overview
The Laioutr frontend is the customer-facing Nuxt app with pages, sections, and blocks composed in Studio, powered by a unified data layer (Orchestr) and a set of features you can extend. Start here to understand the product and navigate the docs.
Tech Stack
What you need to run the Laioutr frontend and what it is built from including Node, Nuxt, Vue, core packages, and optional apps.