Work / MuniBilling · 2023 — Now

OPAL Operational Toolkit

Admin console giving MuniBilling staff one place for company management, data migration and property-management integrations.

Client
MuniBilling
Dates
2023 — Now

OPAL gives MuniBilling's operations staff a single admin console for work the legacy billing platform's own screens didn't cover well. It brings company management, data migration and third-party integrations into one UI that sits in front of several backend services.

I created OPAL in January 2025 and led its design and development, writing most of the code.

What it does:

  • Company management — bills, customers, parcels, custom properties, RUBS (ratio utility billing) templates and settings for each client company
  • Company import and export — a step-by-step migration wizard for accounts, account types, customers, parcels, bills, payments and users, with a spreadsheet-style tool to validate and correct data before it lands, plus import and export status tracking
  • Property-management integrations — configuration, entity views and on-demand syncs for Yardi, Rent Manager, Fortress and Propexo
  • Utility-data integration — Nectar connections and usage-data views
  • Operations — job and per-partner sync logs, plus health checks with Microsoft Teams alerting

Architecture:

  • Multiple backends, one UI — the app calls MuniBilling's .NET backend APIs directly and proxies partner APIs (Fortress, Propexo, Nectar) through server-side routes
  • Shared single sign-on — one login across MuniBilling's tools, with role-gated admin routes
  • Background processing — a .NET 8 job runner and a Pub/Sub-triggered Cloud Function for integration events
  • Delivery — Docker images built by CircleCI and deployed to Google Kubernetes Engine

Technologies used:

  • Next.js 14, React 18, TypeScript, Redux Toolkit
  • Material UI with MUI X Data Grid Pro, Syncfusion Spreadsheet
  • .NET 8 / C#, Google Cloud Functions, Google Cloud Pub/Sub
  • Docker, CircleCI, Google Kubernetes Engine
Next project
ELLA by CCL
→