Pular para o conteúdo principal
Versão: 10.4.1

Visão geral

ITLab.Template.DevPack é o pacote NuGet opinionado de infraestrutura para projetos .NET 10 da ITLab. Provê primitivos de DDD/CQRS, behaviors de pipeline Mediator (martinothamar), interceptors EF Core, sistema de autorização policy-based, contratos de identity e utilitários transversais.

O princípio raiz é no framework wrappers (ADR-001): o DevPack expõe contratos pequenos e composição via DI — consumidores usam Mediator, EF Core, Serilog e ASP.NET Core diretamente, nunca através de invólucros.

Pilares

PilarFeatureEm uma linha
Result patternCoreResult<T> + Error railway-oriented; nunca exceptions para falha esperada
CQRSCqrsICommand<T> / IQuery<T> sobre Mediator source-generated; handlers retornam ValueTask
PipelineBehaviorslogging + validação FluentValidation via AddDevPackBehaviors()
AutorizaçãoAuthorizationpermissões declarativas ([RequiresPermission], policies) com evaluator plugável
DomínioDomainEntity, AuditedEntity (+ AuditTimestamp UTC+timezone), soft-delete, DomainEvent
EF CoreInfrastructure.EfCoreinterceptors de audit, soft-delete e dispatch de domain events
IdentityIdentityICurrentUser, dual-scheme, signing key, token service
TestingDevPack.TestingWebApplicationFactoryBase<,> com auth fake e InMemory swap

A lista completa está em Features (namespaces) — uma página por namespace público, com tabela de componentes, exemplos de uso, anti-padrões e pontos de extensão.

Documentação version-pinned

Use o dropdown de versões na navbar para ler a documentação da release que seu projeto consome. A documentação também ship dentro do próprio nupkg:

{NuGetPackageRoot}/itlab.template.devpack/{version}/devpack-docs/

Para histórico e guias de migração entre releases, ver o Changelog. O índice LLM-readable (llms.txt) é servido na raiz deste site.

O que NÃO fazer (top 3)

  • Não declarar ICommand<Result<T>> — o wrapping de Result<> é automático pela assinatura do handler.
  • Não declarar record : PaginatedQueryBase<T> — a base é classe abstrata; use class.
  • Não chamar services.AddMediator(...) sem ServiceLifetime.Scoped quando handlers consomem IAppDbContext.

Cada página de feature documenta seus próprios anti-padrões na seção "O que não fazer".