Skip to content

Latest commit

History

186 Commits

Folders and files

NameName
Last commit message
Last commit date

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 StatusNuGet VersionNuGet DownloadsLicenseIssues


🎯 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

PacoteResponsabilidade
Codout.Framework.DomainEntidades DDD, value objects, identidade client-generated, auditoria.
Codout.Framework.DataAbstrações de IRepository<T> / IUnitOfWork independentes de ORM.
Codout.Framework.CommonExtensões, helpers, validações (CPF/CNPJ, e-mail), criptografia utilitária.

Persistência (escolha uma implementação)

PacoteResponsabilidade
Codout.Framework.EFRepositórios e Unit of Work com Entity Framework Core.
Codout.Framework.MongoRepositórios e Unit of Work para MongoDB.
Codout.Framework.NHRepositórios e Unit of Work com NHibernate/FluentNHibernate.

Camada de API

PacoteResponsabilidade
Codout.Framework.ApiBase de controllers, middleware e configuração ASP.NET Core.
Codout.Framework.Api.DtoDTOs de request/response.
Codout.Framework.Api.ClientCliente HTTP tipado para consumo de APIs.
Codout.Framework.ApplicationServiços de aplicação (CRUD genérico sobre repositórios).
Codout.DynamicLinqConsultas dinâmicas LINQ (filtro/ordenação/paginação/agregação).

Transversais

PacoteResponsabilidade
Codout.MultitenancyResoluçã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.ExtensionsExtração/manipulação de regiões de imagens.
Codout.Framework.McpServidor 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árioPacotes
API REST com EF CoreCodout.Framework.Domain + Codout.Framework.EF + Codout.Framework.Api
Backend com MongoDBCodout.Framework.Domain + Codout.Framework.Mongo
Sistema legado com NHibernateCodout.Framework.Domain + Codout.Framework.NH
SaaS multi-tenantadicione Codout.Multitenancy
Envio de e-mail transacionalCodout.Mailer + um dispatcher (.SendGrid ou .AWS) + Codout.Mailer.Razor para templates
Upload/armazenamento de arquivosCodout.Framework.Storage + Codout.Framework.Storage.Azure
Hash de senhasCodout.Security.Core + um provider (.Argon2, .Bcrypt ou .Scrypt)
Grids com filtro/paginação dinâmicosCodout.DynamicLinq

🏗️ Exemplo de Uso

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


🗺️ 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

Contributing

Stars

5 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages