S2Service

.NET and C# backend and full-stack development

Valeron designs and builds backend services and APIs in .NET and C#, from the data model through to deployment.

Send a message
  • .NET
  • C#
  • HTTP APIs
  • Web interfaces

Request path through the layers

Illustrative

  1. Web interfaceThe screens an operator works in
  2. EndpointRouting, authentication, validated input
  3. ServiceThe rules of the system
  4. Data accessQueries and transactions
  5. DatabaseThe data model, stored

An illustrative animation. A request leaves the web interface, passes the endpoint, the service and the data access layer to the database, and the response returns the same way.

01Build

From the data model through to deployment

Each level rests on the one before it. The light follows the work from the first entity to the running service.

  1. Data model

    The data model comes first: entities, keys, relations, and constraints, kept in code and changed through versioned migrations.

    • Entities
    • Constraints
    • Migrations
  2. Services and APIs

    Backend services in C# carry the rules of the system and expose them as HTTP APIs, with validated input and explicit error responses.

    • Endpoints
    • Validation
    • Errors
  3. Web interfaces

    Full-stack engagements carry the same systems out to the web interfaces used to operate them.

    • Screens
    • Forms
    • Roles
  4. Deployment

    The system is built, configured for each environment, and released as a running service.

    • Build
    • Configuration
    • Release

02Source

The data model, in code

Keys, length limits, decimal precision, and relations are stated in code, next to the entities they describe. The sample is illustrative.

Language
C#
Platform
.NET
Level
01 Data model
C#Account.csIllustrative
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

public class Account
{
    public Guid Id { get; set; }
    public string Name { get; set; } = "";
    public decimal Balance { get; set; }
    public List<Entry> Entries { get; } = [];
}

public record Entry(
    Guid Id, Guid AccountId, decimal Amount, DateTimeOffset BookedAt);

public class AccountMap : IEntityTypeConfiguration<Account>
{
    public void Configure(EntityTypeBuilder<Account> account)
    {
        account.HasKey(a => a.Id);
        account.Property(a => a.Name).HasMaxLength(120).IsRequired();
        account.Property(a => a.Balance).HasPrecision(18, 2);
        account.HasMany(a => a.Entries)
            .WithOne()
            .HasForeignKey(e => e.AccountId);
    }
}

Excerpt. An entity, a related record, and the mapping that states the key, a length limit, the decimal precision, and the relation.

03Full-stack

The interfaces used to operate it

Full-stack engagements carry the same systems out to the web interfaces used to operate them.

  • Built on the same data model and the same API as the backend, so a screen never keeps its own copy of the rules.

  • Screens shaped around the tasks of the people who run the system: find a record, correct it, follow the work in progress.

  • Access by role, so each operator sees and changes only what the work requires.

Operator interface

Illustrative

04Contact

Discuss a backend or a full-stack system

The contact form is the only contact channel. Valeron replies to the address given in the form.

Send a message

Other services

Service 01

Algorithmic trading systems

Expert advisors for MetaTrader 4 and MetaTrader 5, covering strategy logic, risk controls, and order execution.

Service 03

SaaS product engineering

Software products taken from a written specification to a running, multi-tenant service.