Skip to content

andersonsrocha/hackathon-alerts

Repository files navigation



🚨
Hackathon Alerts


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.

.NET Core MongoDB RabbitMQ New Relic xUnit Docker JWT DDD

Table of contents

TOC

📦 Começando

Comece clonando o repositório hackathon-alerts, executando o comando:

git clone https://github.com/andersonsrocha/hackathon-alerts.git

Agora acesse o projeto usando:

cd hackathon-alerts

Certifique-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 restore

Ainda dentro da pasta raiz, execute o comando abaixo para iniciar a aplicação:

dotnet run --project src/HackathonAlerts.Api

E por fim poderá acessar a aplicação através do link Documentação.


🖱️ Configuração inicial

Para utilizar o sistema de alertas, certifique-se de que os seguintes serviços estão rodando:

  • MongoDB: mongodb://localhost:27017
  • RabbitMQ: localhost com usuário admin e senha admin123

O sistema requer autenticação JWT. Configure as credenciais apropriadas através do endpoint de autenticação.

🚧 Contruindo e publicando a aplicação

Agora para construirmos a aplicação, basta executar o comando abaixo no diretório raiz do projeto:

dotnet build

E 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

✨ Características

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

🚀 Recursos

  • 🎨 .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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors