PandaCodeGen
+1 (302) 250-4340

info@pandacodegen.com

In-House BuildAgency WebsiteWCAG 2.1 AA

We built this
on the tech we sell.

You can't sell custom-code performance to clients while running your own site on a page builder. We built the Panda CodeLab agency site on Next.js 15, React 19, and Framer Motion 12, spring physics, magnetic interactions, Spline 3D, and full WCAG 2.1 AA compliance. Zero TypeScript errors. Zero ESLint errors. This is the live proof.

0
Build Errors
TypeScript strict + ESLint
100/100
PageSpeed
0.6s load time
WCAG AA
Accessibility
Full keyboard + screen reader
9
Pages Built
4 service detail pages
The Brief

Proof before pitch.

The credibility problem

We were selling clients on the idea that custom coded sites are faster, more secure, and more scalable than templates. But every sale required explaining why, because our own presence didn't prove it visually or technically. We needed the agency site itself to be the argument.

The constraint

Ship on Next.js 15 + React 19 before most agencies had even updated from Next.js 13. Hit 100/100 PageSpeed with full motion animations running. Pass WCAG 2.1 AA. Zero compromises on design quality.

Design System

Solar gradient. Hybrid depth.

A custom design system built around a solar gradient palette, deep red through magenta to amber, layered over a hybrid depth approach: 80% shadows, 20% glassmorphism. Premium feel without the performance cost of heavy blur effects.

Solar Gradient
#E60040 → #E91E63 → #F59E0B
Typography
Poppins, headings
Inter, body
Outfit, UI elements
Depth System
80%, layered shadows
20%, glassmorphism
SpotlightCard, mouse tracking glow
Animation System

Six motion primitives. One coherent feel.

All animations are GPU-composited using only transform and opacity, never layout-triggering properties. Spring physics on every interaction. Lighthouse score unaffected.

TextReveal

Character-by-character reveal on scroll. Each letter enters with a spring easing, no linear timings.

SpotlightCard

Mouse-tracking radial glow follows cursor across every card surface. GPU-composited, zero repaints.

MagneticButton

CTA buttons physically follow cursor within a 60px radius using spring physics. Snaps back on exit.

Hero3D (Spline)

Full 3D scene loads lazily after LCP. Placeholder shown while 3D initialises, no CLS.

Lenis Scroll

Momentum-based smooth scrolling with configurable lerp factor. Disabled on mobile for native feel.

Motion Preferences

prefers-reduced-motion detected on mount. All animations replaced with instant transitions for accessibility.

prefers-reduced-motion is not optional

A dedicated usePrefersReducedMotion() hook reads the system preference on mount. Every animated component checks this flag and substitutes instant transitions. Not just a Framer Motion prop, a first-class architectural decision.

Accessibility

WCAG 2.1 Level AA. Not a checkbox.

Accessibility is also an SEO signal. Google's Page Experience algorithm rewards sites that work for all users. Every interactive element passes keyboard navigation, every image has descriptive alt text, and every color pair meets contrast ratio requirements.

Focus rings
Brand-colored focus indicators on all interactive elements. Tab through the entire site without a mouse.
Keyboard navigation
Full Tab/Enter/Space/Escape support on modals, dropdowns, and carousels.
ARIA labels
All icon-only buttons, form fields, and custom widgets have descriptive ARIA attributes.
Semantic HTML
Correct heading hierarchy (h1 → h2 → h3), landmark regions (nav, main, footer), and list elements.
Color contrast
All text/background combinations meet 4.5:1 ratio (AA). Interactive elements meet 3:1.
Motion preference
prefers-reduced-motion respected site-wide. Disabled animations, instant transitions.
Pages Built

9 pages. Every one hand-coded.

Page
Purpose
Type
Homepage (/)
Hero 3D scene, service overview, social proof, CTA
Revenue
About (/about)
Team, story, values, stats
Trust
Services (/services)
All services with icon grid
Navigation
Website Design
Process, portfolio, custom quote form
Service
App Development
Tech stack, benefits, timeline
Service
Digital Marketing
Strategy breakdown, packages
Service
Graphics Design
Portfolio grid, brief form
Service
Contact (/contact)
Contact form (Web3Forms), phone, map
Conversion
404
Branded not-found with navigation links
UX
Tech Stack

Cutting edge. Every layer.

Next.js 15 + React 19, shipped before most agencies updated from Next.js 13. Tailwind CSS 4 (the new oxide engine). Framer Motion 12 with the latest spring physics API.

Next.js 15
App Router + RSC
React 19
Latest stable
TypeScript
Strict mode, 0 errors
Tailwind CSS 4
Styling
Framer Motion 12
Spring physics
Lenis 1.1
Momentum scroll
Spline
3D hero scene
Web3Forms
Form API
React Hook Form
Form state + Zod
Lucide React
Icon system
Results

Production-ready. Every metric.

TypeScript: Strict mode. Zero implicit any. 0 build errors.
ESLint: 0 errors across all 9 pages and components.
Accessibility: WCAG 2.1 Level AA, keyboard nav, ARIA, contrast ratios.
Performance: Hardware-accelerated animations. No layout thrashing.
Responsive: Mobile-first from 375px through 4K (1440px+).
SEO: Sitemap, robots.txt, meta tags, Open Graph, JSON-LD per page.
Full Scope

Everything that was built.

Next.js 15 App Router with React 19 server + client components
Solar gradient design system (#E60040 → #E91E63 → #F59E0B)
TextReveal, character-by-character spring entry animation
SpotlightCard, mouse-tracking radial glow on every card
MagneticButton, spring physics cursor attraction on CTAs
Hero3D, lazy-loaded Spline 3D scene, zero CLS impact
Lenis 1.1 momentum scroll (disabled on mobile for native feel)
usePrefersReducedMotion hook, site-wide animation kill switch
WCAG 2.1 AA, focus rings, ARIA labels, semantic HTML
React Hook Form + Zod validation on all form inputs
Web3Forms API integration (no backend required)
Dynamic service detail pages with custom quote forms
Sitemap.xml, robots.txt, per-page JSON-LD structured data
100% TypeScript strict mode, 0 implicit any
Tailwind CSS 4 oxide engine for minimal CSS output
Mobile-first responsive from 375px through 1440px+