The Problem

Web analytics tools force a trade-off: Google Analytics gives you power but compromises user privacy and has a steep learning curve. Lightweight alternatives like Plausible are privacy-friendly but lack depth—session replays, user profiles, and advanced filtering are missing. Rybbit positions itself as the middle path: cookieless and privacy-friendly, yet feature-rich enough to replace GA4 for product teams that need behavioral insights without the consent-banner overhead.

What This Does

Rybbit is a full-stack, self-hostable web and product analytics platform. The client/ directory (179 files) is a Next.js/React application with TypeScript throughout. The API layer is split into two clear domains: client/src/api/admin/endpoints/ handles account, organization, and site management, while client/src/api/analytics/endpoints/ covers events, funnels, sessions, and user traits. Each endpoint has a corresponding React hook in client/src/api/analytics/hooks/, giving the UI a consistent data-fetching pattern.

The project ships with Docker support (client/Dockerfile, clickhouse/docker-compose.clickhouse.yml) and a Caddyfile for reverse-proxy setup. The ClickHouse integration is the analytics engine, and the clickhouse/MIGRATION.md file suggests schema changes are managed in-repo. Internationalization is handled via JSON message files in client/messages/ covering 12 languages.

How To Use It

Setup: The project uses npm (client/package.json, client/package-lock.json) and Docker. The README points to hosted and self-hosted options, with the self-hosted path documented at rybbit.com/docs/self-hosting. The ClickHouse dependency is defined in clickhouse/docker-compose.clickhouse.yml.

Configuration: Copy .env.example to .env and populate the required values. The Caddyfile handles TLS and reverse-proxy routing. The client/.npmrc file likely pins the npm registry or auth token.

Running it: The primary entry point is the Next.js app in client/. The Dockerfile suggests a containerized build is the intended path:

From the repo root, assuming the docker-compose setup covers both services docker compose -f clickhouse/docker-compose.clickhouse.yml up -d cd client npm install npm run dev

The README does not document exact run commands for the client, so the above is inferred from the standard Next.js pattern plus the provided Docker files. For production, the Dockerfile in client/ is the build path.

Real-World Use

A SaaS company replaces GA4 with Rybbit to track product usage without cookie banners. The team configures custom events with JSON properties (client/src/api/analytics/endpoints/events.ts), sets up funnel tracking (funnels.ts), and enables session replays (sessionReplay.ts) to debug UI friction. The admin API (client/src/api/admin/endpoints/) lets them manage multiple sites under one organization—useful for a product with separate marketing and app properties.

Code Health & Issues

Medium - No test files detected - The analysis found zero test files across the repo. For an analytics platform that handles user data and complex queries, untested code paths are a real risk. The GitHub Actions workflows (docker-publish.yml, translate.yml) handle CI/CD but do not appear to run tests. Medium - Large client monolith - Everything lives in client/, including API hooks, UI components, and public assets. This is maintainable at this scale but will become unwieldy as features grow. Low - Documentation is sparse - Only 3 doc files exist (README.md, CONTRIBUTE.md, SECURITY.md). The CLAUDE.md files suggest AI-assisted development is expected, but there is no architecture doc or API reference in-repo. Low - 12 language files present - Good i18n coverage, but no translation CI check visible beyond the translate.yml workflow.

The repo is cleanly organized with a sensible API/hook separation. The lack of tests is the most significant gap.

The Bottom Line

Rybbit is a credible, feature-rich alternative to GA4 for teams that want privacy-friendly analytics without sacrificing depth. The architecture is sound and the feature set is impressive for a 12k-star project. The missing test suite is a real concern for production adoption, but the active community and clear documentation make it worth evaluating for self-hosted analytics.