> For the complete documentation index, see [llms.txt](https://framework.aic.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://framework.aic.io/technical-guidelines-code-standards-and-tech-stack/tech-stack/tech-stack-overview.md).

# 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
