🔧 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 cliente
public class Cliente : ClientGeneratedEntity
{
public string Nome { get; set; } = string.Empty;
}
// Repositório + Unit of Work (implementação EF Core)
public class ClienteService(IRepository<Cliente> repository, IUnitOfWork uow)
{
public async Task CadastrarAsync(string nome, CancellationToken ct)
{
await repository.SaveAsync(new Cliente { Nome = nome }, ct);
await uow.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