Skip to content

Tech Stack

Granit builds on battle-tested open-source libraries. This page lists every direct production dependency, organized by functional domain. Each library was selected through an Architecture Decision Record (ADR) when multiple alternatives existed.

For test-only dependencies, see Testing stack (ADR-003).

ComponentVersionRole
.NET10Runtime and SDK
C#14Language
ASP.NET Core10Web framework
LibraryLicenseRoleADR
Entity Framework CoreMITORM, migrations, interceptors (audit, soft delete)
Npgsql.EntityFrameworkCore.PostgreSQLPostgreSQLPostgreSQL provider for EF Core
StackExchange.RedisMITRedis client for distributed cachingADR-002
Microsoft.Extensions.Caching.HybridMITL1/L2 HybridCache (.NET 9+)ADR-002
LibraryLicenseRoleADR
WolverineMITMessage bus, transactional outbox, handler pipelineADR-005
CronosMITCRON expression parsing for recurring jobsADR-005
LibraryLicenseRoleADR
VaultSharpApache-2.0HashiCorp Vault client — used by Granit.Vault.HashiCorp (transit encryption, dynamic credentials)
Azure.Security.KeyVault.KeysMITAzure Key Vault key operations (encrypt/decrypt)
Azure.Security.KeyVault.SecretsMITAzure Key Vault secret management (DB credentials)
Azure.IdentityMITDefaultAzureCredential for Azure SDK authentication
Microsoft.AspNetCore.Authentication.JwtBearerMITJWT Bearer authentication middleware
LibraryLicenseRoleADR
FluentValidationApache-2.0Declarative validation rulesADR-006
SmartFormatMITPluralization in validation messagesADR-008
LibraryLicenseRoleADR
Asp.VersioningMITAPI versioning (URL segment, header, query)ADR-004
ScalarMITInteractive OpenAPI documentation UIADR-009
LibraryLicenseRoleADR
SerilogApache-2.0Structured logging (OTLP sink)ADR-001
OpenTelemetry .NETApache-2.0Distributed tracing, metrics (OTLP export)ADR-001
LibraryLicenseRoleADR
ScribanBSD-2-ClauseTemplate engine (Liquid-compatible, sandboxed)ADR-010
PuppeteerSharpMITHTML-to-PDF rendering via headless ChromiumADR-012
ClosedXMLMITExcel (.xlsx) generationADR-011
LibraryLicenseRoleADR
SepMITHigh-performance CSV parsingADR-015
Sylvan.Data.ExcelMITExcel (.xlsx/.xls) parsingADR-016
LibraryLicenseRoleADR
AWSSDK.S3Apache-2.0S3-compatible object storage (MinIO, Ceph, etc.)
Magick.NETApache-2.0Image processing (resize, WebP/AVIF, EXIF stripping)ADR-013
LibraryLicenseRoleADR
MailKitMITSMTP email delivery
Azure.Communication.EmailMITAzure Communication Services email sending
Azure.Communication.SmsMITAzure Communication Services SMS sending
Microsoft.Azure.NotificationHubsMITAzure Notification Hubs push notifications
Microsoft.AspNetCore.SignalRMITReal-time WebSocket notifications
Lib.Net.Http.WebPushMITWeb Push notifications (VAPID)
LibraryLicenseRoleADR
Microsoft.IO.RecyclableMemoryStreamMITPooled memory streams (reduces GC pressure)

These libraries are used exclusively in *.Tests projects and are not shipped in production packages.

LibraryLicenseRoleADR
xUnit v3Apache-2.0Test frameworkADR-003
ShouldlyBSD-3-ClauseAssertion libraryADR-003, ADR-014
NSubstituteBSD-3-ClauseMocking frameworkADR-003
BogusMITTest data generationADR-003
TestcontainersMITDocker-based integration testsADR-007
LicenseCountExamples
MIT49EF Core, Wolverine, ClosedXML, StackExchange.Redis
Apache-2.015OpenTelemetry, Serilog, FluentValidation, Magick.NET
BSD-3-Clause2NSubstitute, Shouldly
BSD-2-Clause1Scriban
PostgreSQL1Npgsql

All dependencies are OSI-approved open-source licenses compatible with Apache-2.0. The full list with versions and copyright notices is maintained in THIRD-PARTY-NOTICES.md.