T.J. McNaboe - Software Developor

Featured Open Source - Exchange56.Metering

Exchange56.Metering started with a specific problem in mind: many API and SaaS platforms have to enforce subscription access rules and track usage, but the existing solutions are often externalized, expensive, or tightly coupled to proprietary infrastructure. I wanted to build a more .NET-centric, customizable option that captured much of what commercial platforms like Moesif provide, but kept the logic in the application layer where the business context already exists.

The project is a .NET 10 library designed for subscription-based API access control and usage metering. It combines ASP.NET Core authorization filters, Orleans-based in-memory aggregation, and asynchronous Stripe Billing integration to make it possible to enforce plan permissions, measure consumption, and report usage without slowing down the hot path of the request.

Rather than relying on a gateway or a black-box vendor-controlled workflow, the library keeps the business rules inside the application. That allows teams to define their own permission models, map plan access to custom enums and policies, and meter domain-specific events such as tokens, API calls, documents, or other application-level units. The focus is not simply on billing mechanics; it is on building a flexible, testable, production-aware platform for usage-aware software.

From an engineering standpoint, the project is intentionally non-trivial: it spans authentication-agnostic request context resolution, distributed state management with Orleans, asynchronous batch reporting, Stripe integration semantics, and a demo application that shows how these pieces fit together in a real system. It is also open source, which gives potential employers a direct look into how I think about architecture, abstractions, and building software that solves real operational problems.

Built a .NET-native alternative to gateway-centric or vendor-locked usage metering and subscription enforcement.

Combined ASP.NET Core authorization patterns, custom permission models, and request-scoped policy resolution for application-owned access control.

Used Orleans grains to accumulate usage in memory and batch persistence, keeping the request path fast while enabling asynchronous reporting.

Integrated Stripe Billing for metered usage reporting to show how to design real-world SaaS monetization without blocking the critical path.

Included a complete DemoApi implementation so the architecture is not just conceptual—it is runnable, extensible, and easy to explore.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.