.NET software development

Layered back ends with ASP.NET Core and ABP Framework for business systems with roles, permissions and audit logs.

We build business back ends on .NET with ASP.NET Core, ABP Framework and Entity Framework Core: layered architecture, roles and permissions, audit logs.

Last updated:

Which projects .NET is right for

.NET is Microsoft’s open-source development platform, and ASP.NET Core is its web and API side. With a strong type system, mature tooling and long support windows, it works well for systems that will grow over years and gather more business rules along the way. Today’s .NET runs on Linux, so you are not tied to Windows servers.

Where .NET fits well

  • You need many roles, permissions by region or unit, and an audit log of who changed what
  • Your company’s existing systems and team are already on .NET
  • The business rules are complex and will keep growing, so splitting the code into layers matters
  • Heavy reporting and bulk data imports are part of the system

Where we would suggest another route

  • You are aiming for a small first release of a few screens; setting up ABP is heavy at that scale
  • Instant messaging is at the centre of the product and the team works entirely in TypeScript (we suggest Node.js here)
  • Most of the work is document processing or working with AI models (we suggest Python here)

Layered architecture with ABP Framework

ABP Framework is an open-source application framework built on ASP.NET Core and grounded in domain-driven design (DDD). Identity, role and permission management, audit logging, background jobs and settings come as ready modules, so we spend our time on the client’s business rules. The solution is split into projects, each with a single responsibility:

LayerResponsibilityIn a client project
DomainEntities, business rules, domain eventsRecord, visit and transaction entities; an event handler that sends a notification when a transaction is recorded
ApplicationUse cases and permission checksTwo separate application layers, for the mobile side and the admin panel
HttpApi.HostAPI, authentication, API documentationTwo separate hosts, for the mobile API and the admin API
EntityFrameworkCoreDatabase access and migrationsPostgreSQL and PostGIS; heavy reports with Dapper
DbMigratorSchema updates and seed dataRoles and initial users

.NET in a client project

In a client project we built a registration and management platform for an organisation with field teams and partner locations. Records, field visits, transaction history and region-based permissions all live in one system. The back end is written with .NET and ABP, the admin panel with Vite and React, and the mobile app with Expo. The main decisions on the back end:

  • There are two separate API hosts: one used by the mobile app, the other by the admin panel. Both share the same domain layer, while their application layers and permissions are separate.
  • Locations and region boundaries are stored in PostgreSQL with PostGIS and wired into EF Core through NetTopologySuite. The map-based admin screens and filtering by region sit on top of it.
  • Heavy queries such as lists, counts and transaction reports are written as plain SQL with Dapper; the rest of the data access goes through EF Core.
  • Audit logs are written to a database separate from the main one.
  • When a transaction is recorded, a domain event fires and an SMS notification goes to the person concerned; the business rule and the notification stay separate.
  • QR codes are generated with QRCoder; Excel exports use EPPlus and CSV imports use CsvHelper.
  • Bulk data imports have their own command-line tool: it first runs in a trial mode and produces a report, and writes data only when explicitly told to.

What we use alongside .NET

ABP Framework

Layered solution structure, plus identity, permission and audit-log modules. We built a client project’s back end on ABP.

Entity Framework Core

Object-relational mapping and schema management through migrations. We use it with PostgreSQL in the same project.

PostGIS and NetTopologySuite

For location, boundary and proximity queries. The admin screens with maps run on them.

Dapper

Next to EF Core, for writing performance-sensitive report and list queries in plain SQL.

OpenIddict

Token-based authentication for the mobile app and the admin panel. We use it together with ABP’s account module.

Serilog

Structured, asynchronous logging, for tracing errors in production.

How a .NET project runs

  1. 01

    Free scoping call

    30 min

    We talk about who will use the system and in which roles, your existing infrastructure and the budget you have in mind.

  2. 02

    Written scope and quote

    We write down the entities, the roles and permissions, the integrations and which layer takes on what.

  3. 03

    Weekly releases

    Every week we deliver a working build; you try the new screens and endpoints with your own roles.

  4. 04

    Testing and release

    A senior QA tests the build before release; migrations and seed data are applied to production in a controlled way.

  5. 05

    The 30 days after launch

    30 days

    We fix the bugs that surface in this period free of charge; after that you can continue with monthly maintenance.

Timelines and budget ranges are published on our custom software development and pricing pages; this page relies on the same figures.

Questions about .NET

Do I have to pay a licence fee for ABP?

ABP has an open-source edition and a paid commercial edition. In our client project we used only the open-source packages; the commercial edition was not needed.

Does .NET need a Windows server?

No. Current .NET runs on Linux. In our client project each API host and the database update tool is packaged as its own Linux-based Docker image.

Do you build the admin panel and the mobile app too?

Yes. In the same project we built the admin panel with Vite and React and the mobile app with Expo; both connect to the .NET APIs.

What do I keep when the project ends?

A perpetual licence to use the software, and documentation. Transferring the source code to you is possible for an extra fee, stated separately in the quote.

Related services

Custom softwareWeb applicationERP, CRM & integrationDashboards
Contact

Let’s talk about your .NET project

In a free 30-minute scoping call we work out the roles, the permissions and how the system should be split into layers.