Branding
Make the website and the dashboard yours: the name, the logo and icons, the colours and type, the contact details and the search engine texts.
For the Full Stack package
Where the brand lives
| What | Website (storefront/) | Dashboard (admin-dashboard/) |
|---|---|---|
| Names, logo, domain, contact, links | src/config/brand.config.ts | src/config/brand.config.ts, plus the name in messages/layouts/ |
| Colours | src/styles/theme-variables.css | src/styles/theme-variables.css |
| Logo files and icons | public/brand/, public/, src/app/ | public/brand/, public/, src/app/icon.svg |
| Wording | messages/ | messages/ |
Every colour is a token defined once for the light theme and once for the dark theme. Nothing in the markup holds a colour of its own, so a changed token reaches every page.
The website's name
In storefront/src/config/brand.config.ts, each name has an English and an Arabic value:
name: { en: "Food Studio", ar: "فود ستوديو" }, // the restaurant
company: { en: "Food Studio", ar: "فود ستوديو" }, // legal or trading name
shortName: { en: "Food Studio", ar: "فود ستوديو" }, // tab titles and the app icon label
storeName: "Food Studio", // the logo link's accessible nameThe name reaches the page titles, the footer copyright, the installable app's manifest and the structured data search engines read.
The website's logo and icons
The header shows one logo file per language and theme, in storefront/public/brand/. Each is the whole lockup, mark and lettering in one image.
| File | Used on |
|---|---|
public/brand/wordmark-white.webp | English, dark theme |
public/brand/wordmark-master.webp | English, light theme |
public/brand/wordmark-ar-white.webp | Arabic, dark theme |
public/brand/wordmark-ar-master.webp | Arabic, light theme |
- Replace them with your own and set each file's width, at a height of 176, in
LOCKUPSinsrc/layouts/app/NavBar/components/Logo.tsx. - The home-screen icons are
public/web-app-manifest-192x192.pngandpublic/web-app-manifest-512x512.png; the browser icons arefavicon.ico,icon0.svg,icon1.pngandapple-icon.pnginsrc/app/. - The star in the rewards section is
public/brand/rewards-star.svg.
The website's colours and type
| Token | Role |
|---|---|
--primaryColor | Buttons, selected states, the brand red |
--heading-red | The coloured words in the display headings |
Both are in storefront/src/styles/theme-variables.css, once per theme. Check that text on your new brand colour still reads at 4.5 to 1 in both themes. The type is Montserrat for the display headings, Inter for Latin body text and IBM Plex Sans Arabic for Arabic, loaded in src/app/layout.tsx. The browser bar and splash colours are theme and manifest in the brand config.
Search results, sharing and the domain
metain the brand config holds the home page's title, description and keywords in both languages, and the sharing image,public/og-image.jpgat 1200 by 630. Replace that image with your own.- Every other page takes its title and description from
messages/seo/en.jsonandmessages/seo/ar.json. A dish page uses the dish's own name, description and first picture. domain.urlis the base of every canonical address, the sitemap and the robots file. Set it to your real address before you deploy.
Contact details and links
contact in the brand config holds the restaurant-wide email, phone and address, and links the website and social links. The address shows only when the API has no kitchen to show: kitchen addresses, phone numbers and hours on the contact and locations pages come from the kitchens you edit in the dashboard.
The dashboard's name, logo and colours
- Name:
messages/layouts/en.jsonandar.json, underbrandandnavbar, hold the name, the page title, the description and the footer line.nameandcompanyinsrc/config/brand.config.tsare the same names where text is needed outside a translation. Searchmessages/for "Food Studio" to catch the rest. - Logo: replace
mark.svg,wordmark-white.webp,wordmark-master.webp,wordmark-ar-white.webpandwordmark-ar-master.webpinpublic/brand/, keeping the names, or pointlogoin the brand config at new files with their width at a height of 176. The installable app's icons are the twoweb-app-manifestfiles inpublic/, and the favicon issrc/app/icon.svg. - Colours:
--primaryColorand--on-primary(the brand colour and the text on it),--brand-highlightand--brand-text(the brand colour as text or an outline),--background,--surfaceand--border,--textand--text-muted, and--errorColor,--successand--warning, insrc/styles/theme-variables.css, once per theme. - Type: the
--font-sanstoken insrc/styles/base.css, Inter Variable by default. - Address:
NEXT_PUBLIC_DASHBOARD_URLin the dashboard's.env.
The restaurant's own details
The seed stores the restaurant's name, tagline, support email and phone as settings: site_name, site_tagline, support_email and support_phone. Staff change them in the dashboard under Settings, Restaurant, All settings by key. The kitchens' names, addresses and contact details are edited there too.
Wording and legal texts
Every visible sentence is in messages/, one folder per area with en.json and ar.json. Rewrite the copy in both files. The privacy policy and terms of service in messages/legal are written for a fictional restaurant: replace them with texts that fit your business and your country before you go live.