A AgroSolutions é uma cooperativa agrícola tradicional que busca se modernizar para enfrentar os desafios do século XXI: otimização de recursos hídricos, aumento da produtividade e sustentabilidade. Este sistema de alertas permite o monitoramento em tempo real dos talhões agrícolas, enviando notificações críticas para tomada de decisão rápida. A aplicação conta com arquitetura Domain-Driven Design (DDD), ASP.NET Core 8, autenticação via JWT, banco de dados MongoDB, mensageria RabbitMQ e integração com New Relic para monitoramento, além de contar com boas práticas de arquitetura, segurança e escalabilidade com Kubernetes.
Note
Este projeto visa oferecer uma aplicação robusta, escalável e segura. O desenvolvimento deste projeto é baseado exclusivamente nas suas necessidades guiadas pelo curso de pós graduação Fiap.
Table of contents
Comece clonando o repositório hackathon-alerts, executando o comando:
git clone https://github.com/andersonsrocha/hackathon-alerts.gitAgora acesse o projeto usando:
cd hackathon-alertsCertifique-se de que o MongoDB e RabbitMQ estão rodando localmente. Em seguida, atualize as strings de conexão no appsettings.json e realize a restauração dos pacotes:
dotnet restoreAinda dentro da pasta raiz, execute o comando abaixo para iniciar a aplicação:
dotnet run --project src/HackathonAlerts.ApiE por fim poderá acessar a aplicação através do link Documentação.
Para utilizar o sistema de alertas, certifique-se de que os seguintes serviços estão rodando:
- MongoDB:
mongodb://localhost:27017 - RabbitMQ:
localhostcom usuárioadmine senhaadmin123
O sistema requer autenticação JWT. Configure as credenciais apropriadas através do endpoint de autenticação.
Agora para construirmos a aplicação, basta executar o comando abaixo no diretório raiz do projeto:
dotnet buildE por fim, para publicar a aplicação:
Tip
É possível trocar a pasta de destino substituindo ./publish pelo diretório desejado.
dotnet publish -c Release -o ./publish-
Sistema de alertas em tempo real. -
Monitoramento de talhões agrícolas. -
Banco de dados MongoDB. -
Autenticação JWT. -
Mensageria com RabbitMQ. -
Integração com New Relic. -
Testes unitários.-
Criação de alertas. -
Atualização de alertas. -
Validações de domínio. -
Handlers de aplicação.
-
-
Criação de arquivo Dockerfile. -
Domain-Driven Design. -
API RESTful com documentação Scalar. -
Middleware de tratamento de exceções. -
Logging estruturado com Serilog. -
Correlação de IDs para rastreabilidade. -
Padrão CQRS com MediatR. -
Deploy com Kubernetes.
- 🎨 .NET 8 SDK: Framework moderno e multiplataforma da Microsoft que oferece alta performance, suporte nativo para contêineres, APIs mínimas e recursos avançados de desenvolvimento. Inclui melhorias significativas em performance, garbage collection otimizado e suporte completo para desenvolvimento de aplicações web robustas e escaláveis.
- 🗄️ MongoDB: Banco de dados NoSQL orientado a documentos, ideal para dados dinâmicos e escalabilidade horizontal. Oferece flexibilidade no esquema, alta performance para operações de leitura/escrita e suporte nativo para JSON, perfect para armazenar dados de alertas variáveis.
- 🐰 RabbitMQ: Message broker robusto para processamento assíncrono de alertas, garantindo entrega confiável e processamento em fila para alta disponibilidade do sistema.
- 📊 New Relic: Plataforma de monitoramento e observabilidade que coleta métricas, logs e traces da aplicação, permitindo insights em tempo real sobre performance e saúde do sistema de alertas.
- 🧪 xUnit: Framework de testes unitários para .NET que fornece uma base sólida para testes automatizados, com suporte para testes parametrizados, fixtures e execução paralela.
- 🐳 Docker: Containerização da aplicação para garantir consistência entre ambientes de desenvolvimento, teste e produção, facilitando deploy e escalabilidade.
- 🔐 JWT Authentication: Sistema de autenticação baseado em tokens seguros e stateless, permitindo autorização distribuída e controle de acesso granular.
- 🏗️ Domain-Driven Design (DDD): Arquitetura que foca no domínio do negócio, promovendo código mais organizando, manutenível e alinhado com as regras de negócio.
Copyright © 2026.