Skip to content
Terrence Daniels edited this page Sep 17, 2026 · 14 revisions

A self-contained, event-driven platform simulating a utility company's meter-reading, usage-aggregation, and billing pipeline. An original design — not a fork or a cloned reference app — built to demonstrate the skills a Principal Developer role expects: distributed systems design, microservices decomposition, event streaming, resilient service-to-service communication, CI/CD, and production-grade observability.

This wiki is a set of short pointers, not a duplicate of the real documentation — each page states one thing worth knowing and links to the authoritative source rather than repeating it. For the full picture, start with README.md and todo.md in the main repo.

Status: Phases 1, 2, and 3 all complete, plus three features shipped ahead of Phase 4. Phase 1's core loop (Meter Simulator → Usage Aggregation → Billing over real REST) shipped first; Phase 2 replaced those REST calls with real Kafka events through a real Confluent Schema Registry; Phase 3 added a real Account/Customer Service and re-keyed usage/billing from MeterId to AccountId, plus a real Node.js/TypeScript Notification Service delivering real webhook POSTs — this repo's first polyglot service. Since then, Usage Aggregation gained a real Green Button/NAESB ESPI usage-data export over HTTP, Billing gained a real Stripe test-mode payment integration closing the loop from usage to billing to actual payment collection, and a new Grid Operations service now tracks real outages and work orders correlated from meters that stop transmitting. The full six-service pipeline is verified live end-to-end, including a real webhook actually received, a real Stripe payment collected, and real outages detected from a real stopped meter. See Account/Customer Service, Meter Simulator, Usage Aggregation, Billing, Grid Operations, and Notification Service. See todo.md for the phase-by-phase log.

Foundation

  • Design Document — architecture rationale, service breakdown, Kafka event contracts, cross-cutting concerns (resiliency, idempotency, tracing, security, testing), CI/CD pipeline plan, and interview talking points
  • todo.md — the source of truth for what's done and what's left, phase by phase
  • Project board — Backlog/Planned/In Progress/Verification & QA/Done, synced with todo.md
  • Aspire Orchestration — how AppHost.cs boots and wires together every resource across the six-service pipeline

Services

  • Account/Customer Service — REST CRUD + seeding, verified live end-to-end
  • Meter Simulator — publishes to Kafka, verified live end-to-end
  • Usage Aggregation — consumes + publishes via Kafka, exports real Green Button/NAESB ESPI usage data over HTTP, detects meters that stop transmitting, verified live end-to-end
  • Billing — consumes via Kafka, collects real Stripe test-mode payments over HTTP, verified live end-to-end as part of the full pipeline
  • Grid Operations — consumes via Kafka, correlates quiet meters into outages, tracks tech-filed & auto-detected work orders, verified live end-to-end
  • Notification Service — consumes via Kafka, delivers real webhooks, verified live end-to-end

Elsewhere

Clone this wiki locally