How Martori runs

Four layers, cleanly partitioned.

No single server doing everything. Presentation, state, and compute each live where they are strongest.

YouCloudflareNetlifySupabaseRender

Cloudflare

DNS + routing

Resolves the domain and routes every request to the right place, shielded and encrypted before anything else happens.

Hover a node to trace its role

The stack

One request, four jobs, no overlap

Each layer owns one responsibility and hands off cleanly to the next.

01

Cloudflare

DNS + routing

The front door. Every request resolves and routes here first, shielded and encrypted.

Domain resolutionGlobal routingDDoS shieldTLS / SSL
02

Netlify

The interactive edge

Serves the React interface from edge nodes worldwide. Navigation never waits on a server.

Edge deliveryReact + Vite buildInstant routingEnv baking
03

Supabase

The sovereign data vault

Postgres for truth, auth for identity, and row-level security so you only ever see your own data.

PostgreSQLAuthenticationRow-level securityRealtime
04

Render

The compute core

Long-running Python work the browser cannot hold, talking to Supabase over private keys.

Python / DjangoBackground jobsPrivate pipelinesCustom APIs

How we build

From commit to live, one clean pipeline

Nothing is uploaded by hand. Every change is built, previewed, and shipped through the same automated, Git-backed path, the way resilient modern software is meant to ship.

Commitgit pushBuildvite + ciPreviewdeploy previewShipatomic deployLiveglobal edge

Jamstack architecture

01

pre-rendered · decoupled

The interface is built ahead of time into static React assets and served straight from the edge. There is no fragile origin server rendering pages on demand.

Headless CMS

02

content as an API

Content lives in a structured, API-first store, modeled apart from the design. Words and images can change without ever touching the code that displays them.

Git-backed and secure

03

private · reviewed · audited

Every change moves through a private GitHub repository: protected branches, reviewed pull requests, and a signed, auditable history of who changed what, and when.

Continuous delivery

04

preview · atomic · reversible

Each merge triggers an automated build and its own preview URL, then ships as an atomic deploy that can be rolled back to any prior version in seconds.

Request flow

Follow a single tap through the stack

01 You open the app

Cloudflare resolves martori.studio and routes you to the nearest, fastest path in.

Why it is built this way

Fast by default

Static assets from the edge and state read straight from Postgres. The interface never waits on a monolith.

Sovereign by design

Row-level security means your data is yours at the database itself, not as a promise bolted on later.

Unshakeable

Each layer can fail, scale, or change on its own. No single point holds the whole studio hostage.