A lightweight, modular toolkit for rapidly building production-ready .NET (Core) microservices.
Read the full docs at mehyaa.github.io/Convey or watch a short demo on YouTube.
You can also find detailed documentation in the docs/ directory.
Convey provides building blocks so you can focus on your domain instead of wiring infrastructure:
- Authentication: JWT with secret key & certificate support (+ mTLS helpers)
- CQRS: Simple abstractions for commands, queries & events
- Service Discovery: Consul integration
- API Documentation: Swagger / OpenAPI extensions
- HTTP Clients: RestEase integration
- Load Balancing: Fabio support
- Logging: Extensions for Serilog + sinks (Seq / ELK / Loki)
- Messaging: Broker abstractions, CQRS over messages & RabbitMQ integration
- Reliability: Inbox + Outbox pattern (EF Core / MongoDB implementations)
- Metrics: AppMetrics & Prometheus integration
- Persistence: Extensions for MongoDB, Redis, OpenStack OCS
- Secrets: Vault (KV, dynamic credentials, PKI, etc.)
- Security: Certificates, mTLS helpers, encryption utilities
- Tracing: Jaeger (incl. RabbitMQ propagation)
- Web API: Minimal routing-based API, CQRS endpoint helpers
- Convey - Core framework and dependency injection container
- Convey.WebApi - Web API extensions and minimal routing
- Convey.WebApi.CQRS - CQRS integration for Web API
- Convey.Auth - JWT authentication with secret keys and certificates
- Convey.Auth.Distributed - Distributed authentication patterns
- Convey.Security - Security extensions, certificates, mTLS, encryption
- Convey.WebApi.Security - Web API security extensions
- Convey.CQRS.Commands - Command handling abstractions
- Convey.CQRS.Events - Event handling abstractions
- Convey.CQRS.Queries - Query handling abstractions
- Convey.MessageBrokers - Message broker abstractions
- Convey.MessageBrokers.CQRS - CQRS support for message brokers
- Convey.MessageBrokers.RabbitMQ - RabbitMQ integration
- Convey.MessageBrokers.Outbox - Outbox pattern implementation
- Convey.MessageBrokers.Outbox.EntityFramework - EF Core outbox implementation
- Convey.MessageBrokers.Outbox.Mongo - MongoDB outbox implementation
- Convey.Persistence.MongoDB - MongoDB extensions and patterns
- Convey.Persistence.Redis - Redis extensions and caching
- Convey.Persistence.OpenStack.OCS - OpenStack OCS support
- Convey.Discovery.Consul - Consul service registry integration
- Convey.LoadBalancing.Fabio - Fabio load balancer integration
- Convey.HTTP - HTTP client extensions
- Convey.HTTP.RestEase - RestEase integration for typed HTTP clients
- Convey.Docs.Swagger - Swagger/OpenAPI documentation
- Convey.WebApi.Swagger - Swagger integration for Web API
- Convey.Logging - Logging extensions with Serilog integration
- Convey.Logging.CQRS - CQRS logging integration
- Convey.Metrics.AppMetrics - AppMetrics integration
- Convey.Metrics.Prometheus - Prometheus metrics integration
- Convey.Tracing.Jaeger - Jaeger distributed tracing
- Convey.Tracing.Jaeger.RabbitMQ - Jaeger tracing for RabbitMQ
- Convey.Secrets.Vault - HashiCorp Vault integration for secrets management
dotnet new webapi -n SampleService
cd SampleService
dotnet add package Convey
dotnet add package Convey.WebApi
dotnet add package Convey.CQRS.Commands
dotnet add package Convey.MessageBrokers.RabbitMQvar builder = WebApplication.CreateBuilder(args);
builder.Services.AddConvey()
.AddWebApi()
.AddCommandHandlers()
.AddInMemoryCommandDispatcher()
.AddRabbitMq();
var app = builder.Build();
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.Get("/", ctx => ctx.Response.WriteAsync("OK")));
app.Run();More examples are available under the samples/ directory and the docs site Getting Started guide.
Explore the samples/ directory for full services demonstrating composition patterns:
Conveyor.Services.Orders– Order managementConveyor.Services.Deliveries– Delivery trackingConveyor.Services.Pricing– Pricing calculations
Issues & PRs are welcome. Please follow conventional commit style and keep changes focused.
MIT License - see the LICENSE file for details.
Created by devmentors.io. Maintained by mehyaa.