Kyiv, Ukraine · Remote

Hlib Zinchenko

Senior .NET backend engineer

10+ years of building web products from scratch to production, most recently as a backend lead. I turn stalled or messy systems into maintainable modular monoliths, and I ship with AI daily.

Now

Experience

  1. 2024 – 2026
    Developex · Senior .NET Developer, backend lead on a restaurant POS platform
  2. 2018 – 2023
    Dedicated Lab · Lead .NET Engineer at a studio serving US clients; hired and mentored the team
  3. 2017 – 2018
    Speak With A Geek · .NET Developer
  4. 2015 – 2017
    AltexSoft · Junior .NET Developer

Selected work

Rescuing a stalled rewrite

A restaurant POS platform mid-way through a Ruby-to-.NET rewrite, weeks before its release date, with no docs, hardcoded credentials, no foreign keys and nobody who could explain the business logic. I got the date moved to sort out requirements with the client, took over as backend lead, re-architected the backend into a modular monolith, delivered multi-tenancy and Auth0, and hired an engineer to stabilize the team.

Brought to release readiness for a restaurant pilot

Dashboards from 20 seconds to 1

Occupancy dashboards for an office-space analytics product were taking 20 seconds over a few million sensor readings. The problem was what we stored, not how we queried it: I dropped the data the dashboards never needed and added the indexes they did.

20 s → 1 s response time

Halving the SMS bill

Report notifications on an employee survey platform went out as 2–3 SMS segments each, because of full names, untrimmed titles and raw S3 links. I shortened the text and built a small base62 URL shortener, so every message fits in one segment.

~50–60% lower SMS cost

Making AI-written code safe to ship

On the fintech product, agents write most of the code, so the rules live where an agent can't skip them: module boundaries enforced by project references, banned APIs, and analyzers, including my own ModelRules and TypeRules, that break the build. Architecture guides, a glossary and ADRs give the agent context, and I review every change.

Backend, web and admin apps built by one engineer

Open source

Libraries that grew out of conventions I kept enforcing by hand in code reviews.

Hlibz.EntityFrameworkCore.ModelRules

Your team's conventions, enforced on the EF Core model. If an entity breaks one, the model fails to build, at startup or in a unit test. 14 rules plus DDD aggregate boundaries, EF Core 8–10, tested on PostgreSQL, SQL Server, SQLite and MySQL.

EF Core NuGet

Hlibz.TypeRules.Analyzers

Roslyn analyzers for the shape of a type, based on what it inherits or implements. Endpoints sealed and internal, a dedicated interface per handler, entities without public setters, immutable value objects. Configured in .editorconfig, reported while you type.

Roslyn NuGet

Hlibz.Redoc

ReDoc API docs for ASP.NET Core: a dark theme and a document picker for the Swashbuckle and Redoc.AspNetCore pages you already serve, or a standalone ReDoc 3 host with per-document authorization, a strict CSP and no third-party requests.

ASP.NET Core NuGet

Side projects

Flashcards

An offline-first flashcards app that installs to an iPhone home screen, with no App Store, account or server. Built for my partner after no existing app fit how she studies.

Svelte 5 · TypeScript · IndexedDB Source

Stack

Architecture
DDD, CQRS, Clean Architecture, modular monoliths, event-driven, multi-tenancy
Backend
C#, .NET, ASP.NET Core, EF Core, MassTransit, MediatR, FluentValidation, Hangfire, Quartz, SignalR, Serilog, Roslyn analyzers
Data & cloud
PostgreSQL, MS SQL, MySQL, AWS (EC2, ECS, RDS, S3, SES, SNS, CloudWatch), Docker, GitHub Actions, GitLab CI, Azure DevOps
Testing
xUnit, Testcontainers, Moq
Integrations
Auth0, Stripe, Stream (delivery aggregators)
Frontend
TypeScript, Vue.js (logic side), React (web and admin apps shipped with Claude Code)
AI
Claude Code agentic workflows, LLM-powered features