Add A Static Page
Add a public page, SEO metadata, translations, and navigation entries.
Public pages should live in the marketing route group. Keep user-facing copy in translation files when the rest of the product uses i18n.
Create the route
Create a page such as:
app/(marketing)/features/page.tsxUse existing pages like contact and pricing as references.
Use project components and stable links
For internal links, use the project's preferred navigation component. Do not manually add locale prefixes unless the route layer requires them.
import Link from "next/link";
export default function FeaturesPage() {
return <Link href="/pricing">View pricing</Link>;
}Add page SEO
Add a page entry to the SEO config if the project uses centralized metadata:
export const seoPageConfig = {
home: { path: "/" },
pricing: { path: "/pricing" },
contact: { path: "/contact" },
blog: { path: "/blog" },
features: { path: "/features" },
} as const;Then use the metadata helper in the page.
Add translations
For production pages, avoid hardcoding user-facing copy if the product uses message JSON files.
Add keys to:
src/i18n/messages/en/seo.json
src/i18n/messages/zh/seo.jsonCreate a new namespace if the page needs substantial copy.
Add entry points
If the page belongs in nav, footer, or home sections, update the relevant component or config. Keep hrefs language-independent where possible.
Verify the route, metadata, and links before shipping.