DISCIPLINE — SYSTEM
France Ola - system

STACK
- Requesa
- Sanity
- Cloudflare R2
- Stripe
- Resend
- API Claude
- Umami
- Three.js
- eact-globe.gl
- Mapbox
THE GAZE
France Ola is a publication that asks more of its infrastructure than most photographer sites. It needs to hold a structured content model where every species carries its own anatomical details, every photo its location, every expedition its narrative; it needs to deliver a three-dimensional interactive atlas, a conversational assistant that searches the archive in natural language, a licensing shop that issues signed download links and PDF certificates after payment, and an editorial journal — all from a single codebase, hosted seriously, with no third-party plugin assembling the seams. Off-the-shelf website builders collapse the moment the project's ambition exceeds their templates, and stitched-together SaaS solutions tend to leak their visual register into the site they're plugged into. The problem was to find a stack where every component would respect the editorial tempo of the project all the way down to the email confirmation.
THE PROCESS
- 01
We started with the content. Sanity was chosen over WordPress because the model is structured: species have anatomical details, photos carry location and expedition references, series group photos that group locations that group expeditions. A block editor would have flattened that structure into prose. Sanity preserved it, and its Studio gave the photographer a clean interface to work in without exposing the schema.
- 02
Next.js handled the rendering, with the App Router and server-side rendering for SEO, incremental revalidation for new publications, and a strict TypeScript pass across the codebase. Vercel handled the hosting because the editorial cadence is high and the preview-per-branch model lets us evaluate a section before committing it to production. GoDaddy keeps the domain itself, with DNS records pointed where they need to go.
- 03
For the licensing layer, Cloudflare R2 was chosen over AWS S3 for two reasons that matter at scale: R2 charges no egress fees, which means every download from a paying customer costs nothing, and the European Union region kept the data within GDPR posture and close to the audience. Stripe handles the checkout, but the flow stays inside the site rather than redirecting to a third-party storefront. Resend delivers the transactional emails because its templating allowed the post-purchase letter to be written rather than assembled — sober, serif, signed.
- 04
For the conversational layer, Ask the Archive streams from the Anthropic API rather than OpenAI. The choice was made on register, not benchmark. Claude's default voice sits closer to the editorial tone of the site, and the system prompt was written long enough to lock the assistant inside that register on every reply. The three-dimensional atlas is rendered with Three.js through react-globe.gl rather than a flat Mapbox tile, because the project needed an object to explore, not a viewer to pan across. Newsletter capture runs on Supabase, where a thin Postgres layer holds subscriber records without forcing an entire marketing automation suite into the codebase.
- 05
Powered by Requesa - Intelligent intake system that transforms contact forms into guided conversations.
- 06
Analytics run on Umami rather than Google, because a site that respects the reader's time should also respect their data.
- 07
Nothing in the stack is there because it was the popular choice. Every tool was matched to the register of the work it serves.
THE RESULT
The site runs as a coherent ecosystem. The publication, the atlas, the licensing shop, and the conversational layer share a single codebase, a single content model, and a single editorial voice that holds from the homepage hero down to the post-purchase email. New expeditions are added through the Sanity Studio without touching code. Sales flow through Stripe and deliver high-resolution originals from Cloudflare R2 with PDF certificates generated on the fly. The conversational assistant indexes the corpus automatically whenever the photographer publishes a new species or essay. For the studio, the project has become a working reference: most of these stack decisions have since reappeared in subsequent client briefs, sometimes verbatim. France Ola is where the studio's infrastructure found its voice.
THE RESONANCE
The result is an infrastructure that disappears. Visitors do not notice that the globe is Three.js and not a static illustration, that the conversational search runs on a different model from the chatbot they spoke to elsewhere, that the download link they receive after purchase is a signed URL with a seven-day expiry. They notice that the site loads quickly, that the email feels handwritten, that the answer to their question arrives as plain prose rather than a list of results. The technical scaffolding does its work and gets out of the way, which is the only thing infrastructure should ever try to do.