headless-framework is a modern, open-source headless framework for .NET developers who want full control with zero constraints.
- Unopinionated Design — Use your own patterns and architectures; the framework stays out of your way.
- Supports Most Flows — Built to integrate seamlessly with real-world use cases: CRUD, CQRS, messaging, file uploads, and more.
- Composable & Modular — Pick only what you need. Each piece is a standalone NuGet package.
- Zero Lock-in — Use with any storage, any frontend, any transport (REST, gRPC, GraphQL, etc.).
- Developer-Centric — Designed with clean architecture support, vertical slice support, CQRS, extensibility, and performance in mind.
- No Magic, Just Code — Everything is explicit. No hidden conventions or forced scaffolding.
- Prefer flexibility to convention
- Want to bootstrap quickly but scale cleanly
- Care about performance, testability, and maintainability
All packages are available on NuGet. Install only what you need:
dotnet add package Headless.Api
dotnet add package Headless.Orm.EntityFramework
dotnet add package Headless.Caching.Redis
# ... and many more| Package | Description |
|---|---|
| Headless.Api | ASP.NET Core API utilities and conventions |
| Headless.Api.Abstractions | API abstractions and contracts |
| Headless.Api.DataProtection | Data protection key storage |
| Headless.Api.FluentValidation | FluentValidation integration for APIs |
| Headless.Api.Logging.Serilog | Serilog logging integration |
| Headless.Api.MinimalApi | Minimal API utilities |
| Headless.Api.Mvc | MVC-specific utilities |
| Package | Description |
|---|---|
| Headless.Base | Core primitives and utilities |
| Headless.BuildingBlocks | Domain-Driven Design building blocks |
| Headless.Checks | Guard clauses and argument validation |
| Headless.Domain | Domain entities and events |
| Headless.Specifications | Specification pattern implementation |
| Package | Description |
|---|---|
| Headless.Blobs.Abstractions | Blob storage interfaces |
| Headless.Blobs.Aws | AWS S3 blob storage |
| Headless.Blobs.Azure | Azure Blob storage |
| Headless.Blobs.FileSystem | Local filesystem storage |
| Headless.Blobs.Redis | Redis blob storage |
| Headless.Blobs.SshNet | SFTP blob storage |
| Package | Description |
|---|---|
| Headless.Caching.Abstractions | Caching interfaces |
| Headless.Caching.Foundatio.Memory | In-memory caching |
| Headless.Caching.Foundatio.Redis | Redis caching |
| Package | Description |
|---|---|
| Headless.Emails.Abstractions | Email sending interfaces |
| Headless.Emails.Core | Core email implementation |
| Headless.Emails.Aws | AWS SES email provider |
| Headless.Emails.Dev | Development email provider |
| Headless.Emails.Mailkit | MailKit SMTP provider |
| Package | Description |
|---|---|
| Headless.Features.Abstractions | Feature flag interfaces |
| Headless.Features.Core | Feature management implementation |
| Headless.Features.Storage.EntityFramework | EF Core feature storage |
| Package | Description |
|---|---|
| Headless.Identity.Storage.EntityFramework | EF Core identity storage |
| Package | Description |
|---|---|
| Headless.Imaging.Abstractions | Image processing interfaces |
| Headless.Imaging.Core | Core image processing |
| Headless.Imaging.ImageSharp | ImageSharp implementation |
| Package | Description |
|---|---|
| Headless.Logging.Serilog | Serilog logging utilities |
| Package | Description |
|---|---|
| Headless.Media.Indexing.Abstractions | Media indexing interfaces |
| Headless.Media.Indexing | Media indexing implementation |
| Package | Description |
|---|---|
| Headless.Domain.LocalPublisher | In-process messaging |
| Package | Description |
|---|---|
| Headless.OpenApi.Nswag | NSwag OpenAPI generation |
| Headless.OpenApi.Nswag.OData | NSwag OData support |
| Headless.OpenApi.Scalar | Scalar API documentation |
| Package | Description |
|---|---|
| Headless.Orm.EntityFramework | Entity Framework Core utilities |
| Headless.Orm.Couchbase | Couchbase ORM utilities |
| Package | Description |
|---|---|
| Headless.Payments.Paymob.CashIn | Paymob cash-in payments |
| Headless.Payments.Paymob.CashOut | Paymob cash-out payments |
| Headless.Payments.Paymob.Services | Paymob shared services |
| Package | Description |
|---|---|
| Headless.Permissions.Abstractions | Permission system interfaces |
| Headless.Permissions.Core | Permission system implementation |
| Headless.Permissions.Storage.EntityFramework | EF Core permission storage |
| Package | Description |
|---|---|
| Headless.PushNotifications.Abstractions | Push notification interfaces |
| Headless.PushNotifications.Dev | Development push provider |
| Headless.PushNotifications.Firebase | Firebase Cloud Messaging |
| Package | Description |
|---|---|
| Headless.DistributedLocks.Abstractions | Distributed locking interfaces |
| Headless.DistributedLocks.Core | Distributed locking implementation |
| Headless.DistributedLocks.Cache | Cache-based locking |
| Headless.DistributedLocks.Redis | Redis-based locking |
| Package | Description |
|---|---|
| Headless.Serializer.Abstractions | Serialization interfaces |
| Headless.Serializer.Json | System.Text.Json serializer |
| Headless.Serializer.MessagePack | MessagePack serializer |
| Package | Description |
|---|---|
| Headless.Settings.Abstractions | Dynamic settings interfaces |
| Headless.Settings.Core | Settings management implementation |
| Headless.Settings.Storage.EntityFramework | EF Core settings storage |
| Package | Description |
|---|---|
| Headless.Sms.Abstractions | SMS sending interfaces |
| Headless.Sms.Aws | AWS SNS SMS provider |
| Headless.Sms.Cequens | Cequens SMS provider |
| Headless.Sms.Connekio | Connekio SMS provider |
| Headless.Sms.Dev | Development SMS provider |
| Headless.Sms.Infobip | Infobip SMS provider |
| Headless.Sms.Twilio | Twilio SMS provider |
| Headless.Sms.VictoryLink | VictoryLink SMS provider |
| Headless.Sms.Vodafone | Vodafone SMS provider |
| Package | Description |
|---|---|
| Headless.Sql.Abstractions | SQL connection interfaces |
| Headless.Sql.PostgreSql | PostgreSQL connection factory |
| Headless.Sql.SqlServer | SQL Server connection factory |
| Headless.Sql.Sqlite | SQLite connection factory |
| Package | Description |
|---|---|
| Headless.Testing | Testing utilities and base classes |
| Headless.Testing.Testcontainers | Testcontainers fixtures |
| Package | Description |
|---|---|
| Headless.Tus | TUS protocol utilities |
| Headless.Tus.Azure | Azure Blob TUS store |
| Headless.Tus.DistributedLock | TUS file locking |
| Package | Description |
|---|---|
| Headless.FluentValidation | FluentValidation extensions |
| Headless.Generator.Primitives | Primitive types source generator |
| Headless.Generator.Primitives.Abstractions | Generator abstractions |
| Headless.Hosting | .NET hosting utilities |
| Headless.NetTopologySuite | Geospatial utilities |
| Headless.Recaptcha | Google reCAPTCHA integration |
| Headless.Redis | Redis utilities |
| Headless.Sitemaps | XML sitemap generation |
| Headless.Slugs | URL slug generation |
var builder = WebApplication.CreateBuilder(args); // Add API infrastructure builder.Services.AddHeadlessApi(); // Add caching builder.Services.AddHeadlessRedisCache(options => { options.ConnectionString = "localhost:6379"; }); // Add blob storage builder.Services.AddAzureBlobStorage(options => { options.ConnectionString = "your-connection-string"; options.ContainerName = "uploads"; }); // Add email builder.Services.AddAwsSesEmail(options => { options.FromEmail = "noreply@example.com"; }); var app = builder.Build(); app.UseHeadlessApi(); app.Run();
Each feature follows the abstraction + provider pattern:
Headless.*.Abstractions— Interfaces and contractsHeadless.*.<Provider>— Concrete implementation
This enables easy swapping of implementations and testing with mocks.
Feel free to submit issues, feature requests, or PRs. Let's build the ultimate headless .NET foundation together!