Theo Studio
The theostudio.org online atelier: gallery, events and a store for original works, rebuilt from scratch after a WordPress install carrying thirteen plugins.
- Client
- Theo Studio
- Stack
- Next.js 15, React 19, TypeScript, Sanity, Stripe, Auth.js, Resend, Vercel
- Year
- 2026

01 The problem
The old WordPress and Elementor site carried thirteen plugins to deliver a simple monochrome gallery. And selling one-of-a-kind originals needed a guarantee that two buyers could never pay for the same piece at once.
02 The solution
We migrated the WordPress content into Sanity with a dedicated pipeline and rebuilt the site on Next.js. The store resolves every price on the server, holds each original for the life of its Stripe session and releases it if payment doesn’t complete. Buyers can sign in with Google for orders and a wishlist, and the artists publish their own work from the Studio.
03 The result
[Measurable result — to be confirmed with the client]
04 · What we built
- 01
Originals that can’t sell twice
Each original is held by a conditional write for the life of the Stripe session and released on expiry or failure; the webhook fulfils each payment exactly once.
- 02
WordPress → Sanity migration
A multi-step pipeline (export, asset download, load) for 633 documents and assets, with redirects for the old URLs.
- 03
Accounts without a database
Google sign-in, order history, a wishlist and saved addresses stored on the Stripe customer itself.
- 04
Shareable filters
Store filters (artist, type) live in the URL: shareable, crawlable and working without JavaScript.
- 05
A Studio for the artists
Sanity Studio embedded in the site; sold works stay visible with a struck-through price, only the buy action disappears.
05 · Gallery




