ce848ed6f0
internal: add bounded path registry to prevent cardinality explosion
...
"cardinality explosion" would make for an epic rock band name...
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I53cceb00ab9b17039b1fb1389977bf6b6a6a6964
2026-03-02 22:37:52 +03:00
be4534bac8
internal: add referrer classification
...
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ibcaa09bfd4767876ea1cdd5b61c53b476a6a6964
2026-03-02 22:37:51 +03:00
0691e5ee34
internal: implement path normalization w/ configurable rules
...
Strips query strings and URL fragmenets, prevents unbounded Prometheus
metrics by normalizing paths like:
- `/users/12345/profile -> /users/:id/profile`
- `/page?utm_source=twitter -> /page`
- `/a/../b -> /b`
etc.
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I72f2fa2452f4666567143d052b5716476a6a6964
2026-03-02 22:37:50 +03:00
28abcf50e2
docs: improve introduction paragraph; tiny cleanup
...
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I2d331809c915f4695603b72ff52857cc6a6a6964
2026-03-02 22:37:49 +03:00
b4f3828895
meta: add direnv support
...
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I27df8e0c8b731759748fc6c1a734ded76a6a6964
2026-03-02 22:37:48 +03:00
4c84393286
config: data structures; basic tests
...
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ia7d6f19a46ec8a4987ea429ec6502f676a6a6964
2026-03-02 22:37:47 +03:00
3fca34dd6f
nix: initial tooling
...
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Iabcad180d133f01d3c98e3d5fc9630b26a6a6964
2026-03-02 22:37:46 +03:00
7146a61326
initial commit
...
Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Id13648d9d5579614595101592739fe2a6a6a6964
2026-03-02 22:37:45 +03:00