Introduction
TideMeter is a self-hosted, privacy-first web analytics platform for developers and small teams. It gives you traffic insights, conversion funnels, retention cohorts, user journeys, and team sharing — without cookies, vendor lock-in, or GA4 complexity.
Why TideMeter?
Most analytics tools are either too complex (Google Analytics) or too basic (page-view-only dashboards). TideMeter sits in the middle — practical analytics with real depth that you can deploy on your own server:
- No cookies — TideMeter doesn’t use cookies, local storage, or any form of persistent client-side storage
- No personal data — Visitor identifiers are generated using SHA-256 hashes with daily rotating salts, making individual tracking impossible
- Self-hosted — Your analytics data stays on your servers. No third party ever sees it
- Open source — MIT licensed. Every line of code is open for inspection
- Real depth — Funnels, journeys, retention, UTM tracking, public dashboards, and team sharing out of the box
Key Features
| Feature | Description |
|---|---|
| Privacy-first | No cookies, no fingerprinting, no personal data collection |
| Lightweight tracker | Under 1.5KB gzipped — won’t affect your site’s performance |
| Real-time dashboard | Live visitor counts, page views, referrers, and more |
| GDPR compliant | No consent banners needed — compliance by architecture |
| Dual database support | PostgreSQL for simplicity, ClickHouse for scale, SQLite planned |
| Multi-site | Track multiple websites from one dashboard |
| Team collaboration | User management with built-in authentication |
| API access | RESTful API for programmatic access to your data |
Tech Stack
TideMeter is a modern TypeScript monorepo built with:
- Next.js 16 — React framework with App Router and Turbopack
- PayloadCMS 3 — Headless CMS for app data management
- Tailwind CSS 4 — Utility-first CSS with CSS-first configuration
- Drizzle ORM — Type-safe database toolkit
- PostgreSQL — Primary application database
- ClickHouse — Optional high-performance analytics database
- Turborepo — Monorepo build system with pnpm 9
- TypeScript 5 — Strict mode across all packages
Project Structure
tidemeter/
├── apps/
│ └── web/ # Next.js + PayloadCMS application
├── packages/
│ ├── analytics/ # Analytics data layer (Drizzle ORM)
│ ├── tracker/ # Lightweight tracking script
│ ├── ui/ # Shared React UI components
│ └── tsconfig/ # Shared TypeScript configs
├── docker/ # Docker Compose files
├── scripts/ # Utility scripts
├── turbo.json # Turborepo configuration
└── package.json # Root package.jsonQuick Start
Get up and running in under 5 minutes:
git clone https://github.com/tidemeter/tidemeter.git
cd tidemeter
pnpm install
cp .env.example .env
pnpm devThen open http://localhost:3700 in your browser.
For detailed setup instructions, see the Getting Started guide.