Skip to content
LuminaForge
All work
LuminaForgeDigital agency

LuminaForge.ai — the site is the case study

How we engineered the LuminaForge marketing site to hit sub-800 ms LCP, 100/100 Core Web Vitals, and full GEO coverage on Next.js 16 in under three weeks.

Web DevelopmentSEOGenerative Engine Optimization
LCP (mobile)
<800 ms

Measured on a throttled Moto G4 profile in Lighthouse.

Lighthouse Performance
100/100

Across Performance, Accessibility, Best Practices, and SEO.

First-load JS
<90 KB

Gzipped, home route. RSC-first, motion lazy-loaded.

Schemas live
6

Organization, WebSite, Service, FAQPage, Article, BreadcrumbList.

LuminaForge launched with a single, uncompromising constraint: the website itself must be the proof. If we claim sub-800 ms LCP, our site has to hit it. If we claim full Generative Engine Optimization coverage, ChatGPT, Perplexity, Grok, and Claude have to be citing this very page within weeks.

This is how we built it.

The constraints

The stack

  • Next.js 16.2.6 — App Router, React Server Components, Partial Prerendering by default, Turbopack
  • React 19 — for streaming RSC and useEffectEvent
  • Tailwind CSS v4.3 — CSS-first @theme, no tailwind.config.ts
  • Motion (formerly Framer Motion) — premium animation with full reduced-motion support
  • Velite — type-safe MDX collections for work and resources
  • Vercel — Edge deploy, Speed Insights, Analytics, dynamic OG images

The numbers

LCP target

<800ms

Core Web Vitals

100/100

First-load JS

<90KB

CLS

<0.02

What makes it work

1. Every page is a Server Component by default

We treat "use client" like a sin tax. The home page hero contains exactly two client components — the particle canvas and the magnetic CTA wrapper — both leaf-level. Everything else streams from the server.

2. Partial Prerendering is automatic in Next.js 16

Static shells render instantly at the edge while any dynamic content streams in. No flag required — this is the default in App Router as of Next.js 16.

3. GEO is shipped at the infrastructure layer

  • llms.txt and llms-full.txt live at the root, structured to the emerging llms.txt standard.
  • robots.ts explicitly allows GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, and 10+ other AI crawlers.
  • Every page emits structured data via a typed <StructuredData> component.

What we are tracking next

  • Weekly citation footprint across ChatGPT, Perplexity, Grok, and Claude for 24 target queries.
  • Real-user CWV from Vercel Speed Insights.
  • Indexing parity between Google Search Console and Bing Webmaster Tools.

The site is live. The forge is on.

Want results like this?

Book a strategy call.

Get in touch

Ready to forge?

Let's build the site that becomes the answer.

Tell us about your project. We respond within one business day and book the first call inside a week.