Skip to content

feat(seo): structured data + sitemap index - #55

Merged
thiras merged 7 commits into
mainfrom
feat/schema-jsonld
May 11, 2026
Merged

thiras merged 7 commits into
mainfrom
feat/schema-jsonld

Conversation

@yigitdot

Copy link
Copy Markdown
Collaborator

Summary

  • Add Service and FAQPage JSON-LD; tighten Organization schema (logo + description). FAQ items hoisted into a shared const so the page and the schema stay in sync.
  • Replace app/sitemap.ts with a hand-written sitemap index at /sitemap.xml that points to /sitemap-pages.xml (this site) and the docs sitemap on docs.decdn.org.
  • Hero polish: rebalance the rise-animation cadence, swap the underline-brutal hover from letter-spacing to a color/border fade so the arrow tracks the nudge.

Test plan

  • pnpm build succeeds and out/sitemap.xml + out/sitemap-pages.xml look right
  • Validate JSON-LD via Google Rich Results test
  • Eyeball hero animation + CTA hover

🤖 Generated with Claude Code

yigitdot and others added 5 commits May 9, 2026 03:59
- drop opacity-55 dim on the `source` CTA so it matches its siblings at rest
- replace letter-spacing jiggle on a.underline-brutal hover with a whisper-green
  underline + brighter arrow nudge — no layout reflow
- rework brutal-rise: 28px translate, 850ms expo-out, restaggered cascade

Co-Authored-By: Claude <noreply@anthropic.com>
- replace the single-URL urlset with a sitemap index at /sitemap.xml
  that points at /sitemap-pages.xml (marketing) and the Mintlify-served
  https://docs.decdn.org/sitemap.xml so docs URLs are discoverable from
  the marketing-site sitemap as docs grow
- new route handlers use force-static + GET to emit static XML under
  output: "export"; robots.txt already points at /sitemap.xml so no
  change needed there

Cross-host sitemap entries require both hosts to be verified in Google
Search Console for the index references to be honored.

Co-Authored-By: Claude <noreply@anthropic.com>
The hover state on .underline-brutal .arrow flips color to whisper-green
but the arrow's transition rule only covered `transform`, so the color
snapped while the translateX animated. Extend the rule to cover `color`
on the same 260ms expoOut curve.

Flagged in PR #46 review (Copilot, Gemini).

Co-Authored-By: Claude <noreply@anthropic.com>
Drop WHAT/process narration on the two sitemap route handlers per
AGENTS.md ("default to no comments; only add when WHY is non-obvious"):

- sitemap.xml/route.ts: keep only the cross-host Search Console caveat
- sitemap-pages.xml/route.ts: drop the maintenance comment entirely

The force-static headers stay — they capture a real Next 16 export
constraint that's not inferrable from the code.

Flagged in PR #46 review.

Co-Authored-By: Claude <noreply@anthropic.com>
Add Service schema (CDN, provider → Organization, areaServed: Worldwide);
omit offers since per-MB USDC pricing isn't a clean ISO-4217 Offer. Add
FAQPage sourced from a new FAQ_ITEMS export in components/site/Faq.tsx,
so rendered DOM and structured data share one source of truth. Tighten
Organization.description to describe the entity, not the product (was
the marketing tagline shared with WebSite). Switch Organization.logo
from icon.svg to /d_logo.png — Google's structured-data spec lists
JPG/PNG/GIF only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 10, 2026 06:31

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR enhances the marketing site’s SEO by adding richer JSON-LD structured data and replacing the previous Next metadata sitemap with explicit, static-export-friendly sitemap endpoints. It also tweaks hero animation/CTA hover styling to match the updated visual behavior.

Changes:

  • Add Service and FAQPage JSON-LD schemas in app/layout.tsx, reusing shared FAQ content.
  • Replace app/sitemap.ts with two static XML route handlers: a sitemap index (/sitemap.xml) and a pages sitemap (/sitemap-pages.xml), including a cross-host docs sitemap entry.
  • Update hero rise animation cadence and adjust underline-brutal hover behavior (border/arrow color + nudge).

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
components/site/Hero.tsx Removes per-link opacity styling for the “source” CTA to align with new underline/hover behavior.
components/site/Faq.tsx Hoists FAQ content into an exported FAQ_ITEMS const and renders items via a map for consistency.
app/sitemap.xml/route.ts Adds a hand-written sitemap index XML response for static export at /sitemap.xml.
app/sitemap.ts Removes the previous Next metadata sitemap handler.
app/sitemap-pages.xml/route.ts Adds a hand-written sitemap XML response for site pages at /sitemap-pages.xml.
app/layout.tsx Adds Service + FAQPage JSON-LD and tightens Organization schema (logo/description); reuses FAQ_ITEMS.
app/globals.css Adjusts brutal-rise timing/cadence and changes underline hover from letter-spacing to border/arrow color + transform.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread app/layout.tsx
Comment on lines 3 to 6
import { links, SITE_URL, INDEXABLE } from "@/lib/links";
import { Chrome } from "@/components/site/Chrome";
import { FAQ_ITEMS } from "@/components/site/Faq";
import { ScrollReveal } from "@/components/site/ScrollReveal";

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extracted to lib/faq.ts; Faq.tsx and app/layout.tsx both import from there now. Pushed in fed0e1e.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the site's visual animations and transitions in globals.css, refactors the FAQ component to use a centralized data constant, and adds comprehensive structured data (JSON-LD) for Service and FAQPage schemas in the layout. Additionally, it introduces static sitemap generation and updates the organization's metadata. I have no feedback to provide.

thiras and others added 2 commits May 11, 2026 17:16
# Conflicts:
#	app/layout.tsx
#	app/sitemap-pages.xml/route.ts
Decouples the root layout's JSON-LD generation from the FAQ UI module
so app/layout.tsx no longer transitively imports Frame/SectionHeader/FaqItem
just to read the data.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented May 11, 2026 •

Copy link
Copy Markdown

Deploying website with  Cloudflare Pages  Cloudflare Pages

Latest commit: fed0e1e
Status: ✅  Deploy successful!
Preview URL: https://2ad9fa63.website-70y.pages.dev
Branch Preview URL: https://feat-schema-jsonld.website-70y.pages.dev

View logs

@thiras
thiras merged commit b327549 into main May 11, 2026
7 checks passed
@thiras
thiras deleted the feat/schema-jsonld branch May 11, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants