Case study · Internal platform

Ethereal CRM

We run our studio on the same stack we sell. Our internal client platform handles projects, invoices, and revenue, with no servers for us to babysit.

TypeInternal platform
BackendSupabase
FrontendReact
Cost modelPay-per-use

When we tell a client their site will run on serious, modern infrastructure, this is the receipt. Our own operations — every client record, invoice, and notification — run through the architecture we recommend.

It also keeps our overhead near zero: there are no servers to rent, patch, or watch between projects. We pay for what runs.

An illustration of the dashboard and the alerts that hit our phones.

The dashboard is a hosted React app. Every action calls a Supabase Edge Function, which reads or writes Postgres and checks who is signed in. Payments and alerts plug into the same functions.

  • Supabase Edge Functions for all business logic
  • Postgres tables for clients, projects, and invoices
  • Supabase Auth for the two of us
  • Email and text alerts on form submissions and payments
  • Stripe webhooks for payment events
  • Managed hosting with SSL and backups
Ethereal CRM architectureWebsite visitors and the studio both use a hosted React web app. The app calls Supabase Edge Functions, which read and write Postgres and check Supabase Auth. Stripe sends payment webhooks to the Edge Functions, which send email and text alerts.Supabase backendwebhooksalerts outAPIWebsite visitorscontact + quote formsKevyn & Daviddashboard, any deviceWeb appReact + TypeScriptStripepaymentsAlertsemail + textEdge Functionsall business logicPostgresclients · invoicesAuthstudio logins
How a lead or a payment moves through the system.

Every pattern in a client proposal — smart forms, payment webhooks, instant notifications — exists here first, in production, handling our own money.

0Servers for us to patch or babysit
5Systems wired together: hosting, data, auth, payments, alerts
2People running an entire agency on it