For the complete documentation index, see llms.txt. This page is also available as Markdown.

Tech Stack Overview

Purpose

This page defines the AIC default technology stack for modern .NET delivery.

The stack is intentionally opinionated. It reduces debate, improves repeatability and helps teams move quickly while preserving quality and security.

Stack Layers

Layer
Default AIC choice
Notes

Language

C#

Production baseline is C# 14 with .NET 10.

Runtime

.NET 10 LTS

Default production runtime.

Preview track

.NET 11 / C# 15

Approval required for production use.

Web APIs

ASP.NET Core

Minimal APIs or controllers depending complexity.

Desktop Windows

WPF

For Windows-only line-of-business applications.

Cross-platform apps

.NET MAUI

For mobile or cross-platform desktop requirements.

Primary persistence

MongoDB

Default operational data store for AIC products and platforms.

Relational / ORM

EF Core

Secondary option where relational consistency, reporting or customer constraints justify it.

High-performance SQL

Dapper

Targeted use only where SQL is explicitly required.

Caching

Redis

Default distributed cache, session cache, rate-limit store and short-lived coordination layer.

Testing

NUnit, Moq, dotnet test

NUnit is the default test framework; Moq is the default mocking library unless a project exception is approved.

Static analysis

Roslyn analyzers, ReSharper

Enforced locally and in CI.

Formatting

.editorconfig, dotnet format, ReSharper cleanup

Consistent style across IDEs.

Observability

OpenTelemetry-compatible logs, metrics and traces

Correlation required.

Distributed local dev

Aspire where useful

Especially for multi-service applications, MongoDB, Redis and message brokers.

API documentation

OpenAPI

Generated and reviewed.

CI/CD

Azure DevOps or GitHub Actions

Customer environment may dictate.

Package management

NuGet central package management

Approved feeds only.

Secrets

Managed secrets platform

No secrets in source control.

Containers

Docker / OCI images

When deployment model requires it.

Default Technology Choices

Adopt by default

Use these unless there is a clear reason not to:

  • .NET 10 LTS

  • C# 14

  • ASP.NET Core

  • MongoDB as the primary persistence layer

  • Redis for distributed caching and short-lived coordination

  • WPF for Windows-only desktop apps

  • .NET MAUI for justified cross-platform apps

  • NUnit for automated tests

  • Moq for mocking and test doubles

  • ReSharper and Roslyn analyzers

  • .editorconfig

  • global.json

  • OpenAPI for APIs

  • structured logging

  • OpenTelemetry-compatible telemetry

Use with review

Use these after architecture review:

  • .NET 11 preview / C# 15

  • EF Core / relational database as the main persistence layer

  • Native AOT

  • gRPC

  • Blazor Hybrid

  • Dapper-heavy data access

  • event sourcing

  • CQRS at infrastructure scale

  • microservices

  • custom security frameworks

  • custom serialization protocols

Avoid for new greenfield projects

Avoid unless required by customer, legacy integration or specific constraint:

  • unsupported .NET versions

  • .NET Framework for new systems

  • manually managed deployment packages without CI/CD

  • direct database access from UI projects

  • business logic in controllers, views or pages

  • ad hoc repository structures

  • unapproved NuGet feeds

  • unmaintained packages

  • using relational persistence by habit when MongoDB is better aligned to the domain

  • using in-memory cache as a substitute for Redis in distributed systems

Stack Selection Decision

Before selecting technology, answer:

  1. What user or operational need does it serve?

  2. Is it supported for the expected life of the solution?

  3. Does AIC have delivery capability in it?

  4. Does the customer permit it?

  5. Does it meet security and accreditation requirements?

  6. Can it be tested and operated?

  7. Can it be maintained by a future team?

  8. Does it create reusable IP?

  9. Does it reduce or increase project risk?

  10. Is there a simpler supported option?

Technology Exception Record

Any non-standard technology must record:

  • technology name

  • owner

  • reason

  • alternatives considered

  • security assessment

  • licensing assessment

  • support model

  • operational impact

  • exit plan

  • approval

Was this helpful?