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

FileRole
nuxt.config.tsapp.head, canonical site identity, SEO modules
app/config/website-config.tsSocial profiles and mail provider/addresses
app/config/social-config.tsConverts configured profiles into visible links
app/config/footer-config.tsxMarketing footer groups
app/config/route-config.tsShared Routes enum for primary URLs
app/config/user-sidebar-config.tsDashboard/account navigation and role filters
app/config/docs-sidebar-config.tsManual documentation tree
app/config/docs-common-config.tsIcons 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.

  • route-config.ts gives marketing/footer code one place to import stable URLs.
  • footer-config.tsx defines Product, Resources, Company, and Legal groups.
  • user-sidebar-config.ts defines dashboard, admin, account, and settings links; its roles field controls menu visibility, not API authorization.
  • docs-sidebar-config.ts is a manual tree. Adding a Markdown file does not add it to the sidebar automatically.
  • docs-common-config.ts maps 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.url and site.name; align NUXT_PUBLIC_BASE_URL.
  • Replace placeholder social profiles in website-config.ts.
  • Set verified fromEmail and monitored supportEmail addresses.
  • Review the Routes enum, 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.

On this page