Why we rebuilt koaistudios.com in six weeks
After six weeks of focused work the new koaistudios.com is live: Next.js 16, full bilingual, real commerce infrastructure, SEO foundation. Here's what we shipped and why rebuilding made more sense than iterating.

What we shipped
After six weeks of focused work, koaistudios.com v2 is live. This is a full rebuild from the old Lovable SPA to a Next.js 16 + React 19 + Tailwind 4 stack running on our own VPS behind a Cloudflare Tunnel, with:
- Bilingual EN / ES end-to-end — no afterthought translations,
every component pulls from messages/en.json and messages/es.json.
- Real commerce infrastructure — Stripe live keys wired, custom
sticker calculators with CMYK color pickers, post-cart design upload,
cart and checkout flows. We kept commerce in coming-soon mode while we
finish the first production test.
- SEO foundation — 36 routes with bilingual title / description,
hreflang alternates, a hand-crafted sitemap.xml, a real robots.txt,
and JSON-LD for both Organization and LocalBusiness schemas.
- Legal + policy pages — privacy, terms, shipping, returns. Not
coming-soon placeholders, actual content you can take to counsel.
- Full catalog — six sticker types with unique calculators, plus
stub routes for business cards, flyers, apparel, signs, acrylic,
wallpapers.
Why rebuild instead of iterate
The old SPA was zero-SEO by architecture: crawlers got an empty HTML shell, LLMs couldn't read the content, and the only way to share a product page was to paste the URL and hope the preview card rendered. Fixing that in a client-only React app means rebuilding the framework anyway. We picked Next.js 16 because SSR is not optional when you sell custom print and depend on organic traffic.
The stack, for the curious
- Framework: Next.js 16 App Router + React 19
- Styling: Tailwind 4 with
@tailwindcss/vite, custom design tokens - i18n: next-intl with
localePrefix: "always" - Auth + DB: Supabase (auth-helpers, RLS, service-role for admin ops)
- Payments: Stripe Elements (PaymentIntent API + webhook)
- Storage: Cloudflare R2 bucket
koai-mediaviacdn.koai360.com - Infra: VPS Hostinger,
next startvia systemd, Cloudflare Tunnel
What's next
Real commerce launch. Deep Spanish translation of the advertising service sub-pages. First batch of case studies. And an eventual move from in-component post content to a proper MDX pipeline for this blog.
If you want to talk shop on any of it — or you're scoping a similar rebuild for your brand — send us a message.