I design and ship production-grade .NET platforms: CQRS pipelines, identity, caching, messaging, observability, and the glue that keeps microservices honest.
- Architecting systems end-to-end — from domain boundaries to CI/CD and NuGet packaging
- Building reusable libraries used across products (the Cross.* ecosystem)
- Consulting on architecture, performance, and maintainable delivery
- Prefer code that is typed, testable, and boring in production
📍 Kyiv, UA · Timis, RO
Libraries I maintain and publish on NuGet:
| Package | Role | Downloads |
|---|---|---|
| Serilog.Enrichers.HttpContext | HTTP / correlation / memory enrichers for Serilog | |
| Cross.CQRS | MediatR CQRS: Query, Command, CommandEvent, filters, validation | |
| Cross.CQRS.EF | EF Core transactional behaviors for Cross.CQRS | |
| Cross.Identity | Identity flows: JWT, Argon2, OTP, OAuth | |
| Cross.Cache | In-memory + Redis cache with OpenTelemetry | |
| Cross.ErrorHandlers | Unified ASP.NET Core exception → JSON responses | |
| Cross.Headers | Correlation, CSP, user context middleware | |
| Cross.Messaging | Email / SMS / Telegram messaging helpers | |
| Cross.DataFilter | Filtering, sorting, pagination for EF Core | |
| update-nuspec-action | CLI + GitHub Action + Azure DevOps: sync .nuspec / package.json from .csproj |
|
| video-downloader | Desktop / tooling for downloading videos | |
| duplicate-finder | Desktop app: find and remove duplicate files |
More from the Cross.* family
- Cross.Storage.Providers · Cross.CORS · Cross.Json
- Cross.DependencyInjection · Cross.Url
- Cross.PepperVault (+ Azure KV / AWS / GCP / Vault providers)
- Cross.WebHost.AvailabilityCheck
- Serilog.Sinks.Console.Themes · Serilog.Sinks.ApplicationInsights.AspNetCore
→ Cross.* libraries & NuGet packaging
→ Identity / CQRS / observability for .NET services
→ Architecture consulting @ GURU SOLUTIONS
→ Tooling that removes friction (CI, nuspec, DX)
Architecting systems · shipping libraries · consulting on what lasts



