Developer Tools / Analytics
Pulse
A privacy-first, self-hosted web analytics platform. One script tag, no cookies, real-time dashboard, and full ownership of your data.
Overview
Pulse is a lightweight web analytics tool you host yourself. It tracks page views, referrers, devices, and geography without cookies or personal data collection. The tracking script is under 1KB. The dashboard shows real-time visitor data and historical trends.
The Problem
Google Analytics is powerful but collects far more data than most sites need, requires cookie consent banners, and sends your visitors' data to Google. Privacy-focused alternatives like Plausible and Fathom are SaaS products with monthly fees. Developers who want full data ownership and zero recurring costs need a self-hosted option that's actually easy to deploy and maintain.
Approach
Sub-1KB tracking script
The client-side script is 847 bytes gzipped. It collects page URL, referrer, screen size, browser, OS, and country (derived from IP on the server, then discarded). No cookies, no localStorage, no fingerprinting. A single POST request per page view. The script loads async and never blocks rendering.
ClickHouse for analytics storage
Page view events are stored in ClickHouse, a column-oriented database optimized for analytical queries. Aggregations over millions of rows (unique visitors per day, top pages, referrer breakdown) complete in milliseconds. ClickHouse's compression keeps storage costs minimal even at high event volumes.
Real-time dashboard with server components
The dashboard uses Next.js server components to query ClickHouse directly. No API layer, no client-side data fetching for the main views. Time range filters and drill-downs trigger server-side re-renders. The result is a fast, interactive dashboard with zero client-side JavaScript for the analytics views.
Challenges
Accurate unique visitor counting without cookies
Without cookies or fingerprinting, counting unique visitors is tricky. Pulse uses a daily hash of IP + User-Agent + a rotating salt. The hash changes every 24 hours, so visitors can't be tracked across days. This gives accurate daily unique counts while preserving privacy.
Self-hosted deployment simplicity
The target audience is developers who want to run this on a $5 VPS. Packaged the entire stack (Next.js app + ClickHouse) as a single Docker Compose file. One command to start, automatic backups to S3-compatible storage, and a health check endpoint for monitoring.
Results
Pulse tracks 15+ websites with a combined 500K monthly page views, all running on a single $10 VPS.
847B
Tracking script size (gzipped)
500K+
Monthly page views tracked
<20ms
Dashboard query response time