Skip to content
// AUSGEWÄHLTE PROJEKTE
01 / EIGENES PRODUKT · 2024–

Satsu

Web-Analytics, die jede Interaktion und jeden Live-Besucher zeigt — ohne Cookies, ohne Consent-Banner, ohne Rauschen.

// ~1 MIO. EVENTS/MON.

Satsu-Site-Analytics: Besucher, Pageviews und Bounce-Rate über 30 Tage, Live-Besucher-Panel, Geräte-Aufschlüsselung, Top-Seiten und Channel-Attribution inklusive AI-Traffic.

// DAS PROBLEM

Ich wollte Analytics für meine eigenen Projekte und konnte mit den Optionen nichts anfangen: Cookie-Banner, DSGVO-Aufwand, Dashboards voller Rauschen. Also habe ich Satsu gebaut. Die erste Version lief auf einem einzelnen Express-Server; ein unabhängiger Entwickler hat das Skript in zwei indonesischen Regierungsprojekten eingesetzt (mehr gibt das NDA nicht her). 2026 habe ich das Ganze als Plattform neu gebaut — sieben Services plus Tracker um eine Event-Pipeline — und öffentlich auf satsu.pro relauncht.

// WAS ICH GEBAUT HABE

  1. 01

    Ein Tracker, der nur rohe Signale liefert — Pageviews, Custom Events, SPA-Navigation, ausgehende Klicks, Downloads, Scroll-Tiefe — in 1.953 Bytes abhängigkeitsfreiem JavaScript, gemessen am Produktions-Build.

  2. 02

    Eine Go-Event-Pipeline — Ingest → NATS JetStream → Processor → ClickHouse — mit Bot-Filter und Geo- und Geräte-Anreicherung im Stream; der Ingest bleibt oben und puffert weiter, während alles dahinter neu deployt.

  3. 03

    Ein eigener AI-Traffic-Channel — ChatGPT, Perplexity, Claude & Co. — dazu Goals mit Conversion-Rates, Live-Besucher und Aufschlüsselung nach Land, Gerät und Browser.

  4. 04

    Mandanten-Struktur Organisation → Workspace → Site mit Teams und Einladungen, einer org-gebundenen Read-only-API und Stripe-Billing (Merchant of Record) mit weichen Limits: Hinweise und Upgrade-Nudges, nie gelöschte Daten.

  5. 05

    Ein selbst gehostetes Monorepo: CI baut jedes Image, deployt pro Push eine vollständige Verify-Umgebung und schaltet Produktion nur über main frei — Docker Swarm auf Hetzner.

// DER SPANNENDE TEIL

Satsu erkennt einen Besucher, ohne je ein Cookie zu setzen. Der Processor bildet pro Tag eine Session-ID als sha256(siteId | maskierte IP | User-Agent | Datum | Salt), gekürzt auf 16 Hex-Zeichen — das Datum steckt im Hash, also rotiert die ID um Mitternacht UTC, und dieselbe Person ist morgen eine neue, nicht verknüpfbare Session. Und weil ClickHouse nur rohe, angereicherte Events speichert, entsteht alles darüber — Sessions, Bounce, Channels, Goals — erst zur Query-Zeit: Ein besserer Classifier wirkt rückwirkend auf die gesamte Historie, ohne eine einzige Zeile neu zu verarbeiten.

// IM PRODUKT

Satsu-Workspace-Dashboard, das alle Sites einer Organisation bündelt — Besucher über alle Sites, Live-Zähler und Sparklines pro Site.
Hero der Satsu-Landingpage mit Live-Zahlen für satsu.pro selbst — das Produkt trackt die eigene Seite.

// ERGEBNIS

// WIRKUNG

Live auf satsu.pro seit dem Relaunch im Juli 2026, mit freier Registrierung und bezahlten Plänen. Ein Drittentwickler hat Satsu in zwei südostasiatischen Regierungsprojekten eingesetzt (unter NDA); es verarbeitet rund 620k–1 Mio. Events pro Monat.

// STACK

Go-Services (Ingest, Processor, Query, Public API) + TypeScript-Services (Core-API, Billing), Dashboard und Landing in Next.js, ClickHouse + PostgreSQL + NATS JetStream + Redis, Stripe als Merchant of Record. Selbst gehostet auf Hetzner, Docker Swarm.