KOAI Studios
← Back to all posts
launchengineering

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.

·5 min read
Why we rebuilt koaistudios.com in six weeks

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-media via cdn.koai360.com
  • Infra: VPS Hostinger, next start via 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.