Skip to content

ronicarvalho/ArchTech

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArchTech - Building Blocks para .NET

🇧🇷 Português | 🇺🇸 English


Português

📋 Sobre o Projeto

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.

🏗️ Arquitetura

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

🚀 Funcionalidades

ArchTech.WebApi

  • ✅ 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

ArchTech.Interactors

  • ✅ Padrão Use Case com MediatR
  • ✅ Validação com FluentValidation
  • ✅ Output padronizado para respostas
  • ✅ Injeção de dependência automática

ArchTech.Streams

  • ✅ Integração com Apache Kafka
  • ✅ Consumers e Producers configuráveis
  • ✅ Políticas de retry para mensageria

ArchTech.Worker

  • ✅ Configuração para background services
  • ✅ Integração com Serilog
  • ✅ Suporte a hosted services

📦 Instalação

# 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.WebApi

🔧 Como Usar

Configuração de uma WebAPI

using ArchTech.Interactors.Startup;
using ArchTech.WebApi.Startup;

WebApplication
    .CreateBuilder(args)
    .ConfigureSerilog()
    .ConfigureServices()
    .ConfigureOpenApi()
    .ConfigureInteractors()
    .Build()
    .UseDefaults()
    .Run();

Configuração de um Worker

using ArchTech.Interactors.Startup;
using ArchTech.Streams.Startup;
using ArchTech.Worker.Startup;

Host
    .CreateDefaultBuilder(args)
    .ConfigureSerilog()
    .ConfigureInteractors()
    .ConfigureStreams()
    .ConfigureWorkers()
    .Build()
    .Run();

📁 Estrutura do Projeto

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

🛠️ Tecnologias Utilizadas

  • .NET 8
  • MediatR
  • FluentValidation
  • Serilog
  • OpenTelemetry
  • Apache Kafka (Confluent.Kafka)
  • Polly
  • Swagger/OpenAPI

🤝 Contribuindo

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

👥 Autores

  • Roni Carvalho
  • Jaelson Cunha
  • Anderson Spolavori
  • Maicom Kusma

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.


English

📋 About the Project

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.

🏗️ Architecture

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

🚀 Features

ArchTech.WebApi

  • ✅ Automatic Swagger/OpenAPI configuration
  • ✅ API versioning
  • ✅ Exception handling middleware
  • ✅ Serilog integration
  • ✅ OpenTelemetry support
  • ✅ Retry policies with Polly

ArchTech.Interactors

  • ✅ Use Case pattern with MediatR
  • ✅ Validation with FluentValidation
  • ✅ Standardized output for responses
  • ✅ Automatic dependency injection

ArchTech.Streams

  • ✅ Apache Kafka integration
  • ✅ Configurable Consumers and Producers
  • ✅ Retry policies for messaging

ArchTech.Worker

  • ✅ Background services configuration
  • ✅ Serilog integration
  • ✅ Hosted services support

📦 Installation

# 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.WebApi

🔧 How to Use

WebAPI Configuration

using ArchTech.Interactors.Startup;
using ArchTech.WebApi.Startup;

WebApplication
    .CreateBuilder(args)
    .ConfigureSerilog()
    .ConfigureServices()
    .ConfigureOpenApi()
    .ConfigureInteractors()
    .Build()
    .UseDefaults()
    .Run();

Worker Configuration

using ArchTech.Interactors.Startup;
using ArchTech.Streams.Startup;
using ArchTech.Worker.Startup;

Host
    .CreateDefaultBuilder(args)
    .ConfigureSerilog()
    .ConfigureInteractors()
    .ConfigureStreams()
    .ConfigureWorkers()
    .Build()
    .Run();

📁 Project Structure

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

🛠️ Technologies Used

  • .NET 8
  • MediatR
  • FluentValidation
  • Serilog
  • OpenTelemetry
  • Apache Kafka (Confluent.Kafka)
  • Polly
  • Swagger/OpenAPI

🤝 Contributing

  1. Fork the project
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

👥 Authors

  • Roni Carvalho
  • Jaelson Cunha
  • Anderson Spolavori
  • Maicom Kusma

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🎯 Project Status

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.

🆘 Support

As this is a project created with a focus on studies, although applied to real projects, support is limited to opening issues on GitHub.

🗺️ Roadmap

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

About

Building blocks for developing cloud ready APIs using Vertical Slice Architecture

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages