Skip to content

Build a website - pages, members, content and checkout ​

The real problem ​

Northwind needs a public website with a product catalogue, a sign-in for customers, some pages only members can read, and a checkout that takes orders. It must work on phones, and marketing should be able to change it without a developer.

The Website Designer in Studio builds this. A website is a set of pages made of sections and blocks. Every page is saved as a version, so publishing and going back are safe.

The idea in one minute ​

  • A website holds the site-wide settings: theme, languages, members, checkout, cookie banner, network rules.
  • A page is built from sections, and each section from blocks. Pages have drafts and published versions.
  • Templates give a good start: corporate, portfolio, online store, restaurant and SaaS. When a template gets a newer version, you see a banner and can apply the changes as drafts. Nothing goes live by itself.
  • CMS collections hold repeating content such as articles or products. A listing block can search, filter and sort a collection. Fields marked private are never shown or searched.
  • Members register and sign in on the site. Pages, sections and blocks can require a membership tier or a role, and the server removes anything the visitor may not see before the page is sent.
  • Checkout lets a visitor pick how to order: pay online through a payment connector, request a quote, or pay later by bank transfer or cash.

Designer path (Studio) ​

  1. Open Websites from Home, the Explorer tree or the command palette, then New and pick a template or describe the site and let the AI draft it.
  2. Edit pages on the canvas. Click what you want to change; the side panel shows its properties. A free-form grid mode is available when you need exact placement.
  3. Languages: pick the languages and use Add translation. A coverage table shows what is translated.
  4. Membership: switch on sign-in, choose the sign-in options (password, emailed code, emailed link, authenticator app, text message), add agreements that members must accept, and set a cookie banner if you need one.
  5. Checkout: add the options, tax, shipping methods, address collection and discount codes. Orders appear in the site's orders list.
  6. Preview as: choose a tier or role and see which pages and sections that visitor would get. The answer comes from the server, so it matches the live site.
  7. Publish. Review comments on pages can be assigned and resolved before you do.

Code path (CLI and MCP) ​

Log in once with erp login. Then:

bash
erp plugin op website-members                       # signed-up members
erp plugin op website-page-views --website northwind
erp plugin op website-feedback   --website northwind
erp plugin op website-domain     --website northwind # custom domain and its state
erp artifact list --type website
erp artifact get  --type website --id 12

A website and its pages are normal artifacts, so a plugin can ship them. Settings that depend on the environment, such as the domain, are not carried over when you install.

Safety and limits ​

  • Gated content is removed on the server. Hiding it on the page is never the only protection.
  • Sign-in has lockout after repeated failures, an optional bot check, and rate limits per address.
  • Network rules (allow and deny lists of addresses) can be set per site.
  • Members can download their data and delete their account from their account page.
  • Orders are saved in the Website application's own tables. Every order change publishes an event that other plugins can subscribe to.

What is not built ​

  • Live typing and cursor sync between two editors (merging happens on save).
  • Live carrier rates, inventory checks and stackable promotions in checkout.
  • Refund connectors other than Stripe.

Seeing what happened ​

  • Studio shows page views, visitor feedback, orders and review comments per website.
  • Member sign-ins and failures are recorded with the reason.
  • For a server-side error, an AI coding agent can read the backend log with the erp_tail_logs tool.

Where next ​