Software engineer & solo product builder

Kings Mountain, NC · 20+ years building software

I design and build full products end to end — data model, backend, and interface — for niche B2B markets that off-the-shelf software overlooks. Currently a senior engineer at Premier Sports Lighting, and building contract and independent software on the side through BriBeck Diversified.

Currently: ten months into an ongoing contract building LifTrak, a maintenance app for the elevator service industry. Open to hearing about additional contract or fractional work alongside it.

Recent work

LifTrak

Active contract
.NET MAUI · ASP.NET Core · SQL Server · EF Core · JWT auth

A mobile maintenance-management app for the elevator service industry, built solo under an ongoing contract. Field technicians and office staff use it to schedule and document recurring inspection and service work across many buildings and devices.

  • Multi-select task assignment for fast batch scheduling
  • Photo-documented ticket reporting for compliance records
  • Admin console for tasks, staff, and buildings
  • Maintenance calendar and inline device management
Read the full case study →

Stack

Backend
ASP.NET Core, EF Core, SQL Server, RestSharp
Frontend
Blazor Server, MudBlazor
Mobile
.NET MAUI
Auth & payments
JWT, BCrypt, Stripe

About

I've been writing software professionally for two to three decades, most of it full-stack: data model up through the interface someone actually uses. Day to day, I'm a senior engineer at Premier Sports Lighting. Outside of that, I build and maintain a portfolio of small vertical SaaS products aimed at specific trades and niche B2B markets — the kind of software too small for a big vendor to bother with, but exactly what a particular business needs.

I tend to reuse a consistent, dependable stack across projects rather than chasing new frameworks, which means I can move quickly from idea to a working product without re-learning my own tools each time.

Contact

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 retry or reload the page.