Site, Navigation & Metadata
Site metadata, navigation and branding for the Nuxt template.
Branding is intentionally split by concern: Nuxt owns document and SEO
metadata, website-config.ts owns social and mail identities, and dedicated
config files own each navigation surface.
Important files
| File | Role |
|---|---|
nuxt.config.ts | app.head, canonical site identity, SEO modules |
app/config/website-config.ts | Social profiles and mail provider/addresses |
app/config/social-config.ts | Converts configured profiles into visible links |
app/config/footer-config.tsx | Marketing footer groups |
app/config/route-config.ts | Shared Routes enum for primary URLs |
app/config/user-sidebar-config.ts | Dashboard/account navigation and role filters |
app/config/docs-sidebar-config.ts | Manual documentation tree |
app/config/docs-common-config.ts | Icons used by documentation code/file UI |
website-config.ts is not the metadata source of truth. The browser title,
description, public site URL, and site name currently live in
nuxt.config.ts.
Site identity and SEO
nuxt.config.ts currently sets app.head.title to SoarStarter Nuxt and the
site.url to https://soar-starter-demo.vercel.app. Change both before launch,
along with the description and site.name.
The installed SEO modules are @nuxtjs/sitemap and @nuxtjs/robots; Nuxt's
site config supplies their base identity. Page components can add page-specific
metadata with useSeoMeta/useHead. Keep the canonical public origin aligned
with NUXT_PUBLIC_BASE_URL so auth callbacks, upload URLs, sitemap output, and
metadata all describe the same deployment.
Social and mail identity
websiteConfig.metadata.social contains profile URLs. useSocialLinks() reads
the configured values, omits missing networks, and adds a mailto: link when
mail.supportEmail exists.
The same file selects the mail provider and defines:
mail: {
provider: "resend",
fromEmail: "Your Product <noreply@mail.example.com>",
supportEmail: "support@example.com",
}fromEmail is used by the Resend provider; supportEmail receives contact-form
messages. Verify the sender domain in Resend before using the production value.
Navigation
route-config.tsgives marketing/footer code one place to import stable URLs.footer-config.tsxdefines Product, Resources, Company, and Legal groups.user-sidebar-config.tsdefines dashboard, admin, account, and settings links; itsrolesfield controls menu visibility, not API authorization.docs-sidebar-config.tsis a manual tree. Adding a Markdown file does not add it to the sidebar automatically.docs-common-config.tsmaps filenames/extensions to icons for docs widgets.
Use NuxtLinkLocale for internal navigation so /zh is preserved. When adding
a route, update the relevant config and confirm both locale variants resolve.
Rebrand checklist
- Replace the logo component, favicon, and public brand assets.
- Update
app.head.title, description, font links if needed, and per-page SEO/OG metadata. - Replace
site.urlandsite.name; alignNUXT_PUBLIC_BASE_URL. - Replace placeholder social profiles in
website-config.ts. - Set verified
fromEmailand monitoredsupportEmailaddresses. - Review the
Routesenum, footer, dashboard sidebar, and docs sidebar. - Rewrite and review all legal content for the actual business.
- Run
pnpm build, then inspect title, canonical URLs, sitemap, robots, OG previews, footer links, and both locales.
