Skip to content

agoda-com/Local-Dev-Telemetry-Manager

Repository files navigation

DX Telemetry Manager logo

DX Telemetry Manager

A full-stack DX telemetry dashboard that collects, stores, and visualizes build and test metrics from development tools.

This is an internal tool designed to be deployed within your organization's infrastructure. It receives telemetry from build plugins and test runners across your engineering teams, providing visibility into compile times, test pass rates, hot reload performance, and other developer productivity signals. It is not intended to be exposed to the public internet.

Architecture

  • Backend: .NET 10, ASP.NET Core (Kestrel), EF Core with SQLite or PostgreSQL
  • Frontend: React 19, TypeScript, Vite 8, Tailwind CSS 3, Tremor, Recharts
  • Container: Docker image available at agoda/devex-telemetry

Telemetry Clients

These are the client libraries that instrument developer tooling and send telemetry to this server:

Client Package Install Sends To Source
Agoda.Builds.Metrics NuGet POST /dotnet dotnet-build-metrics
Agoda.DevFeedback.AspNetStartup NuGet POST /dotnet dotnet-build-metrics
Agoda.Tests.Metrics.NUnit NuGet POST /dotnet/nunit dotnet-build-metrics
Agoda.Tests.Metrics.xUnit NuGet POST /dotnet/nunit dotnet-build-metrics
agoda-devfeedback-webpack npm POST /webpack devfeedback-js
agoda-devfeedback-vite2 npm POST /vite devfeedback-js
agoda-devfeedback-rsbuild npm POST /vite devfeedback-js
JUnit reporter Maven POST /junit java-local-metrics
ScalaTest reporter sbt POST /scala/scalatest java-local-metrics
Talaiot Gradle plugin Gradle POST /gradletalaiot Talaiot (external)
Jest reporter npm POST /jest testresults-collector
Vitest reporter npm POST /vitest testresults-collector

PostgreSQL Support

The API supports PostgreSQL when POSTGRES_CONNECTION_STRING is provided.

export POSTGRES_CONNECTION_STRING='Host=localhost;Port=5432;Database=devex_telemetry;Username=devex;Password=devex'

Notes:

  • If POSTGRES_CONNECTION_STRING is not set, the app uses SQLite.

Docker Usage

Run from Docker Hub image

docker run --rm -p 8080:8080 \
  -e POSTGRES_CONNECTION_STRING='Host=host.docker.internal;Port=5432;Database=devex_telemetry;Username=devex;Password=devex' \
  agoda/devex-telemetry:latest

Run with included docker-compose (API + PostgreSQL)

docker compose up -d

This starts:

  • API on http://localhost:8080
  • PostgreSQL on localhost:5432

Pointing Clients at Your Deployment

Two options, depending on how much per-machine configuration you want.

Option 1 (preferred for larger teams): Internal DNS

The compilation clients default to http://compilation-metrics.

Create an internal DNS record so compilation-metrics resolves to wherever you host this API. This gives zero per-machine setup: engineers don’t configure anything, telemetry just flows.

Option 2: Environment variable override per machine

Set DEVFEEDBACK_URL on workstations:

export DEVFEEDBACK_URL=https://your-devex-telemetry.example.com

This is useful when DNS changes aren’t available yet. Your IT support team can roll this out centrally via endpoint management.

Deployment Scenarios and Diagrams

See docs/deployment-scenarios.md for concrete deployment topologies, client routing examples, and markdown diagrams.

Development

Prerequisites

Backend

cd src
dotnet restore
dotnet build
dotnet run --project Agoda.DevExTelemetry.WebApi

The API starts at https://localhost:5001 with Swagger UI at the root.

Frontend

cd src/Clientside
npm install --legacy-peer-deps
npm run dev

The dev server starts at http://localhost:5173 and proxies /api requests to the backend.

I wrote more about this exact setup in Bridging Worlds: Making .NET BFF and React/Vite Play Nice in Development.

Running Tests

cd src
dotnet test

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors