Close
Case study · 10

Self-hosted
Analytics

The analytics behind this very site — no cookies, no consent banner, no third parties. Visitors, sessions, sources and conversions on a modern dashboard, running on the site’s own server.

Built for
furkanakman.com
Stack
Go · SQLite · Chart.js
Privacy
Cookieless · No personal data
Hosting
Self-hosted · Own server
The problem
Analytics usually costs a banner — or your visitors’ data.

Mainstream tools set cookies, so every first visit opens with a consent banner. Their scripts weigh down the page, and every visit ends up on someone else’s servers.

The solution
Count what matters. Keep nothing personal.

A cookieless counter on the site’s own server, a tiny signal sent only after the page has loaded, and a dashboard built around three questions: who comes, from where, and who gets in touch.

The dashboard

Every number is one click from its chart.

Seven cards up top — tap one and the chart follows. Each compares itself with the period before, sixteen ready-made ranges sit a click away, and any page can narrow the whole report down to itself.

Illustrative data
Conversion tracking

Not just visits — who reaches out.

The site reports the moments that matter for a portfolio: the contact panel opening, a case study being read, the form being sent. The dashboard turns them into a conversion rate — and shows which days, pages and sources bring the people who write.

A bot that trips the form’s spam trap gets a friendly “sent” — and is never counted as a conversion.

Visited the site 2,418 · 100%
Opened the contact panel 186 · 7.7%
Sent the form 41 · 1.7%
Illustrative data
Privacy by design

Nothing to consent to.

No cookies, no banner

Visitors are told apart by a one-way code whose secret is replaced every day — it can’t be turned back into an address, or linked from one day to the next.

No personal data

The address of a visit is used once — for the country and city — and never written down.

Your server, your data

Every number lives on the site’s own server. Nothing is sent to a third party; export it all as CSV.

Bots left out

Crawlers and automated browsers are recognised and kept out of the numbers.

Zero cost to the page

Counted once the page is done.

No script to download: a few lines inside the site send one small signal after everything has loaded and the browser is idle, and an even smaller one when the page is left. The visitor never waits for the counter.

~200 B
per visit, sent after the page has loaded
0
cookies, banners or third-party scripts
100 KB
the dashboard’s code, compressed
1
program on the server — nothing else to install
Visitors & sources

From the country down to the city.

Pick a country and its cities appear beside it. Sources are sorted into social media, search engines, AI assistants, design galleries, email and campaigns. Apps that open links in their own browser are recognised, and a link builder tags the links you share.

Illustrative data
Sessions & journeys

How a visit actually went.

Totals say how many came. Sessions say what they did: how long they stayed, where they arrived and left, and every step in between — still without a cookie.

Time that means something

A page only counts while it is on screen and in use — a tab left open in the background adds nothing.

Engaged or gone

Bounce rate, pages per session and average time, plus the pages where visits begin and end.

Every journey, step by step

A timeline of each visit — pages, time on each, the links clicked, the form sent — with an engagement score.

Live

Who is on the site right now: the page they are reading, where they came from and their city.

Built in

Small things that make it a product.

A secure sign-in

A hashed password, a signed session that scripts can’t read, and a lock-out after repeated wrong attempts.

Settings in plain words

Choose what is collected and for how long, leave out your own visits or office IP, and download everything as CSV.

Always up to date

The city database refreshes itself every week, and the service restarts on its own if the server ever does.

Fits a phone

Cards, charts and tables rearrange for a small screen — the numbers are readable on the go.

Next case study · 01
Courier Route Planner
WooCommerce module