Skip to content

Codout/Codout.Framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

186 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codout.Framework Logo

Codout.Framework

🔧 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

Build Status NuGet Version NuGet Downloads License Issues


🎯 Visão Geral

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.


📦 Pacotes

Núcleo

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.

Persistência (escolha uma implementação)

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.

Camada de API

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).

Transversais

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.

🚀 Começando Rápido

Pré-requisitos

  • .NET SDK 10.x
  • IDE de sua preferência (Visual Studio, VS Code, Rider)

Build e testes do repositório

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 Release

Os projetos de teste vivem em tests/ e rodam na solution.

Instalação via NuGet

dotnet add package Codout.Framework.Domain
dotnet add package Codout.Framework.EF   # ou .Mongo / .NH

🧭 Qual pacote eu instalo?

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

🏗️ Exemplo de Uso

// 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.


🗺️ Roadmap

O plano de evolução de qualidade do repositório está em ROADMAP.md.


🤝 Contribuindo

  1. Faça um fork deste repositório
  2. Crie uma branch: git checkout -b feature/nova-funcionalidade
  3. Implemente e escreva testes
  4. Abra um Pull Request detalhando sua proposta

Leia o CONTRIBUTING.md para mais detalhes.


📜 Licença

Este projeto está licenciado sob a MIT License.


Desenvolvido com ❤️ por Codout

About

Modelo de arquitetura para desenvolvimento de sistemas em .net

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages