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.

Aariviiva portfolio site — Finnish creative studio

The 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 throwing Configuration must contain projectId errors any time a query ran. She wanted to manage the portfolio herself, in her language, in real time.

What I built

Stop the bleed

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

Schemas and 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.

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.

Live revalidation

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

The 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.

Stack

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

Visit aariviiva.fi

Want the samefor your studio?

Aloita projekti