Marventa.Framework
3.4.0
See the version list below for details.
dotnet add package Marventa.Framework --version 3.4.0
NuGet\Install-Package Marventa.Framework -Version 3.4.0
<PackageReference Include="Marventa.Framework" Version="3.4.0" />
<PackageVersion Include="Marventa.Framework" Version="3.4.0" />
<PackageReference Include="Marventa.Framework" />
paket add Marventa.Framework --version 3.4.0
#r "nuget: Marventa.Framework, 3.4.0"
#:package Marventa.Framework@3.4.0
#addin nuget:?package=Marventa.Framework&version=3.4.0
#tool nuget:?package=Marventa.Framework&version=3.4.0
Marventa Framework
Enterprise-grade .NET framework with Clean Architecture, CQRS, and 47+ modular features for .NET 8.0/9.0
Quick Start
Installation
dotnet add package Marventa.Framework
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
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());
}
Configuration Features (47 Total)
- Core Infrastructure (Logging, Caching, Repository, Health Checks)
- Security (JWT, API Keys, Encryption, Rate Limiting)
- CQRS + MediatR (Commands, Queries, Behaviors)
- Event-Driven (Messaging, Event Sourcing, Sagas)
- Multi-Tenancy (Tenant Isolation, Context Management)
- API Management (Versioning, Compression, Idempotency)
- Monitoring (Analytics, Observability, Performance Tracking)
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
- No dependencies.
-
net9.0
- No dependencies.
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 | 229 | 10/13/2025 | |
| 5.1.0 | 277 | 10/5/2025 | |
| 5.0.0 | 184 | 10/4/2025 | |
| 4.6.0 | 196 | 10/3/2025 | |
| 4.5.5 | 215 | 10/2/2025 | |
| 4.5.4 | 210 | 10/2/2025 | |
| 4.5.3 | 208 | 10/2/2025 | |
| 4.5.2 | 209 | 10/2/2025 | |
| 4.5.1 | 211 | 10/2/2025 | |
| 4.5.0 | 212 | 10/2/2025 | |
| 4.4.0 | 218 | 10/1/2025 | |
| 4.3.0 | 217 | 10/1/2025 | |
| 4.2.0 | 218 | 10/1/2025 | |
| 4.1.0 | 210 | 10/1/2025 | |
| 4.0.2 | 218 | 10/1/2025 | |
| 4.0.1 | 210 | 10/1/2025 | |
| 4.0.0 | 286 | 9/30/2025 | |
| 3.5.2 | 219 | 9/30/2025 | |
| 3.5.1 | 250 | 9/30/2025 | |
| 3.4.1 | 254 | 9/30/2025 | |
| 3.4.0 | 249 | 9/30/2025 | |
| 3.3.2 | 261 | 9/30/2025 | |
| 3.2.0 | 253 | 9/30/2025 | |
| 3.1.0 | 252 | 9/29/2025 | |
| 3.0.1 | 251 | 9/29/2025 | |
| 3.0.1-preview-20250929165802 | 246 | 9/29/2025 | |
| 3.0.0 | 248 | 9/29/2025 | |
| 3.0.0-preview-20250929164242 | 251 | 9/29/2025 | |
| 3.0.0-preview-20250929162455 | 248 | 9/29/2025 | |
| 2.12.0-preview-20250929161039 | 242 | 9/29/2025 | |
| 2.11.0 | 253 | 9/29/2025 | |
| 2.10.0 | 253 | 9/29/2025 | |
| 2.9.0 | 247 | 9/29/2025 | |
| 2.8.0 | 249 | 9/29/2025 | |
| 2.7.0 | 260 | 9/29/2025 | |
| 2.6.0 | 254 | 9/28/2025 | |
| 2.5.0 | 260 | 9/28/2025 | |
| 2.4.0 | 252 | 9/28/2025 | |
| 2.3.0 | 253 | 9/28/2025 | |
| 2.2.0 | 255 | 9/28/2025 | |
| 2.1.0 | 253 | 9/26/2025 | |
| 2.0.9 | 257 | 9/26/2025 | |
| 2.0.5 | 250 | 9/25/2025 | |
| 2.0.4 | 256 | 9/25/2025 | |
| 2.0.3 | 261 | 9/25/2025 | |
| 2.0.1 | 257 | 9/25/2025 | |
| 2.0.0 | 258 | 9/25/2025 | |
| 1.1.2 | 334 | 9/24/2025 | |
| 1.1.1 | 335 | 9/24/2025 | |
| 1.1.0 | 253 | 9/24/2025 | |
| 1.0.0 | 258 | 9/24/2025 |
v3.4.0: Documentation Excellence - Comprehensive NuGet documentation rewritten. Clean, concise guide without HTML issues. Simplified CI/CD with auto-publish on master push. Icon properly included. Complete warning suppression across all projects. Production-ready with zero warnings.