Skip to content

Homepage and content

The storefront home page and its CMS content — banners, highlighted subcategories, and the homepage record. This lives in the admins module, not a separate "cms" module.

How this page was verified

Read on 2026-09-15 from the backend admins module (homepage/banners), the admin /admin/homepage area and the storefront home /.

Backend

The admins module owns the homepage/CMS content: entities promo_banners, highlight_subcategories, and the homepage model. Resolvers: homepage (homepage) for the CMS, and storefront-homepage (frontHomepage) for the shop. Updating the homepage (banners, highlights) is a REST PUT on admins/homepage.

Stores (stores, store_images) are also CMS-managed content and are covered in Members and auth; the storefront store locator reads them.

Storefront

Home is / (src/app/page.tsx, a server component with static metadata): hero, flash-sale, collections, promo banners, featured/special products, journal highlights, warranty. Homepage state is held in src/context/homepage-context.tsx (exported as HompageProvider — cite as-is), gated by NEXT_PUBLIC_FEAT_HOMEPAGE_SETTINGS. The hero video URLs come from NEXT_PUBLIC_HOMEPAGE_VIDEO_DESKTOP_URL / _MOBILE_URL.

The "special product" area is driven by EXSPORT_STOREFRONT_SPECIAL_PRODUCT_HEAD_ID on the backend and frontSpecialProductType.

Admin

/admin/homepage/edit (src/app/admin/homepage/edit/page.tsx) — a single editable record, not a list. Data in src/lib/homepage/. Stores are at /admin/stores.

Gotchas

  • One homepage record. The admin edits one record; there is no list of many.
  • CMS content is split across modules. Banners/highlights/homepage are in admins; the blog is in Journals; catalogue banners are in Catalogue. There is no single CMS module.