Skip to content
publik.
Browse appsAppsPricingSupport buildersSupport
+Publish a repoPublish
Browse appsHow it worksPublish a repoSupport buildersGet helpPricingDevelopersGitHubPrivacy
© 2026 Publik
← All apps

OpenAnalytics

Open source version of google analytics

No AI needed

not yet reviewed by publik. It is live now; the founder has not reviewed this version yet.

O

OpenAnalytics

open source · on publik

On your phone?

You install OpenAnalytics from a computer. Send yourself the link and open it there.

Vote on OpenAnalytics
0
Read the install guide→Open in GitHub↗

Compared with

G

Google Analytics

Paid

Make this yours→Fork OpenAnalytics, change it, publish your version. About 30 minutes. No experience needed.

Having trouble? Tell us

How to install OpenAnalytics

Every step written out. No terminal experience needed. Pick your setup.

  • How to install OpenAnalytics on Mac →
  • How to install OpenAnalytics on Windows →

README

Open in GitHub ↗

OpenAnalytics

Web analytics without the surveillance. An alternative to Google Analytics that gives you the numbers you actually need — visitors, traffic sources, conversions — in one fast, cookieless dashboard.

Features

  • Pageviews & visitors — unique visitors, pageviews, sessions, bounce rate, visit duration, with automatic comparison to the previous period
  • Realtime view — current visitors, per-minute traffic, top pages/sources/countries right now
  • Traffic sources — referrer classification (Google, Twitter/X, Reddit, ...), UTM source/medium/campaign breakdowns, bounce rate & duration per source
  • Content — top pages, entry pages, exit pages
  • Location — countries and cities
  • Devices — browser, OS, device type, screen size
  • Custom events — fire events with one line of JS or a data-oana-event attribute
  • Goals — conversion tracking on custom events or page visits
  • Click-to-filter — click any row to filter the entire dashboard; combine with cross-filters
  • CSV export — download your timeseries anytime
  • Cookieless — no cookies, no personal data, no consent banner needed for basic analytics; ~1 KB tracking script

Adding a website

  1. Sign in and enter your domain (e.g. example.com).
  2. Paste the snippet into the <head> of every page:
<script async defer src="https://your-analytics-host/oana.js" data-domain="example.com"></script>

your-analytics-host is where this instance is served — the dashboard shows the snippet with the correct URL pre-filled.

Custom events
window.oana('Signed Up');

or declaratively:

<button data-oana-event="Signed Up">Get started</button>
Goals

Create goals in Settings → Conversion goals. A goal converts when a custom event fires or a page matching a path prefix is visited.

Docker

docker build -t openanalytics .
docker run -p 3000:3000 -v openanalytics-data:/app/db openanalytics

The SQLite database is stored in /app/db inside the container — mount a volume to persist it across restarts.

Configuration

VariableDescriptionDefault
DATABASE_URLSQLite file path (relative paths resolve from prisma/)file:../db/custom.db

Scripts

CommandDescription
bun run devStart the dev server
bun run buildProduction build
bun run startRun the production build
bun run db:pushCreate/update the SQLite schema
bun run db:generateGenerate the Prisma client
bun run lintESLint

Tech stack

  • Next.js (App Router) + React + TypeScript
  • Tailwind CSS + shadcn/ui-style components
  • Prisma + SQLite
  • Recharts for the timeseries chart

License

MIT