Self-hosted real-user monitoring for Core Web Vitals. A tiny script collects LCP, INP, CLS, FCP and TTFB from real visitors; the dashboard shows percentiles per route, device and release, and flags the release that made a page slower.Self-hosted real-user monitoring for Core Web Vitals, with per-route, per-device and per-release breakdowns.
- Highlights
- A collector SDK under a 7 KB gzipped budget enforced in CI, and a NestJS ingestion API that queues events through BullMQ with Redis rate limits. Events land in daily Postgres partitions and roll up into hourly histograms, so percentiles over 90 days come from rollups instead of raw rows. Regressions are detected by comparing each release with the previous one per route and ranking changes by how far they exceed sampling noise.
- Tech stack
- NestJS
- TypeScript
- PostgreSQL
- Drizzle ORM
- Redis
- BullMQ
- Next.js
- React