
Web
Midwave AI
Our own studio site — a dark, motion-led Next.js build with a 3D hero and an AI assistant that answers from live site data.
midwaveai.com
1 file
Whole palette, light + dark
Lazy 3D
Canvases off the critical path
Grounded
Assistant reads live site data
The challenge
A software studio's own site is the first proof of what it can do. It had to load fast on a mid-range phone while carrying a 3D hero, animated sections, and a light/dark theme, stay fully indexable for every service we offer, and be maintainable enough that rebranding means editing one file rather than hunting hex codes through a component tree.
Our solution
We built it on Next.js App Router with Server Components by default and client boundaries kept as small as possible. Every colour resolves from a single JSON token file into MUI's CSS-variable colour-scheme system, so light/dark switching is pure CSS with no flash. R3F canvases are lazy-loaded with static fallbacks so they never sit in the critical render path, Framer Motion handles scroll and hover choreography with `prefers-reduced-motion` respected throughout, and the contact form runs server-side only through Resend and Google SMTP.
The results
The site ships a 3D hero and heavy motion while keeping LCP inside budget on mobile, exposes proper metadata, sitemap, and structured data for every service, portfolio, blog, and team page, and grounds its AI assistant in the site's own live service and project data — so the bot cannot invent an offering we do not have.
Client
Project type
Discipline
What we did
Related services
midwaveai.com
Technology
What it's built on
The stack behind this build, grouped by the concern it owns.
Frontend
Backend
Data & storage
Integrations
Delivery
How it ships
Hosting, source control, and the release path from a merged branch to production.
Application
Vercel
Scheduled jobs
Vercel Cron
Source control
GitHub
Application
Vercel
Scheduled jobs
Vercel Cron
Source control
GitHub
Engineering & operations
The parts you only see from the inside
Environments, flags, tooling, and the safeguards that keep a live platform shippable.
Token-driven theming: one JSON file drives light and dark, flash-free
Server Components by default; client boundaries kept small and low in the tree
3D canvases lazy-loaded with static fallbacks to protect mobile LCP
`prefers-reduced-motion` honoured in every animation and CSS transition
Secrets read only in server code — never exposed to the browser
Gallery