Build Log Our product

How we built Measr, our self-hosted analytics toolkit

Measr is our own product: a self-hosted, privacy-first analytics toolkit, and we run it on this very site. A tracking SDK captures behavior in the browser, writes it to a database the customer owns, and a dashboard reads the KPIs back. This is the system, end to end.

Published June 2026 by Balázs Turán, Creative Data Engineers.

What we built
  • Measr is our own product, a self-hosted, privacy-first analytics toolkit at measr.app, and we run it on this site, so we use what we sell.
  • No cookies, no third-party tracker. The data lives in the customer's own Supabase, never ours.
  • The SDK can only write, the dashboard can only read once signed in. Each site's data stays separate, enforced at the database.
  • 9 tracking modules feed a React dashboard with KPI cards, trend charts and dimension tables.
Why we built it

Clients kept needing analytics they fully control

Teams want to know what happens on their site without handing visitor behavior to a third party. So we built one and run it ourselves: an analytics toolkit where the data sits in the customer's own database, with no cookie and nothing personal collected.

The rule we set ourselves: the visitor's browser only sends, the database only stores and guards, and a person reads the result after signing in. That split is what makes it private by design. The SDK can never read data back out, and the dashboard only ever sees the sites its owner is allowed to see.

The system

From a click to a chart, end to end

Three stages run in order: capture behavior in the visitor's browser, store it in the customer's own Supabase, then see it in a signed-in dashboard. No cookies, and the data never leaves the customer's project.

Our code Data store A person

Hover or focus any box for a plain-language explanation.

A Capture, in the visitor's browser The SDK quietly records behavior, with no cookie and nothing personal runs the SDK watch the page A PERSON Visitor lands on a page MEASR SDK SDK starts up bot check, session, context MEASR SDK Tracked events views, clicks, scroll, more send each event B Store, in the customer's own database The SDK can only write, the database guards and aggregates the data write only passed read ANON, WRITE ONLY Send the event write only, never read AT THE DOOR Guard rate limit and checks SUPABASE Events and sessions the immutable log ON THE SERVER Aggregate KPIs computed in the database the dashboard reads the KPIs C See it, in the dashboard A signed-in admin reads the KPIs back, only for the sites they own after sign-in draw it A PERSON Admin signs in into the dashboard DASHBOARD Fetch and filter site, dates, dimensions RECHARTS Charts and tables KPIs, trends, breakdowns

Measr is a product you can run yourself, on your own database. See the product page →

What it looks like

The dashboard, on real traffic

The same engine, seen from the front. These are live views from a Measr dashboard: KPI cards, trend charts, and per-dimension breakdowns, all read back from the customer's own database.

Measr dashboard Overview: sessions, bounce rate, average session duration and scroll depth as KPI cards, with a sessions-over-time chart
Overview. KPI cards and sessions over time.
Measr dashboard Content and Interactions: total interactions, interaction rate and exit links, with an interactions-over-time chart
Content and interactions. What people click, and how often.
Measr dashboard Technology: sessions by device over time, plus device, geography, browser and operating-system breakdowns
Technology. Device, geography, browser and OS.
Measr dashboard Forms: form sessions and completion rate, with a form-completions-over-time chart
Forms. Submissions and completion rate.
What we learned

Three decisions that make it hold up

1

An anonymous, write-only key plus row-level security makes a client-side SDK safe. The SDK can write events and nothing else. RLS blocks reads at the database, so even with the key in the page, no one can pull data back out.

2

Aggregate on the server so the dashboard stays fast. The KPIs are computed by functions inside the database, not in the browser. The dashboard asks for totals and breakdowns, not raw rows, so it stays quick even as the event log grows.

3

Self-hosted means the customer owns the data. Events land in the customer's own Supabase project. We never hold a copy, and the customer can read, export or delete it whenever they want.

FAQ

Questions we get about Measr

Is it really self-hosted?

Yes. The data lives in the customer's own Supabase project, never ours. You own the database, the tables and every row in them.

Does it use cookies?

No. Measr sets no cookie and uses no third-party tracker. The session is kept in the browser's local storage for 30 minutes, and nothing identifies a visitor personally.

Can the SDK read my data?

No. The SDK posts events with an anonymous key that can only write. Reads are blocked at the database, so the SDK can never pull data back out. The dashboard can only read once a person is signed in.

Can you set it up for us?

Yes. We can wire Measr into your site and your own Supabase, and walk your team through the dashboard. Measr is EUR 19 per month or EUR 190 per year. Book a call and we will scope it.

Analytics you own, running on your own database

Measr gives you the numbers that matter without handing visitor behavior to a third party. No cookies, no tracker, and the data stays in your project. It is EUR 19 per month or EUR 190 per year.

We also teach operators to build systems like this, hands-on. Balázs runs the build sessions at Agent-J+.