ArchTech é uma coleção de building blocks para .NET 8 que facilita o desenvolvimento de APIs cloud-ready seguindo os princípios da Vertical Slice Architecture. O projeto fornece blocos modulares e independentes que podem ser combinados para criar aplicações robustas e escaláveis.
O projeto é organizado em blocos independentes, cada um com responsabilidades específicas:
- ArchTech.WebApi: Configurações e middlewares para APIs REST
- ArchTech.Interactors: Implementação de Use Cases com MediatR
- ArchTech.Streams: Integração com Apache Kafka para streaming
- ArchTech.Worker: Configurações para background services
- ArchTech.Custom: Utilitários e extensões compartilhadas
- ✅ Configuração automática do Swagger/OpenAPI
- ✅ Versionamento de API
- ✅ Middleware de tratamento de exceções
- ✅ Integração com Serilog
- ✅ Suporte a OpenTelemetry
- ✅ Políticas de retry com Polly
- ✅ Padrão Use Case com MediatR
- ✅ Validação com FluentValidation
- ✅ Output padronizado para respostas
- ✅ Injeção de dependência automática
- ✅ Integração com Apache Kafka
- ✅ Consumers e Producers configuráveis
- ✅ Políticas de retry para mensageria
- ✅ Configuração para background services
- ✅ Integração com Serilog
- ✅ Suporte a hosted services
# Clone o repositório
git clone https://github.com/ronicarvalho/archtech.git
# Navegue até o diretório
cd archtech
# Restaure as dependências
dotnet restore
# Execute os samples
dotnet run --project samples/ArchTech.Samples.WebApiusing ArchTech.Interactors.Startup;
using ArchTech.WebApi.Startup;
WebApplication
.CreateBuilder(args)
.ConfigureSerilog()
.ConfigureServices()
.ConfigureOpenApi()
.ConfigureInteractors()
.Build()
.UseDefaults()
.Run();using ArchTech.Interactors.Startup;
using ArchTech.Streams.Startup;
using ArchTech.Worker.Startup;
Host
.CreateDefaultBuilder(args)
.ConfigureSerilog()
.ConfigureInteractors()
.ConfigureStreams()
.ConfigureWorkers()
.Build()
.Run();ArchTech/
├── src/ # Código fonte dos building blocks
│ ├── ArchTech.WebApi/ # Configurações para APIs REST
│ ├── ArchTech.Interactors/ # Use Cases e MediatR
│ ├── ArchTech.Streams/ # Integração com Kafka
│ ├── ArchTech.Worker/ # Background services
│ └── ArchTech.Custom/ # Utilitários compartilhados
├── samples/ # Projetos de exemplo
│ ├── ArchTech.Samples.WebApi/ # Exemplo de API REST
│ └── ArchTech.Samples.Worker/ # Exemplo de Worker
└── compose.yaml # Docker Compose para Kafka
- .NET 8
- MediatR
- FluentValidation
- Serilog
- OpenTelemetry
- Apache Kafka (Confluent.Kafka)
- Polly
- Swagger/OpenAPI
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Roni Carvalho
- Jaelson Cunha
- Anderson Spolavori
- Maicom Kusma
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
ArchTech is a collection of building blocks for .NET 8 that facilitates the development of cloud-ready APIs following Vertical Slice Architecture principles. The project provides modular and independent blocks that can be combined to create robust and scalable applications.
The project is organized into independent blocks, each with specific responsibilities:
- ArchTech.WebApi: Configurations and middlewares for REST APIs
- ArchTech.Interactors: Use Cases implementation with MediatR
- ArchTech.Streams: Apache Kafka integration for streaming
- ArchTech.Worker: Background services configurations
- ArchTech.Custom: Shared utilities and extensions
- ✅ Automatic Swagger/OpenAPI configuration
- ✅ API versioning
- ✅ Exception handling middleware
- ✅ Serilog integration
- ✅ OpenTelemetry support
- ✅ Retry policies with Polly
- ✅ Use Case pattern with MediatR
- ✅ Validation with FluentValidation
- ✅ Standardized output for responses
- ✅ Automatic dependency injection
- ✅ Apache Kafka integration
- ✅ Configurable Consumers and Producers
- ✅ Retry policies for messaging
- ✅ Background services configuration
- ✅ Serilog integration
- ✅ Hosted services support
# Clone the repository
git clone https://github.com/ronicarvalho/archtech.git
# Navigate to directory
cd archtech
# Restore dependencies
dotnet restore
# Run samples
dotnet run --project samples/ArchTech.Samples.WebApiusing ArchTech.Interactors.Startup;
using ArchTech.WebApi.Startup;
WebApplication
.CreateBuilder(args)
.ConfigureSerilog()
.ConfigureServices()
.ConfigureOpenApi()
.ConfigureInteractors()
.Build()
.UseDefaults()
.Run();using ArchTech.Interactors.Startup;
using ArchTech.Streams.Startup;
using ArchTech.Worker.Startup;
Host
.CreateDefaultBuilder(args)
.ConfigureSerilog()
.ConfigureInteractors()
.ConfigureStreams()
.ConfigureWorkers()
.Build()
.Run();ArchTech/
├── src/ # Building blocks source code
│ ├── ArchTech.WebApi/ # REST API configurations
│ ├── ArchTech.Interactors/ # Use Cases and MediatR
│ ├── ArchTech.Streams/ # Kafka integration
│ ├── ArchTech.Worker/ # Background services
│ └── ArchTech.Custom/ # Shared utilities
├── samples/ # Example projects
│ ├── ArchTech.Samples.WebApi/ # REST API example
│ └── ArchTech.Samples.Worker/ # Worker example
└── compose.yaml # Docker Compose for Kafka
- .NET 8
- MediatR
- FluentValidation
- Serilog
- OpenTelemetry
- Apache Kafka (Confluent.Kafka)
- Polly
- Swagger/OpenAPI
- Fork the project
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Roni Carvalho
- Jaelson Cunha
- Anderson Spolavori
- Maicom Kusma
This project is licensed under the MIT License - see the LICENSE file for details.
This project is the result of studying and sharing information with friends. Although created with the intention of being a fun time to study, we apply it to real projects efficiently.
As this is a project created with a focus on studies, although applied to real projects, support is limited to opening issues on GitHub.
The project was created for studies, so we have a roadmap but it is not written in stone. Future improvements may include:
- DDD building blocks
- Additional messaging providers
- Enhanced monitoring and observability
- Performance optimizations