Astrid Obert Studio
A complete digital platform for a Munich photography studio

For: Built for Astrid M. Obert, a Munich photographer whose clients are founders, executives, experts, teams and premium brands. Shown here as a client case.
Astrid M. Obert is a Munich photographer working in premium personal branding, executive portraits and fashion and editorial photography. Her web presence had grown into separate sites and a WordPress portfolio that was hard to maintain. We replaced it with one platform she runs herself.
A single application serves several branded front-ends by domain: astridobertstudio.com for the business studio, astridobert.com for the fashion and advertising portfolio, astridobert.art for selling limited-edition prints from her archive, and an admin console that manages them all. A separate CRM handles lead generation and outreach on the same database, so one login covers both.
Every piece of content answers three questions: which site it publishes to, how it is displayed, and what it says in English and German. Pages are built from admin-defined sections, menus and legal pages are managed in the CMS, and a central media library drives every portfolio grid, slideshow and gallery.
This is not a product we sell. It is a bespoke build that also serves as the proving ground for our reusable digital asset management and CMS core.
1
Codebase serving four branded front-ends
855
Media files migrated off WordPress into self-hosted storage
EN / DE
Bilingual content across every site
What it does
One codebase serving several branded sites by domain: studio, fashion portfolio, art shop and admin console
Section-based CMS with named pages, per-page SEO, database-driven menus and English/German content throughout
Visual Management media library with folders, publish states, per-category display modes (grid, explore, list, slideshow), lightbox and colour/B&W toggles
Art print shop with Stripe checkout, editions, WhiteWall print specification, watermarked protected images and a private bucket for high-resolution print masters
Hero sliders and an intro-reel video hero, behind-the-scenes slideshows, testimonials, FAQs and a contact form with spam protection
Standalone CRM with Kanban pipelines for outreach and sales, plus Google Maps and Instagram lead crawlers
Host-aware SEO: per-site sitemaps, robots rules, canonical URLs, structured data and llms.txt, plus 301 redirects from the old WordPress URLs
Admin-only access controlled by an email allowlist, with order and enquiry emails sent through Resend
How we architected it
- Next.js 14
- React
- TypeScript
- Tailwind CSS
- Supabase (Postgres, Auth, Storage)
- Stripe
- Resend
- Vercel
- Vercel Analytics
- Framer Motion
- GSAP
- Three.js
- sharp
- dnd-kit
- NocoDB
- Hetzner
- Google Places API
- 01
One Next.js 14 app on Vercel; middleware reads the Host header and routes each domain to its front-end (studio, art, fashion root, admin)
- 02
A section engine renders pages from rows in a page_sections table (hero video, statement, process, portfolio, gallery, clients, FAQ, contact and more), with German text stored alongside English
- 03
One Supabase database split into schemas: public for the sites and crm for the CRM app, sharing one auth system so a single login spans admin and CRM
- 04
Row-level security lets the public read only published rows; writes need authentication, and webhooks and admin routes use server-side service credentials
- 05
Media is self-hosted in Supabase Storage after migrating the WordPress library; print masters sit in a private bucket and are served through signed URLs and a watermarking image route
- 06
Stripe Checkout and webhooks for art orders, Resend for order and enquiry emails, and first-party event tracking with Vercel Analytics
- 07
A NocoDB back-office on a Hetzner server provides no-code access to both schemas

Want something built like this?
Every build runs the same five gates: spec, architect, build, review, ship. It starts with a 48-hour audit.


