Skip to content

Work

Case studies, written the way I think about them: problem, approach, impact.

background-job-system · 2026-07

Background Job System — Dedicated Worker, Outbox, Dead-Letter Queue

Designed and built the background-job subsystem for the Partners.com.bd marketplace backend (.NET, ASP.NET Core, SQL Server) — a dedicated Hangfire worker with an atomic-enqueue outbox, a dead-letter queue, idempotent handlers, least-privilege SQL isolation, and OpenTelemetry-based observability. The single place all async work now lives.

[dotnet][hangfire][distributed-systems][reliability]

auth-architecture · 2026-07

Authentication Architecture — One Core, Two Edges, Every Session Revocable

Designed the authentication architecture for the Partners.com.bd marketplace (ASP.NET Core Identity, MediatR, SQL Server) around three principles: one core decides *who you are*, each client edge gets the session artifact safest for its medium (HttpOnly cookie for the server-rendered web, bearer JWT + rotating refresh for native mobile), and every session — web or mobile — must be revocable and enumerable server-side. Architected across two accepted ADRs after a four-stream R&D review: one decision core, two transport edges, revocable sessions on both, and a JWKS issuer boundary — with the single-core convergence of the user logins and a full Critical/High hardening set under 832 tests.

[dotnet][security][identity][oauth]

payments-platform · 2026-06

Payments Platform — One Generic Ledger, Self-Healing Settlement

Designed and built the payments platform for the Partners.com.bd marketplace backend (.NET, ASP.NET Core, SQL Server) — one generic `dbo.Payment` money ledger that serves every paid feature, a vendor-agnostic `IPaymentGateway` abstraction with a country-aware resolver, a single self-healing settlement coordinator, and a Hangfire reconciliation backstop. It replaces a legacy wide table (`dbo.OnlinePayment`) that stored money as text and trusted the client's callback.

[dotnet][payments][distributed-systems][reliability]

cv-builder · 2026-06

Professional Profile & CV Builder — One Server-Side Renderer, Six Designs, One Gate

Rebuilt the Partners.com.bd "Download My CV" feature from a client-side browser hack into a server-owned single source of truth, across a Flutter app and a .NET API. A structured professional-profile editor (four domains, full CRUD) feeds one server-side QuestPDF generator that renders six professional designs identically for web and mobile; the six-design paywall is enforced *inside the renderer* against a server-trusted flag, not in the UI; and the one place the generator touches the network — the avatar fetch — is hardened against SSRF. The 52-BDT unlock runs on the generic `dbo.Payment` ledger.

[dotnet][flutter][pdf][security]

mvc-to-api-migration · 2026-05

MVC → API Strangler Migration — Retiring a Monolith Without Going Dark

Migrated the Partners.com.bd marketplace off a legacy five-layer `OnlineShop` MVC monolith onto a new .NET Clean-Architecture core (ASP.NET Core, MediatR, Dapper + stored procedures) using the strangler-fig pattern. The new JSON API for the Flutter apps is built directly on the core, where a single `_mediator.Send(...)` reaches a handler that is the use case; each surviving Razor controller calls that same seam, one endpoint at a time, so the old pages keep serving live traffic and their indexed URLs while the data path underneath them runs on the new core. Every endpoint's crossover is gated by a layer-by-layer parity audit — not a big-bang rewrite.

[dotnet][clean-architecture][mediatr][migration]

async-image-pipeline · 2026-05

Async Image Pipeline — Upload-First UX, Server-Owned Lifecycle, Bounded CDN Cost

Designed and built the ad-image pipeline for the Partners.com.bd marketplace across both ends — a Flutter app and a .NET API. Photos upload the moment they're picked (per-photo progress, retry just the failed one), and a server-owned lifecycle — a `dbo.PendingImageUpload` staging row, a draft-driven heartbeat TTL, a commit step, and a background sweeper — guarantees that anything abandoned is cleaned off BunnyCDN, no matter what the client does. Built across five coordinated phases and three hardening rounds.

[dotnet][flutter][distributed-systems][cdn]

kioskvisionai · 2025-06

KioskVisionAI

Cloud-native distributed app that watches a fleet of donation kiosks with Azure Vision AI — orchestrated by .NET Aspire, deployed by generated GitHub Actions.

[dotnet-aspire][azure][vision-ai][microservices]

salesforce-sync-platform · 2025-03

Salesforce Synchronization Platform

Automated integration platform keeping payment systems and Salesforce CRM in sync — daily jobs, custom mappings, retries, and error recovery instead of manual entry.

[salesforce][integration][automation][dotnet]

ach-payment-integration · 2025-01

ACH Payment Integration — One-time & Recurring

Secure ACH, Apple Pay, and Google Pay payment workflows for donation kiosks and recurring billing across Stripe and Authorize.Net.

[stripe][authorize-net][payments][dotnet]

remote-kiosk-management · 2024-08

Remote Kiosk Device Management System

Web portal for live monitoring and remote control of donation kiosk fleets.

[rest-api][dotnet][monitoring]

data-import-automation · 2024-04

Data Import & Onboarding Automation

Automated SQL Server pipelines that turn messy client Excel templates into validated production schemas.

[sql-server][pipelines][automation]