惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
J
Java Code Geeks
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
U
Unit 42
B
Blog
宝玉的分享
宝玉的分享
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
博客园 - Franky
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
云风的 BLOG
云风的 BLOG
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
博客园 - 叶小钗

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
I Was Tired of Sending My Users' Data to Google — So I Bu...
Soumyadip Maity · 2026-06-01 · via DEV Community

Soumyadip Maity

I'm a final year CS student. I build things in production.

Last year, I was working on [Ucoder](https://www.ucoder.in) — a full-stack platform I've been building since college. At some point I needed analytics. I wanted to know: are people actually using this? Which features are being used? Where are errors happening?

So I did what everyone does. I installed Google Analytics.

It worked. But something felt wrong.


The Problem

GA4 sends every user interaction to Google's servers. Every click, every session, every user's IP and device — all of it leaves your infrastructure and goes somewhere you don't control.

For a platform where I cared about user trust, that felt like a betrayal.

So I looked at alternatives:

  • Plausible — privacy-first, cookie-free, clean dashboard. But it only gives you pageviews, referrers, and bounce rate. No custom events, no error tracking, no real product analytics.
  • Mixpanel — powerful, but $28/month per 10K users. At scale, brutal. And the setup takes half a day just for event taxonomy.
  • Microsoft Clarity — session replays and heatmaps only. No event tracking.
  • Self-hosted Matomo — closer, but heavy to maintain and the UI feels dated.

None of them did what I actually needed:

Track real user behavior, capture errors, support custom events — without cookies, without sending data to a third party, and without a painful setup.

So I built it myself.


Introducing Ucoder Insights

Ucoder Insights is a privacy-first, cookie-free analytics platform with its own npm SDK.

It tracks:

  • 📄 Page views (SPA-aware, works with Next.js, React, Vue)
  • ⚡ Custom events
  • 🔴 JavaScript errors (with stack traces)
  • 📊 Core Web Vitals (LCP, FID, CLS)
  • 🌐 Referrers, UTM params, device/browser info

All without cookies. All processed on your own terms.


How It Works — Technical Overview

The SDK

npm install ucoder-insight

import { initUcoderInsight } from 'ucoder-insight';

initUcoderInsight("projectid"{
  // Your optional settings here
});

That's it. One function call. No configuration overhead.

The SDK is ~9.5KB gzipped. It uses a beacon API to send events so it never blocks the main thread. For SPAs, it listens to history.pushState and popstate to track client-side navigation automatically.

The Backend Architecture

The backend is built with Express 5 + TypeScript. When an event comes in:

  1. Request hits the Express API
  2. Passes through express-validator for input sanitisation
  3. Gets pushed into a BullMQ job queue backed by Redis
  4. A background worker processes the queue and writes to MongoDB

Why a queue? Because analytics should never slow down your app. If the ingestion endpoint is under load, events queue up and get processed asynchronously — your tracked application is never affected.

Client SDK
   │
   ▼
Express API  ──→  BullMQ Queue (Redis)
                       │
                       ▼
                  Worker Process
                       │
                       ▼
                   MongoDB

Privacy by Design

  • No cookies — identification uses a daily-rotated hash of IP + User-Agent. No persistent tracking across days.
  • No PII storage — we never store IPs or personal data.
  • Your data stays yours — events go to your project only, not a shared Google/Meta data warehouse.

What This Solves That Others Don't

1. Error Tracking + Analytics in One Place

With GA4 or Plausible, you need a separate tool (Sentry, LogRocket) for error tracking. With Ucoder Insights, JavaScript errors are captured automatically — with the page URL, user agent, and stack trace — right alongside your pageview and event data.

No context switching between dashboards.

2. Real Custom Events, Simply

import { trackEvent } from 'ucoder-insight';

// Track anything
trackEvent('signup_completed', { plan: 'free', method: 'email' });
trackEvent('feature_used', { feature: 'export_csv' });

Plausible's custom events require manual script tagging. Mixpanel requires you to plan an entire event taxonomy before you start. Here, you call one function.

3. SPA-First

Most analytics tools were built for traditional multi-page websites. Ucoder Insights was built with SPAs in mind from day one — it handles pushState navigation, React Router, Next.js App Router, and hash-based routing out of the box.


The Stack

Layer Technology
SDK TypeScript, Beacon API
Frontend Dashboard Next.js 16, React 19, Tailwind CSS 4
Backend Express 5, TypeScript, Socket.IO
Queue BullMQ + Redis (ioredis)
Database MongoDB (Mongoose 9)
Deployment Docker + PM2 on Linux VPS

Current Status

The platform is live at insights.ucoder.in and running in production on Ucoder.in.

The npm package ucoder-insight is public at v1.1.3.

I'm a solo developer and this is a real project — not a side project I'll abandon. I use it myself, which means I have a real incentive to keep it working and improving.


What's Coming Next

  • Alert system — get notified on Slack/email when error rate spikes or traffic drops
  • Server-side proxy — bypass ad-blockers without compromising privacy
  • Funnel analysis — visualise conversion paths across custom events
  • API access — pull your analytics data into your own dashboards

Try It

npm install ucoder-insight

If you're building something and tired of sending your users' data to Google — give it a try. And if you have feedback, I genuinely want to hear it.


Built by Soumyadip Maity — Full Stack Developer, final year CS student, West Bengal, India.