Skip to content
Open to backend engineering roles

Amirehsan Kohannasab

Software / Backend Engineer

I build backend systems in C# and .NET Core — REST APIs, data access with EF Core and SQL Server, and containerised services. My focus is clean architecture that stays readable as it grows, and performance work that is measured rather than assumed.

Currently focused on

Distributed messaging with RabbitMQ, gRPC service contracts, and real-time transport with SignalR.

Tehran, Iran C# · ASP.NET Core · EF Core · SQL Server · Docker

Stack

Technical Stack & Architecture

Grouped by role in the system rather than by self-assessed percentage — every item here is something I have shipped or built with.

Languages & Runtime

  • C#
  • SQL
  • JavaScript
  • TypeScript
  • Python

Frameworks & ORM

  • ASP.NET Core
  • EF Core
  • RESTful APIs
  • Minimal APIs
  • SignalR
  • gRPC
  • Blazor

Architecture & Design

  • Clean Architecture
  • Domain-Driven Design
  • Microservices
  • CQRS
  • Repository / Unit of Work
  • Design Patterns

Infrastructure & Databases

  • SQL Server
  • Docker
  • Git
  • GitHub Actions
  • RabbitMQ
  • SQLite
  • Postman

Selected work

Featured Engineering Projects

Systems I designed and built end to end. Each entry describes the architecture, the problem it solves, and the trade-offs behind it.

Clinic Reservation System

Private repository

An appointment booking platform for a medical clinic, built as a three-project ASP.NET Core MVC solution with a swappable persistence layer.

Architecture
Separated into Clinic.Mvc (presentation), Clinic.Application (use cases and services) and Clinic.Data (EF Core context, entities and migrations). Dependencies point inward only, so the data provider can change without touching business logic. Central Package Management keeps NuGet versions defined in one place across all projects.
Engineering challenge
The system targets SQL Server, which made it impossible to run or test on a machine without LocalDB installed. I abstracted the provider behind configuration so the same build runs on SQLite from two environment variables, then scripted the full cycle — drop database, build, boot, run an end-to-end HTTP suite, shut down — into a single command. Contributors can now verify the app with no database server installed at all.
  • C#
  • ASP.NET Core MVC
  • EF Core
  • SQL Server
  • SQLite
  • PowerShell

Clean Architecture Template

Private repository

A production-shaped .NET solution template that encodes clean architecture boundaries, containerisation and CI as defaults rather than as later additions.

Architecture
Five projects under src/: Domain (entities and invariants), Application (use cases), Infrastructure (persistence and external services), SharedKernel (cross-cutting primitives) and Web.Api (transport). The dependency rule is enforced structurally — Domain references nothing, and Web.Api is the only project that knows about HTTP.
Engineering challenge
Architectural rules decay when they rely on discipline alone. I moved them into the build instead: TreatWarningsAsErrors with AnalysisMode=All plus SonarAnalyzer promotes code-quality regressions to build failures, Central Package Management removes version drift between projects, and Docker Compose with a GitHub Actions workflow makes a clean checkout runnable and verified without local setup.
  • C#
  • ASP.NET Core
  • EF Core
  • Docker Compose
  • GitHub Actions
  • SonarAnalyzer

Real-Time Chatroom

Private repository

A live messaging application using SignalR for bidirectional transport, built on the same clean architecture layering as the template above.

Architecture
SignalR hubs sit in the transport layer and delegate straight to application services, so message handling logic stays independent of the connection mechanism and remains unit-testable without a live socket. Runs under Docker Compose alongside its database.
Engineering challenge
Real-time transport tends to pull business logic into the hub, where it can only be exercised through a live connection. Keeping the hub as a thin adapter over application services meant the messaging rules could be tested directly, and the same services are reusable if the transport is later swapped for WebSockets or gRPC streaming.
  • C#
  • ASP.NET Core
  • SignalR
  • EF Core
  • Docker Compose

Online Shop — E-Commerce Platform

An ASP.NET Core storefront with a shopping cart and a full administrative back office, organised with an onion-architecture layout.

Architecture
Split across Domain, Application, Infra.Data, IOC and Web. The IOC project centralises dependency registration so composition lives in one place instead of being scattered through the web layer — which keeps the Web project free of any direct reference to the data layer.
Engineering challenge
Cart state has to survive both anonymous browsing and sign-in without losing items at the moment of authentication. Modelling the cart as a domain concept rather than as session data made that transition explicit, and kept order totals computed in one place instead of recalculated per view.
  • C#
  • ASP.NET Core MVC
  • EF Core
  • SQL Server
  • JavaScript

Background

Professional & Academic Background

Experience

Full-Stack Developer — E-Commerce Website

Dec 2024 — Feb 2025

TopLearn · Tehran, Iran

Built a complete e-commerce website end to end, covering the storefront, cart and administrative management.

Education

B.Sc. Computer Engineering

Sep 2019 — Sep 2024

Tehran-Shomal University · Tehran, Iran

Certifications

CS50 SQL Certificate

2025

Harvard University (CS50)

Microsoft Developer

2025

Microsoft via edX

Verify credential

Contact

Get in Touch

Open to backend engineering roles and collaboration on .NET systems. The form reaches my inbox directly, or email me if you prefer.

Location

Tehran, Iran

Your address is used only to reply. Nothing is stored or shared.