Marventa.Framework
3.5.2
See the version list below for details.
dotnet add package Marventa.Framework --version 3.5.2
NuGet\Install-Package Marventa.Framework -Version 3.5.2
<PackageReference Include="Marventa.Framework" Version="3.5.2" />
<PackageVersion Include="Marventa.Framework" Version="3.5.2" />
<PackageReference Include="Marventa.Framework" />
paket add Marventa.Framework --version 3.5.2
#r "nuget: Marventa.Framework, 3.5.2"
#:package Marventa.Framework@3.5.2
#addin nuget:?package=Marventa.Framework&version=3.5.2
#tool nuget:?package=Marventa.Framework&version=3.5.2
Marventa Framework
Enterprise-grade .NET framework with Clean Architecture, CQRS, and 47+ modular features for .NET 8.0/9.0
What's New in v3.5.1
✅ Service Registration Fixes
- Repository<T> pattern now auto-registered (no manual setup!)
- Elasticsearch service auto-registered via
EnableSearchflag - Outbox/Inbox pattern services via
EnableMessagingflag - Projection management via
EnableProjectionsflag
🔧 Dependency Management Fixed All dependencies (Serilog, StackExchange.Redis, etc.) now automatically installed - no manual package installation needed!
📚 Accurate Documentation
- 27 production-ready features verified
- Mock/placeholder implementations clearly marked
- Complete feature status transparency
Quick Start
Installation
dotnet add package Marventa.Framework --version 3.5.1
# All dependencies automatic - no manual Serilog/Redis install needed!
Migrating from v3.4.x?
# 1. Remove manually installed dependencies (if any)
dotnet remove package Serilog
dotnet remove package Serilog.AspNetCore
dotnet remove package StackExchange.Redis
# ... etc
# 2. Update to v3.5.1
dotnet add package Marventa.Framework --version 3.5.1
# 3. Remove manual Repository registration (now automatic)
# Delete: services.AddScoped(typeof(IRepository<>), typeof(BaseRepository<>));
Basic Setup
using Marventa.Framework.Web.Extensions;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMarventaFramework(builder.Configuration, options =>
{
options.EnableCQRS = true;
options.EnableRepository = true;
options.EnableLogging = true;
options.EnableCaching = true;
});
var app = builder.Build();
app.UseMarventaFramework(builder.Configuration);
app.Run();
Core Features
Base Entity Classes
BaseEntity- Audit tracking, soft delete, timestampsAuditableEntity- Version control and concurrencyTenantBaseEntity- Multi-tenant isolation
CQRS with MediatR
- Automatic validation with FluentValidation
- Transaction management
- Logging and performance tracking
- Idempotency support
Repository Pattern
- Generic repository with common operations
- Unit of Work pattern
- Specification pattern support
- Soft delete handling
Pipeline Behaviors
ValidationBehavior- Automatic input validationLoggingBehavior- Performance monitoringTransactionBehavior- Automatic transaction managementIdempotencyBehavior- Duplicate prevention (implemented, manual registration required)
Example: Product CRUD
Entity
public class Product : BaseEntity
{
public string Name { get; set; }
public decimal Price { get; set; }
}
Command
public class CreateProductCommand : ICommand<Guid>
{
public string Name { get; set; }
public decimal Price { get; set; }
}
public class CreateProductCommandValidator : AbstractValidator<CreateProductCommand>
{
public CreateProductCommandValidator()
{
RuleFor(x => x.Name).NotEmpty().MaximumLength(200);
RuleFor(x => x.Price).GreaterThan(0);
}
}
public class CreateProductCommandHandler : IRequestHandler<CreateProductCommand, Guid>
{
private readonly IUnitOfWork _unitOfWork;
public async Task<Guid> Handle(CreateProductCommand request, CancellationToken ct)
{
var product = new Product { Name = request.Name, Price = request.Price };
await _unitOfWork.Repository<Product>().AddAsync(product, ct);
return product.Id;
}
}
Query
public class GetProductByIdQuery : IQuery<ProductDto>
{
public Guid Id { get; set; }
}
public class GetProductByIdQueryHandler : IRequestHandler<GetProductByIdQuery, ProductDto>
{
private readonly IRepository<Product> _repository;
public async Task<ProductDto> Handle(GetProductByIdQuery request, CancellationToken ct)
{
var product = await _repository.GetByIdAsync(request.Id);
return new ProductDto { Id = product.Id, Name = product.Name, Price = product.Price };
}
}
Controller
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private readonly IMediator _mediator;
[HttpGet("{id}")]
public async Task<ActionResult<ProductDto>> Get(Guid id)
=> Ok(await _mediator.Send(new GetProductByIdQuery { Id = id }));
[HttpPost]
public async Task<ActionResult<Guid>> Create(CreateProductCommand command)
=> CreatedAtAction(nameof(Get), new { id = await _mediator.Send(command) }, null);
}
Advanced Features
Multi-Tenancy
public class Customer : TenantBaseEntity
{
public string CompanyName { get; set; }
}
Event Sourcing
public class OrderCreatedEvent : IDomainEvent
{
public Guid OrderId { get; set; }
public decimal Amount { get; set; }
}
Saga Pattern
public class OrderSaga : ISaga<OrderSagaState>
{
public async Task ExecuteAsync(OrderSagaState state, CancellationToken ct)
{
// Distributed transaction logic
}
}
CDN Integration
public class FileService
{
private readonly IMarventaCDN _cdn;
public async Task<string> UploadAsync(Stream file)
=> await _cdn.UploadAsync(file, new CDNUploadOptions());
}
Feature Status (v3.5.1)
✅ Production Ready (27 features)
- BaseDbContext, Repository, Unit of Work, CQRS, Saga, Outbox/Inbox, Projections
- Caching (Memory/Redis), Elasticsearch
- Email, SMS, Storage (Local/Cloud), CDN (Azure/AWS/CloudFlare)
- JWT, Encryption, Multi-tenancy, Health Checks
⚠️ Mock/Development (6 features)
- ML Service, Analytics, Mock CDN/Storage (for testing)
🚧 Roadmap (14 features)
- Event Sourcing (infrastructure ready), Background Jobs, E-commerce features
See full README for detailed feature breakdown and usage examples.
Resources
- Documentation: https://github.com/AdemKinatas/Marventa.Framework#readme
- GitHub: https://github.com/AdemKinatas/Marventa.Framework
- Issues: https://github.com/AdemKinatas/Marventa.Framework/issues
- Email: ademkinatas@gmail.com
License
MIT License - Free for personal and commercial use.
Built with love by Adem Kinatas
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Asp.Versioning.Mvc (>= 8.1.0)
- Asp.Versioning.Mvc.ApiExplorer (>= 8.1.0)
- Azure.Extensions.AspNetCore.Configuration.Secrets (>= 1.4.0)
- Azure.Identity (>= 1.16.0)
- Confluent.Kafka (>= 2.11.1)
- FluentValidation (>= 12.0.0)
- FluentValidation.DependencyInjectionExtensions (>= 12.0.0)
- Hangfire.AspNetCore (>= 1.8.21)
- Hangfire.Core (>= 1.8.21)
- Hangfire.SqlServer (>= 1.8.21)
- Mapster (>= 7.4.0)
- Mapster.DependencyInjection (>= 1.0.1)
- MassTransit (>= 8.5.3)
- MassTransit.RabbitMQ (>= 8.5.3)
- MediatR (>= 13.0.0)
- Microsoft.AspNetCore.Authorization (>= 9.0.9)
- Microsoft.AspNetCore.Http (>= 2.3.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.0)
- Microsoft.AspNetCore.Mvc (>= 2.3.0)
- Microsoft.AspNetCore.Mvc.Abstractions (>= 2.3.0)
- Microsoft.AspNetCore.Mvc.Core (>= 2.3.0)
- Microsoft.Data.SqlClient (>= 6.1.1)
- Microsoft.EntityFrameworkCore (>= 9.0.9)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.9)
- Microsoft.EntityFrameworkCore.SqlServer (>= 9.0.9)
- Microsoft.Extensions.Caching.Memory (>= 9.0.9)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 9.0.9)
- Microsoft.Extensions.Configuration.Abstractions (>= 9.0.9)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.9)
- Microsoft.Extensions.DependencyInjection (>= 9.0.9)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.9)
- Microsoft.Extensions.Logging (>= 9.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.9)
- MongoDB.Driver (>= 3.5.0)
- OpenTelemetry (>= 1.12.0)
- OpenTelemetry.Exporter.OpenTelemetryProtocol (>= 1.12.0)
- OpenTelemetry.Extensions.Hosting (>= 1.12.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.12.0)
- OpenTelemetry.Instrumentation.Http (>= 1.12.0)
- OpenTelemetry.Instrumentation.SqlClient (>= 1.10.0-beta.1)
- Polly (>= 8.6.4)
- RedLock.net (>= 2.3.2)
- Serilog (>= 4.3.0)
- Serilog.AspNetCore (>= 9.0.0)
- Serilog.Enrichers.Environment (>= 3.0.1)
- Serilog.Enrichers.Thread (>= 4.0.0)
- Serilog.Exceptions (>= 8.4.0)
- Serilog.Extensions.Hosting (>= 9.0.0)
- Serilog.Sinks.Console (>= 6.0.0)
- Serilog.Sinks.Elasticsearch (>= 10.0.0)
- Serilog.Sinks.File (>= 7.0.0)
- Serilog.Sinks.Seq (>= 9.0.0)
- StackExchange.Redis (>= 2.9.24)
- System.Diagnostics.DiagnosticSource (>= 9.0.9)
- System.IdentityModel.Tokens.Jwt (>= 8.14.0)
- System.Security.Claims (>= 4.3.0)
-
net9.0
- Asp.Versioning.Mvc (>= 8.1.0)
- Asp.Versioning.Mvc.ApiExplorer (>= 8.1.0)
- Azure.Extensions.AspNetCore.Configuration.Secrets (>= 1.4.0)
- Azure.Identity (>= 1.16.0)
- Confluent.Kafka (>= 2.11.1)
- FluentValidation (>= 12.0.0)
- FluentValidation.DependencyInjectionExtensions (>= 12.0.0)
- Hangfire.AspNetCore (>= 1.8.21)
- Hangfire.Core (>= 1.8.21)
- Hangfire.SqlServer (>= 1.8.21)
- Mapster (>= 7.4.0)
- Mapster.DependencyInjection (>= 1.0.1)
- MassTransit (>= 8.5.3)
- MassTransit.RabbitMQ (>= 8.5.3)
- MediatR (>= 13.0.0)
- Microsoft.AspNetCore.Authorization (>= 9.0.9)
- Microsoft.AspNetCore.Http (>= 2.3.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.0)
- Microsoft.AspNetCore.Mvc (>= 2.3.0)
- Microsoft.AspNetCore.Mvc.Abstractions (>= 2.3.0)
- Microsoft.AspNetCore.Mvc.Core (>= 2.3.0)
- Microsoft.Data.SqlClient (>= 6.1.1)
- Microsoft.EntityFrameworkCore (>= 9.0.9)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.9)
- Microsoft.EntityFrameworkCore.SqlServer (>= 9.0.9)
- Microsoft.Extensions.Caching.Memory (>= 9.0.9)
- Microsoft.Extensions.Caching.StackExchangeRedis (>= 9.0.9)
- Microsoft.Extensions.Configuration.Abstractions (>= 9.0.9)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.9)
- Microsoft.Extensions.DependencyInjection (>= 9.0.9)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.9)
- Microsoft.Extensions.Logging (>= 9.0.9)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.9)
- MongoDB.Driver (>= 3.5.0)
- OpenTelemetry (>= 1.12.0)
- OpenTelemetry.Exporter.OpenTelemetryProtocol (>= 1.12.0)
- OpenTelemetry.Extensions.Hosting (>= 1.12.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.12.0)
- OpenTelemetry.Instrumentation.Http (>= 1.12.0)
- OpenTelemetry.Instrumentation.SqlClient (>= 1.10.0-beta.1)
- Polly (>= 8.6.4)
- RedLock.net (>= 2.3.2)
- Serilog (>= 4.3.0)
- Serilog.AspNetCore (>= 9.0.0)
- Serilog.Enrichers.Environment (>= 3.0.1)
- Serilog.Enrichers.Thread (>= 4.0.0)
- Serilog.Exceptions (>= 8.4.0)
- Serilog.Extensions.Hosting (>= 9.0.0)
- Serilog.Sinks.Console (>= 6.0.0)
- Serilog.Sinks.Elasticsearch (>= 10.0.0)
- Serilog.Sinks.File (>= 7.0.0)
- Serilog.Sinks.Seq (>= 9.0.0)
- StackExchange.Redis (>= 2.9.24)
- System.Diagnostics.DiagnosticSource (>= 9.0.9)
- System.IdentityModel.Tokens.Jwt (>= 8.14.0)
- System.Security.Claims (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 5.2.0 | 239 | 10/13/2025 | |
| 5.1.0 | 279 | 10/5/2025 | |
| 5.0.0 | 186 | 10/4/2025 | |
| 4.6.0 | 198 | 10/3/2025 | |
| 4.5.5 | 218 | 10/2/2025 | |
| 4.5.4 | 212 | 10/2/2025 | |
| 4.5.3 | 211 | 10/2/2025 | |
| 4.5.2 | 213 | 10/2/2025 | |
| 4.5.1 | 214 | 10/2/2025 | |
| 4.5.0 | 216 | 10/2/2025 | |
| 4.4.0 | 220 | 10/1/2025 | |
| 4.3.0 | 219 | 10/1/2025 | |
| 4.2.0 | 220 | 10/1/2025 | |
| 4.1.0 | 213 | 10/1/2025 | |
| 4.0.2 | 220 | 10/1/2025 | |
| 4.0.1 | 212 | 10/1/2025 | |
| 4.0.0 | 288 | 9/30/2025 | |
| 3.5.2 | 221 | 9/30/2025 | |
| 3.5.1 | 252 | 9/30/2025 | |
| 3.4.1 | 257 | 9/30/2025 | |
| 3.4.0 | 251 | 9/30/2025 | |
| 3.3.2 | 264 | 9/30/2025 | |
| 3.2.0 | 255 | 9/30/2025 | |
| 3.1.0 | 254 | 9/29/2025 | |
| 3.0.1 | 254 | 9/29/2025 | |
| 3.0.1-preview-20250929165802 | 248 | 9/29/2025 | |
| 3.0.0 | 250 | 9/29/2025 | |
| 3.0.0-preview-20250929164242 | 253 | 9/29/2025 | |
| 3.0.0-preview-20250929162455 | 250 | 9/29/2025 | |
| 2.12.0-preview-20250929161039 | 245 | 9/29/2025 | |
| 2.11.0 | 255 | 9/29/2025 | |
| 2.10.0 | 256 | 9/29/2025 | |
| 2.9.0 | 249 | 9/29/2025 | |
| 2.8.0 | 252 | 9/29/2025 | |
| 2.7.0 | 262 | 9/29/2025 | |
| 2.6.0 | 256 | 9/28/2025 | |
| 2.5.0 | 263 | 9/28/2025 | |
| 2.4.0 | 254 | 9/28/2025 | |
| 2.3.0 | 255 | 9/28/2025 | |
| 2.2.0 | 257 | 9/28/2025 | |
| 2.1.0 | 255 | 9/26/2025 | |
| 2.0.9 | 259 | 9/26/2025 | |
| 2.0.5 | 252 | 9/25/2025 | |
| 2.0.4 | 260 | 9/25/2025 | |
| 2.0.3 | 263 | 9/25/2025 | |
| 2.0.1 | 261 | 9/25/2025 | |
| 2.0.0 | 260 | 9/25/2025 | |
| 1.1.2 | 337 | 9/24/2025 | |
| 1.1.1 | 338 | 9/24/2025 | |
| 1.1.0 | 258 | 9/24/2025 | |
| 1.0.0 | 261 | 9/24/2025 |
v3.5.2: Critical packaging fix - Single unified package
🔧 PACKAGING FIX:
- Fixed NU1102 errors - all sub-packages now properly embedded
- No more missing package errors (Framework.Web, Framework.Core, etc.)
- All dependencies automatically included (Redis, Serilog, EF Core, etc.)
- Truly single-package deployment - just install Marventa.Framework
✅ WHAT'S INCLUDED (from v3.5.1):
- Repository<T> pattern auto-registered
- Elasticsearch, Outbox/Inbox, Projection services
- All 27 production-ready features
- Complete CQRS, Saga, Event Sourcing support
⚠️ BREAKING: Users must upgrade from 3.5.1 by removing any explicit sub-package references
See README.md for migration guide and complete feature documentation