All articles

Tech stack

Production runtime

LayerTechnology
Reverse proxy / TLSTraefik v3, Let’s Encrypt HTTP-01
Ingestion APINode.js 18, Express, @clickhouse/client, node-fetch
DatabaseClickHouse (MergeTree), SQL migrations under server/migrations/
DashboardNext.js 14 (Pages Router), React 18, Tailwind CSS, ApexCharts
ContainersDocker Compose (uts-api, uts-dashboard, uts-db, traefik, …)

External integrations

DestinationMechanism
GA4Measurement Protocol → google-analytics.com/mp/collect
MetaConversions API via facebook-nodejs-business-sdk
Google AdsuploadClickConversions when gclid / wbraid / gbraid present + G_ADS_CONVERSION_ACTIONS_JSON; LeadFormSubmitted deduped per lead when identifiable (see Lead form deduplication)
Microsoft ClarityBrowser-only: clarity.ms tag + custom events from tracker

Repo layout (high level)

  • server/ — API + public/uts-tracker.js
  • dashboard/ — Next app + /api/* ClickHouse queries
  • docker-compose.yml — Stack definition
  • docs/kb/ — This knowledge base (Markdown)

Related