Website analytics for operators who host their own pipeline.
Page views, clicks, scrolls, sessions, and custom events. GeoIP maps, UTM attribution, device and browser breakdowns, period-over-period comparisons, and PDF reports. Collected through a single POST endpoint you control. No third-party script, no hidden trackers, no data leaving your infrastructure.
Drop a tiny async script in your <head>. It posts
session_start, page_view, click, scroll, and page_leave to one
endpoint. Custom events queue from any frontend code.
Slice traffic by source, medium, and campaign. Top referrers, pages, and custom events rank in the dashboard with period-over-period deltas baked in.
A Natural Earth world map with click-through admin-1 drill-down. Doughnut breakdowns for device, browser, platform, and screen size. GeoIP runs locally, IPs never leave your host.
Flip any date range to PDF or markdown with one click, rendered in-process via embedded Typst (no chromium subprocess). Custom cards pin bespoke metrics. A public toggle shares without a login.
Hot fields (url, referrer, geo, UA, UTMs) live in typed columns
for fast queries. Custom keys land in an extra JSON
column, queryable via SQLite JSON1 (json_extract). Bot traffic
routes to a separate table at write time so human dashboards
never have to filter it.
One statically linked Rust binary plus SQLite, shipped as a tiny Alpine Docker image behind your own reverse proxy. Your domain, your retention policy. No vendor, no pixel, no lock-in.