Why I built it
I wanted privacy-first analytics without Mixpanel's complexity or price. So I built my own.
What it does
UCoder Insights tracks real user behavior — sessions, errors, page events — with a clean dashboard and zero third-party data sharing.
Stack: MongoDB timeseries + Redis + Express + React + Next.js. Deployed on Azure with Cloudflare CDN.
Published npm package: ucoder-insight
What I learned from real users
5 projects are using it in production today. Their feedback directly shaped the product:
Wanted better error tracking UI → built it
Wanted session breakdowns → built it
Wanted richer graphs → built it
College doesn't teach you this. Real users do.
What's next
More integrations, better Core Web Vitals tracking, and hopefully more users.
If you're building something similar or want to try it out:
🔗 insights.ucoder.in
📦 npm install ucoder-insight
Top comments (1)
Privacy-first analytics where you hold the data yourself is a real niche, and reaching for MongoDB timeseries instead of stuffing events into a normal collection is the right instinct for it. Building the error-tracking UI straight off what your five production users asked for is how it should go.
The spot I'd look hardest at on any analytics product is the collector endpoint, because it has to stay open. The tracking snippet runs on anonymous visitors, so the collect route can't require auth, which means anyone can POST to it. Worth checking that an event claiming to belong to a project is really coming from that project's registered domain, otherwise someone can inflate or poison another customer's numbers, or just flood your timeseries with junk. The error-tracking feature is the sharp edge of the same thing: error messages and stack traces are strings an attacker can influence, and if the dashboard renders them raw, a malicious page can land a script that runs inside your customer's dashboard. For a product whose whole pitch is privacy, that's the kind of gap that undercuts the pitch.
I look at a lot of these and the collector validation is the one people skip. If it helps, happy to look at the ingestion and the dashboard read path and tell you what's exposed, free, no strings. Solid ship for four months solo.