Clima Alerta - Distributed flood monitoring system

Clima Alerta is a micro service flood monitoring system. The system integrates climate data such as river level and flood history into a modern and resilient platform that allows the the integration of multiple data sources and clients.

The platform already delivers a modern frontend and integration with several platforms. Install and run!

Main features

  • Friendly user interface based on dashboards
  • AccuWather integration
  • Flood, rainfall and river level data with status and historic
  • Getting in touch with email integration
  • Built in client dashboard made with Angular
  • Built in data source for mock data
  • Built in data source for CEOPS integration
  • Plugable clients via REAST APIs
  • Plugable data sources (producers) via AMQP Broker
  • Micro services based system
  • Scalable and resilient services
  • Zero down time update

Frontend

Dashboard

diagram

River level

diagram

Flood history

diagram

Get in touch

diagram

Architecture diagram

diagram

Prerequisites

How to run

REST API (distributed-flood-monitoring-system-api)

  1. Start MongoDB: sudo service mongod start
  2. Build and package project: mvn package
  3. Run: java -Demail=<email server user> -Dpassword=<email server password> -DsendTo=<email recipient for getting in touch> -jar distributed-flood-monitoring-system-api/target/dependency/webapp-runner.jar distributed-flood-monitoring-system-api/target/*.war

Data consumer (distributed-flood-monitoring-system-consumer)

  1. Start MongoDB: sudo service mongod start
  2. Start RabbitMQ: sudo service rabbitmq-server start
  3. Build and package project: mvn package
  4. Run: java -DconsumerType=riverlevel;flood;rainfall -jar distributed-flood-monitoring-system-consumer/target/distributed-flood-monitoring-system-consumer-1.0-jar-with-dependencies.jar

Mock data producer (distributed-flood-monitoring-system-producer)

  1. Start RabbitMQ: sudo service rabbitmq-server start
  2. Build and package project: mvn package
  3. Run: java distributed-flood-monitoring-system-consumer/target/distributed-flood-monitoring-system-producer-1.0-jar-with-dependencies.jar
  4. Fill in the required information.

Data producer via CEOPS integration (distributed-flood-monitoring-system-producer-ceops)

  1. Start RabbitMQ: sudo service rabbitmq-server start
  2. Build and package project: mvn package
  3. Run: java -DfloodHistoryCron="0 * * * * *" -Ddelay=60000 distributed-flood-monitoring-system-consumer/target/distributed-flood-monitoring-system-producer-ceops-1.0-jar-with-dependencies.jar
    1. floodHistoryCron is a cron for get flood history.
    2. delay is the time in milliseconds for get river level.

Dashboard client (frontend)

  1. npm install
  2. npm start

Authors