🔧 Framework Clean Architecture modular e escalável para .NET
🚀 Acelere entregas de projetos com as melhores práticas e uma base pronta para produção
O Codout.Framework é um conjunto de pacotes NuGet para aplicações .NET em Clean Architecture, projetado para fornecer:
- Modularidade: instale apenas os pacotes que você precisa (EF Core, MongoDB, NHibernate, Multi-Tenancy, Storage, Mailer, Security, etc.).
- Escalabilidade: abstrações de repositório/Unit of Work independentes de ORM.
- Manutenibilidade: separação de responsabilidades e padrões consolidados (DDD, Repository, UoW).
Use-o como base para APIs RESTful, microsserviços e backends corporativos.
| Pacote | Responsabilidade |
|---|---|
Codout.Framework.Domain | Entidades DDD, value objects, identidade client-generated, auditoria. |
Codout.Framework.Data | Abstrações de IRepository<T> / IUnitOfWork independentes de ORM. |
Codout.Framework.Common | Extensões, helpers, validações (CPF/CNPJ, e-mail), criptografia utilitária. |
| Pacote | Responsabilidade |
|---|---|
Codout.Framework.EF | Repositórios e Unit of Work com Entity Framework Core. |
Codout.Framework.Mongo | Repositórios e Unit of Work para MongoDB. |
Codout.Framework.NH | Repositórios e Unit of Work com NHibernate/FluentNHibernate. |
| Pacote | Responsabilidade |
|---|---|
Codout.Framework.Api | Base de controllers, middleware e configuração ASP.NET Core. |
Codout.Framework.Api.Dto | DTOs de request/response. |
Codout.Framework.Api.Client | Cliente HTTP tipado para consumo de APIs. |
Codout.Framework.Application | Serviços de aplicação (CRUD genérico sobre repositórios). |
Codout.DynamicLinq | Consultas dinâmicas LINQ (filtro/ordenação/paginação/agregação). |
| Pacote | Responsabilidade |
|---|---|
Codout.Multitenancy | Resolução de tenant por request, cache e pipeline per-tenant. (Softprime.Multitenancy é o build netstandard2.0 de compatibilidade.) |
Codout.Mailer (+ .AWS, .SendGrid, .Razor) | Abstração de envio de e-mail, dispatchers SES/SendGrid e templates Razor. |
Codout.Framework.Storage (+ .Azure) | Abstração de storage de arquivos e implementação Azure Blob. |
Codout.Security.Core (+ .Argon2, .Bcrypt, .Scrypt) | Hash de senhas com upgrade incremental de algoritmo/parâmetros. |
Codout.Image.Extensions | Extração/manipulação de regiões de imagens. |
Codout.Framework.Mcp | Servidor MCP com o conhecimento do framework para agentes de IA. |
- .NET SDK 10.x
- IDE de sua preferência (Visual Studio, VS Code, Rider)
git clone https://github.com/Codout/Codout.Framework.git
cd Codout.Framework
dotnet build Codout.Framework.sln --configuration Release
dotnet test Codout.Framework.sln --configuration ReleaseOs projetos de teste vivem em tests/ e rodam na solution.
dotnet add package Codout.Framework.Domain
dotnet add package Codout.Framework.EF # ou .Mongo / .NH| Cenário | Pacotes |
|---|---|
| API REST com EF Core | Codout.Framework.Domain + Codout.Framework.EF + Codout.Framework.Api |
| Backend com MongoDB | Codout.Framework.Domain + Codout.Framework.Mongo |
| Sistema legado com NHibernate | Codout.Framework.Domain + Codout.Framework.NH |
| SaaS multi-tenant | adicione Codout.Multitenancy |
| Envio de e-mail transacional | Codout.Mailer + um dispatcher (.SendGrid ou .AWS) + Codout.Mailer.Razor para templates |
| Upload/armazenamento de arquivos | Codout.Framework.Storage + Codout.Framework.Storage.Azure |
| Hash de senhas | Codout.Security.Core + um provider (.Argon2, .Bcrypt ou .Scrypt) |
| Grids com filtro/paginação dinâmicos | Codout.DynamicLinq |
// Entidade de domínio com Id gerado no clientepublicclassCliente:ClientGeneratedEntity{publicstringNome{get;set;}=string.Empty;}// Repositório + Unit of Work (implementação EF Core)publicclassClienteService(IRepository<Cliente>repository,IUnitOfWorkuow){publicasyncTaskCadastrarAsync(stringnome,CancellationTokenct){awaitrepository.SaveAsync(newCliente{Nome=nome},ct);awaituow.CommitAsync(ct);}}Cada pacote tem um README próprio com exemplos específicos — veja a página do pacote no NuGet.org ou a pasta correspondente neste repositório.
O plano de evolução de qualidade do repositório está em ROADMAP.md.
- Faça um fork deste repositório
- Crie uma branch:
git checkout -b feature/nova-funcionalidade - Implemente e escreva testes
- Abra um Pull Request detalhando sua proposta
Leia o CONTRIBUTING.md para mais detalhes.
Este projeto está licenciado sob a MIT License.
Desenvolvido com ❤️ por Codout
