mirror of
https://github.com/hanzoai/analytics.git
synced 2026-10-30 15:05:29 +00:00
The measurement product is ONE product and it lives in hanzoai/cloud:
apps/analytics owns /v1/analytics and the ingest door /v1/event. This repo was a
second implementation of that surface in four places, and all four are deleted.
1. POST /v1/event (src/app/v1/event/route.ts). It took a BARE JSON ARRAY of
{site, ts, type, path, ref, props, anon, sid, w, h} on a path spelled
identically to cloud's front door, which takes {batch:[…]}. Measured, live:
POST api.hanzo.ai/v1/event {"batch":[]} -> 200 {"accepted":0,"dropped":0}
POST analytics.hanzo.ai/v1/event [] -> 204
One path spelling, two protocols, two servers — so a @hanzo/event client
pointed at the wrong host failed silently. One door survives and it is
cloud's. getWebsiteByHost, whose only caller this was, goes with it.
2. public/hz.js -> hanzoai/ui pkgs/event (@hanzo/[email protected], commit b64341c).
The tag is a CLIENT, and the house has one client home. There it is the
script-tag distribution of @hanzo/event: same WireEvent batch, same
POST {host}/v1/event, default host api.hanzo.ai, on the CDN as
unpkg.com/@hanzo/event/hz.js — with its DOM autocapture intact.
3. collector/ — a THIRD event collector, its own Go module, deployed nowhere in
universe, forwarding to insights-capture.hanzo.svc:3000, a service that no
longer exists.
4. src/lib/insights-forward.ts, its call site in src/app/api/send/route.ts and
its INSIGHTS_HOST / INSIGHTS_API_KEY env — fire-and-forgetting every event at
that same deleted service.
What remains is a Umami fork holding per-site history in its own Postgres, with
no /v1/* surface and no client. LLM.md says so, and says not to add one back.
3.0.11 -> 3.0.12.
Co-authored-by: Hanzo Dev <[email protected]>
66 lines
1.2 KiB
JSON
66 lines
1.2 KiB
JSON
{
|
|
"$schema": "https://biomejs.dev/schemas/2.3.6/schema.json",
|
|
"vcs": {
|
|
"enabled": true,
|
|
"clientKind": "git",
|
|
"useIgnoreFile": true
|
|
},
|
|
"files": {
|
|
"includes": ["**", "!!**/dist"]
|
|
},
|
|
"formatter": {
|
|
"enabled": true,
|
|
"lineWidth": 100,
|
|
"indentStyle": "space",
|
|
"indentWidth": 2,
|
|
"lineEnding": "lf"
|
|
},
|
|
"linter": {
|
|
"enabled": true,
|
|
"rules": {
|
|
"recommended": true,
|
|
"a11y": "off",
|
|
"correctness": {
|
|
"useExhaustiveDependencies": "off"
|
|
},
|
|
"style": {
|
|
"noDescendingSpecificity": "off"
|
|
},
|
|
"complexity": {
|
|
"noImportantStyles": "off"
|
|
},
|
|
"suspicious": {
|
|
"noArrayIndexKey": "off",
|
|
"noExplicitAny": "off",
|
|
"noImplicitAnyLet": "off"
|
|
},
|
|
"performance": {
|
|
"noImgElement": "off"
|
|
}
|
|
}
|
|
},
|
|
"javascript": {
|
|
"formatter": {
|
|
"quoteStyle": "single",
|
|
"trailingCommas": "all",
|
|
"arrowParentheses": "asNeeded"
|
|
}
|
|
},
|
|
"css": {
|
|
"formatter": {
|
|
"enabled": true,
|
|
"indentStyle": "space",
|
|
"indentWidth": 2,
|
|
"lineEnding": "lf"
|
|
}
|
|
},
|
|
"assist": {
|
|
"enabled": true,
|
|
"actions": {
|
|
"source": {
|
|
"organizeImports": "on"
|
|
}
|
|
}
|
|
}
|
|
}
|