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
Microsoft.Extensions.AIMITProvider-agnostic IChatClient / IEmbeddingGenerator abstractions — used by Granit.AI
Microsoft.Extensions.AI.OpenAIMITOpenAI integration (GPT-4o, o3/o4-mini, embeddings) for Granit.AI.OpenAI and Granit.AI.AzureOpenAI
Azure.AI.OpenAIMITAzure OpenAI Service client with DefaultAzureCredential support — used by Granit.AI.AzureOpenAI
AnthropicMITAnthropic SDK for Claude models (Opus, Sonnet, Haiku) — used by Granit.AI.Anthropic
OllamaSharpMITOllama client for local model execution — used by Granit.AI.Ollama
Microsoft.Extensions.VectorData.AbstractionsMITProvider-agnostic vector store interface — used by Granit.AI.VectorData
LibraryLicenseRoleADR
Asp.VersioningMITAPI versioning (URL segment, header, query)ADR-004
ScalarMITInteractive OpenAPI documentation UIADR-009
Microsoft.Extensions.Http.ResilienceMITPolly v8 resilience pipeline for outbound HTTP (retry, circuit breaker, timeout) — used by HTTP-based notification providers
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.)
Azure.Storage.BlobsMITAzure Blob Storage client — used by Granit.BlobStorage.AzureBlob
Google.Cloud.Storage.V1Apache-2.0Google Cloud Storage client — used by Granit.BlobStorage.GoogleCloud
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
AWSSDK.SimpleEmailV2Apache-2.0Amazon SES v2 email delivery — used by Granit.Notifications.Email.AwsSes
AWSSDK.SimpleNotificationServiceApache-2.0Amazon SNS SMS delivery — used by Granit.Notifications.Sms.AwsSns
Microsoft.Azure.NotificationHubsMITAzure Notification Hubs push notifications
Microsoft.AspNetCore.SignalRMITReal-time WebSocket notifications
Lib.Net.Http.WebPushMITWeb Push notifications (VAPID)

Twilio, SendGrid, and Scaleway providers (Granit.Notifications.Twilio, Granit.Notifications.Email.SendGrid, Granit.Notifications.Email.Scaleway) use the vendors’ REST APIs directly via Microsoft.Extensions.Http.Resilience — no vendor SDK is required.

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
MIT58EF Core, Wolverine, ClosedXML, StackExchange.Redis, Microsoft.Extensions.AI
Apache-2.018OpenTelemetry, Serilog, FluentValidation, Magick.NET, Google.Cloud.Storage.V1, AWSSDK.*
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.