CL Solutions
Index/Work/Aariviiva

A Finnish studio,now CMS-driven

Migrated a hardcoded 26-project portfolio into Sanity CMS so the founder can publish, restructure, and revalidate without me in the loop. Bilingual EN/FI, ~8 second update window from edit to live.

Sanity CMS migration
Bilingual EN/FI · 4 phases
— / 01The brief

Aariviiva is a Finnish creative studio led by Virpi (Vippe) Loukamaa — graphic, identity, and interior work spanning two decades. The site she had was a static showcase: 26 projects compiled by hand into a TypeScript array, edits only possible by re-deploying. Sanity Studio was scaffolded but never provisioned, and production was throwingConfiguration must contain projectIderrors any time a query ran. She wanted to manage the portfolio herself in her language, in real time.

— / 02What I built
A

Stop the bleed

Gated the unprovisioned /studio route behind an env check, null-guarded the broken queries — production stopped throwing within the hour, no Sanity work yet.

B

Schemas + Studio in Finnish

Two new schemas (project, discipline) plus a reference array on the existing service schema. Custom Studio desk in Finnish so Vippe edits in the language she works in, not English defaults.

C

Cross-link loop

/portfolio/[slug] detail pages with hero, gallery, and sidebar metadata. /palvelut/[slug] aggregating every project in that discipline. A logo project links to the logo-design service page that lists the other 11 logo projects — circular, on purpose.

D

Live revalidation

HMAC-signed Sanity webhook hits an /api/revalidate Next route on every publish event. Verified end-to-end: edit a project description in Studio → live page reflects the change in roughly eight seconds. No deploy needed.

— / 03The outcome

Migration shipped end-to-end across four commits. 7 disciplines, 5 services, and 26 projects seeded from a deterministic batch (_seedBatch="2026-05-init") so any of it can be rolled back cleanly. All 54 portfolio images uploaded to Sanity's asset CDN with real aspect ratios and LQIP placeholders served at the edge. Vippe is now Editor in Studio, curating the site at her own pace. Hardcoded fallbacks deleted — Sanity is the single source of truth.

— / 04Stack

Next.js 16 App Router · Sanity CMS (Free tier, project 02pkukop) · next-intl 4.x for EN/FI · GROQ queries with asset metadata · presentationTool for live preview · HMAC webhook revalidation · Tailwind v4 · Vercel auto-deploy on push

— / 05Live site
Visit aariviiva.fi →
Aariviiva portfolio site — Finnish creative studio
— / CloserReplies in 24h · Mon–Fri

Want the samefor your studio?

Start a project
Direct

colin@clsolutions.dev

Reach

Zurich, Switzerland