Skip to content
Keshwar White
The CashAscent dashboard showing cash position, debt totals, and the next required payments.

Product

CashAscent

Architect and lead developer

Most budgeting apps tell you where your money went. I wanted one that answers the harder question: with the money I have right now, what do I pay, what do I protect, and what comes next? CashAscent builds that plan for every paycheck and keeps it honest as bills, debts, and due dates move around.

It's a complete SaaS product that I designed and built end to end: the API, the web application, the marketing site, subscription billing, and the pipelines that ship them.

  • Paycheck-by-paycheck planning that protects essentials like housing before anything else
  • Debt strategy, BNPL installment tracking, cash-flow forecasting, and savings goals in one plan
  • Subscription billing with a 30-day free trial
  • .NET 10
  • FastEndpoints
  • EF Core
  • Dapper
  • SQL Server
  • React
  • Next.js
  • Stripe
  • Azure
Three Jaro Pets owner app screens: adding a dog and choosing its coat color, a list of three Cane Corsos, and a growth chart comparing one dog's weight with the breed's reference range.

Product

Jaro Pets

Architect and lead developer

Jaro Pets is built for one breed first. Cane Corsos grow fast and get big, and their owners end up tracking a lot: weight, vaccines, feeding, grooming, heat cycles, and who's looking after the dog this week. Jaro Pets keeps all of it in one place, and you can share a dog's records with a co-owner, vet, trainer, or sitter, each with access that fits their role.

The screens here are design concepts for where the owner app and the breeder tools are headed. The platform underneath is the part I've built out most: separate .NET services for pets, owners, breeds, nutrition, subscriptions, and sign-in, each owning its own data and passing integration events to the others instead of sharing tables.

  • Each bounded context is its own service, with its own database, repository, and deployment pipeline
  • Integration events through MassTransit, on RabbitMQ locally and Amazon SQS in production, with an outbox so a saved change never loses its event
  • Passwordless sign-in through Microsoft Entra External ID, exchanged for the platform's own tokens with permissions scoped to each service
  • Architecture tests that fail the build when code crosses a boundary it shouldn't, like a Stripe type showing up outside the infrastructure layer
  • .NET 10
  • ASP.NET Core
  • EF Core
  • MassTransit
  • Aspire
  • SQL Server
  • .NET MAUI
  • React
  • Blazor
  • Stripe
Three In Season screens: a home screen with fruits and vegetables in season near you, a detail page for apples, and a recipe for an apple kale salad.

Mobile app

In Season

Designer and developer

Produce tastes better and costs less when it's in season, but most of us couldn't tell you what's in season this month. In Season answers that for where you are: what's at its peak right now, why, what it's good for, which stores nearby carry it, and a few recipes to use it in.

The first version was a universal app for Windows and Windows Phone, with an Android version on Xamarin, all sharing one MVVM layer and pulling from an ASP.NET Web API. These screens are the redesign. The idea is the same, but now everything is built around your location, so the season, the stores, and the recipes all match where you live.

  • Seasons worked out by location and hemisphere, so "in season" means in season where you are
  • A page for each fruit and vegetable: its best months, flavor, nutrition, and why it's in season now
  • Seasonal recipes with ingredient checklists and step-by-step instructions
  • C#
  • ASP.NET Web API
  • Entity Framework
  • SQL Server
  • Xamarin
  • Windows Phone
  • MVVM Light

Book

Practical Domain-Driven Design with .NET

Author

Writing the book meant building the system it describes, one pattern at a time, and testing every rule it claims. Every listing is the book's own code, and it builds and runs.

  • Twelve parts that take one multi-tenant SaaS API from the first commit to production readiness
  • Every pattern introduced with the problem it solves, before its name
  • Rules proven with tests, including tests I broke on purpose to watch them fail
  • .NET 10 (LTS)
  • ASP.NET Core Minimal APIs
  • Entity Framework Core
  • Dapper
  • SQL Server
  • xUnit
API · InfrastructureApplicationDomain

Professional work

Enterprise systems

Acting tech lead and architect

These are systems people rely on every working day, where the rules come from policy and law, the data is sensitive, and the software has to keep running while it changes underneath them.

  • A data management and reporting platform delivered end to end in under three months: architecture, development, CI/CD, hosting, and secure deployment
  • A scheduling application that serves several facilities from a single deployment, built with Clean Architecture and separate read and write paths
  • A platform of .NET microservices with Angular micro-frontends, organized around Domain-Driven Design boundaries
  • Shared security libraries, published as NuGet and npm packages, so every application handles authentication and permission-based authorization the same way
  • Read-only REST APIs over large existing databases
  • .NET
  • ASP.NET Core
  • Angular
  • SQL Server
  • Microsoft Entra ID
  • Azure DevOps

Get in touch

Let's talk about software, architecture, or the book.

Whether it's a question about a chapter, an invitation to speak, or a design problem you're working through, I'd like to hear about it.