流れ · nagare— flow, current, stream

Analytics without
surveillance.

A cookieless, GDPR-native, open-source dashboard for your sites. Self-host on Cloudflare and Convex in one command.

$ bash <(curl -fsSL https://raw.githubusercontent.com/florianjs/nagare/main/bootstrap.sh)
— No cookies— No persistent identifiers— No PII stored— No consent banner— No third-party scripts— No dark patterns— Open source · MIT— No cookies— No persistent identifiers— No PII stored— No consent banner— No third-party scripts— No dark patterns— Open source · MIT
§ 01 — Specs

Built in the margins.
Zero noise by default.

01 / 03Privacy

Cookieless by design

Visitors identified via a daily-rotating server salt hash. No cookies, no localStorage, no consent banner. GDPR Article 5(3)-clean out of the box.

02 / 03Realtime

Live, or rolled up

Convex subscriptions stream pageviews to the dashboard in milliseconds. Hourly crons keep long-range queries cheap — no vendor lock, no Redis tax.

03 / 03Depth

Heatmaps, overlaid

The tracked site renders inside a signed iframe; click and scroll aggregates project onto a canvas. One-pass UX debugging without third-party scripts.

§ 02 — Install

One line.
That's the install.

Paste into <head>. 2.7 KB gzipped, zero dependencies, zero third-party calls.

2.7
KB · gz
0
deps
index.html
1 <script src="https://nagare.so/t.js"
2         data-site-id="a1b2c3d4"
3         defer></script>
3 lines
§ 03 — Interface

Numbers, unadorned.
Hierarchy through typography alone.

nagare.so / acme.com
Last 30 days
Visitors
48,219
+12.4% vs prev
Pageviews
172,038
+8.9% vs prev
Bounce
42.1%
−3.2% vs prev
Duration
2m 14s
+0:18 vs prev
VisitorsMar 18 → Apr 16
Top pagesViews
  • /28,410
  • /pricing14,829
  • /docs9,217
  • /blog/launch6,143
  • /about3,091
Top referrersVisitors
  • Direct / None18,291
  • google.com14,029
  • news.ycombinator.com6,487
  • twitter.com3,812
  • github.com2,104
§ 04 — FAQ

Questions,
answered.

Do I need a cookie banner?+

No. Identification uses a daily-rotating server-side salt hash of IP + UA. No persistent visitor ID, no client storage. Compliant with GDPR Art. 5(3), ePrivacy Directive, CNIL guidelines and PECR.

Is self-hosting actually one command?+

Yes — bash <(curl -fsSL https://raw.githubusercontent.com/florianjs/nagare/main/bootstrap.sh). It provisions Convex (browser login), deploys schema, logs into Cloudflare (browser login), pushes the worker, wires env vars. Two OAuth popups, zero keys to copy.

Can I track multiple sites?+

Each site ships a unique data-site-id on the same script. One file, N sites, routed server-side at ingest.

What about scale?+

Raw events insert into Convex; a cron rolls them into hourly aggregates. The dashboard reads the rollup, not the raw events. Convex free tier covers ~1M pageviews/month.

Is it open source?+

MIT. Fork it, host it, modify it. No proprietary SaaS behind the curtain.

§ 05 — Begin

Stop collecting
what you don't
need.

Open the dashboard
Free · Self-hosted · No account required