Marventa.Framework
3.5.1
See the version list below for details.
dotnet add package Marventa.Framework --version 3.5.1
NuGet\Install-Package Marventa.Framework -Version 3.5.1
<PackageReference Include="Marventa.Framework" Version="3.5.1" />
<PackageVersion Include="Marventa.Framework" Version="3.5.1" />
<PackageReference Include="Marventa.Framework" />
paket add Marventa.Framework --version 3.5.1
#r "nuget: Marventa.Framework, 3.5.1"
#:package Marventa.Framework@3.5.1
#addin nuget:?package=Marventa.Framework&version=3.5.1
#tool nuget:?package=Marventa.Framework&version=3.5.1
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
- Marventa.Framework.Application (>= 2.9.0)
- Marventa.Framework.Core (>= 3.1.0)
- Marventa.Framework.Domain (>= 2.8.0)
- Marventa.Framework.Infrastructure (>= 2.8.0)
- Marventa.Framework.Web (>= 3.3.0)
-
net9.0
- Marventa.Framework.Application (>= 2.9.0)
- Marventa.Framework.Core (>= 3.1.0)
- Marventa.Framework.Domain (>= 2.8.0)
- Marventa.Framework.Infrastructure (>= 2.8.0)
- Marventa.Framework.Web (>= 3.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 | 242 | 10/13/2025 | |
| 5.1.0 | 282 | 10/5/2025 | |
| 5.0.0 | 188 | 10/4/2025 | |
| 4.6.0 | 201 | 10/3/2025 | |
| 4.5.5 | 221 | 10/2/2025 | |
| 4.5.4 | 215 | 10/2/2025 | |
| 4.5.3 | 213 | 10/2/2025 | |
| 4.5.2 | 215 | 10/2/2025 | |
| 4.5.1 | 216 | 10/2/2025 | |
| 4.5.0 | 218 | 10/2/2025 | |
| 4.4.0 | 222 | 10/1/2025 | |
| 4.3.0 | 221 | 10/1/2025 | |
| 4.2.0 | 221 | 10/1/2025 | |
| 4.1.0 | 216 | 10/1/2025 | |
| 4.0.2 | 222 | 10/1/2025 | |
| 4.0.1 | 215 | 10/1/2025 | |
| 4.0.0 | 289 | 9/30/2025 | |
| 3.5.2 | 222 | 9/30/2025 | |
| 3.5.1 | 253 | 9/30/2025 | |
| 3.4.1 | 258 | 9/30/2025 | |
| 3.4.0 | 253 | 9/30/2025 | |
| 3.3.2 | 265 | 9/30/2025 | |
| 3.2.0 | 256 | 9/30/2025 | |
| 3.1.0 | 255 | 9/29/2025 | |
| 3.0.1 | 255 | 9/29/2025 | |
| 3.0.1-preview-20250929165802 | 249 | 9/29/2025 | |
| 3.0.0 | 251 | 9/29/2025 | |
| 3.0.0-preview-20250929164242 | 255 | 9/29/2025 | |
| 3.0.0-preview-20250929162455 | 251 | 9/29/2025 | |
| 2.12.0-preview-20250929161039 | 246 | 9/29/2025 | |
| 2.11.0 | 256 | 9/29/2025 | |
| 2.10.0 | 258 | 9/29/2025 | |
| 2.9.0 | 250 | 9/29/2025 | |
| 2.8.0 | 253 | 9/29/2025 | |
| 2.7.0 | 263 | 9/29/2025 | |
| 2.6.0 | 257 | 9/28/2025 | |
| 2.5.0 | 264 | 9/28/2025 | |
| 2.4.0 | 255 | 9/28/2025 | |
| 2.3.0 | 256 | 9/28/2025 | |
| 2.2.0 | 258 | 9/28/2025 | |
| 2.1.0 | 256 | 9/26/2025 | |
| 2.0.9 | 260 | 9/26/2025 | |
| 2.0.5 | 253 | 9/25/2025 | |
| 2.0.4 | 261 | 9/25/2025 | |
| 2.0.3 | 264 | 9/25/2025 | |
| 2.0.1 | 262 | 9/25/2025 | |
| 2.0.0 | 261 | 9/25/2025 | |
| 1.1.2 | 338 | 9/24/2025 | |
| 1.1.1 | 339 | 9/24/2025 | |
| 1.1.0 | 259 | 9/24/2025 | |
| 1.0.0 | 262 | 9/24/2025 |
v3.5.1: Service registration fixes + accurate documentation
✅ NEW SERVICE REGISTRATIONS:
- Repository<T> pattern now auto-registered (no manual setup needed)
- Elasticsearch service registration (EnableSearch flag)
- Outbox/Inbox pattern services (EnableMessaging flag)
- Projection management services (EnableProjections flag)
- All advertised features now properly wired up
🎯 CODE QUALITY (from v3.5.0):
- Split MarventaExtensions (824→77 lines) into 8 focused files
- Refactored ~3,000 lines following Single Responsibility Principle
- Removed 8 unused/redundant files
🔧 DEPENDENCY FIX (from v3.5.0):
- Dependencies properly exported (no manual Serilog/Redis install needed)
📚 DOCUMENTATION:
- Comprehensive feature audit completed
- 27 production-ready features verified
- Mock implementations clearly marked
- Roadmap features documented
⚠️ See README.md for complete feature status and implementation details