Problem
Only 2 out of 10+ pages have proper SEO metadata:
- `app/layout.tsx` — root metadata (used as fallback)
- `app/explore/page.tsx` — has custom `title` and `description`
Every other page inherits the generic root title "AdsBazaar | Creator campaigns on Stellar". This means:
- Google search results show the same title for every page
- Social media link previews (Open Graph) show generic text
- Browser tabs all say the same thing — users can't distinguish between tabs
Pages Missing Metadata
| Route |
Current Title |
Suggested Title |
| `/marketplace` |
(root fallback) |
"Marketplace — AdsBazaar" |
| `/marketplace/[id]` |
(root fallback) |
"{Campaign Name} — AdsBazaar Marketplace" |
| `/dashboard/creator` |
(root fallback) |
"Creator Dashboard — AdsBazaar" |
| `/dashboard/creator/campaigns` |
(root fallback) |
"My Campaigns — AdsBazaar Creator" |
| `/dashboard/creator/analytics` |
(root fallback) |
"Analytics — AdsBazaar Creator" |
| `/dashboard/creator/inventory` |
(root fallback) |
"Inventory — AdsBazaar Creator" |
| `/dashboard/creator/payouts` |
(root fallback) |
"Payouts — AdsBazaar Creator" |
| `/dashboard/creator/settings` |
(root fallback) |
"Settings — AdsBazaar Creator" |
| `/dashboard/business` |
(root fallback) |
"Business Dashboard — AdsBazaar" |
| `/dashboard/business/campaigns` |
(root fallback) |
"Campaigns — AdsBazaar Business" |
| `/dashboard/business/analytics` |
(root fallback) |
"Analytics — AdsBazaar Business" |
| `/dashboard/business/payouts` |
(root fallback) |
"Payouts — AdsBazaar Business" |
| `/dashboard/business/settings` |
(root fallback) |
"Settings — AdsBazaar Business" |
How to Add
For Server Components (most pages), add a `metadata` export:
```tsx
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Marketplace — AdsBazaar",
description: "Browse globally funded marketing campaigns secured by smart-escrow on Stellar.",
};
```
For Client Components (pages with `"use client"`), metadata exports are not supported. Instead, use the Next.js `template` pattern in the parent layout:
```tsx
// app/dashboard/creator/layout.tsx
export const metadata: Metadata = {
title: { template: "%s — AdsBazaar Creator", default: "Creator Dashboard — AdsBazaar" },
};
```
This way, any child page that exports `title: "Analytics"` will render as "Analytics — AdsBazaar Creator" in the browser tab.
Acceptance Criteria
Problem
Only 2 out of 10+ pages have proper SEO metadata:
Every other page inherits the generic root title "AdsBazaar | Creator campaigns on Stellar". This means:
Pages Missing Metadata
How to Add
For Server Components (most pages), add a `metadata` export:
```tsx
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Marketplace — AdsBazaar",
description: "Browse globally funded marketing campaigns secured by smart-escrow on Stellar.",
};
```
For Client Components (pages with `"use client"`), metadata exports are not supported. Instead, use the Next.js `template` pattern in the parent layout:
```tsx
// app/dashboard/creator/layout.tsx
export const metadata: Metadata = {
title: { template: "%s — AdsBazaar Creator", default: "Creator Dashboard — AdsBazaar" },
};
```
This way, any child page that exports `title: "Analytics"` will render as "Analytics — AdsBazaar Creator" in the browser tab.
Acceptance Criteria