Skip to content

revue-org/revue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Revue — a distributed real-time system for video surveillance

Introduction

Revue is a distributed real-time system that allows users to monitor an environment through devices capable of capturing environment data (Temperature, Humidity, Pressure) and video streams.

Revue can interact with Web of Things (WoT) devices that adhere to the APIs provided by the system (documented in the docs/api directory). An example of a WoT device that adheres to the Revue APIs is provided in the revue-sample-thing repository.

Technologies Used

Frontend

Vue TypeScript

Backend

Node.js Express Socket.IO JSON Web Token Python

Database

MongoDB

Infrastructure

Docker Apache Kafka Traefik WebRTC Minikube Kubernetes Helm Prometheus Grafana

DevOps

GitHub Actions Gradle Docker Hub Semantic Release Semantic Versioning Conventional Commits Renovate SonarCloud Mergify

Machine Learning

YOLO

Prerequisites

Getting Started

  • Clone the repository including the submodules: git clone --recurse-submodules [email protected]:revue-org/revue.git
  • Modify the .env file to fit your needs, e.g., the ports and the credentials to be used (the default ones should be fine)

N.B. The following commands need to be run in the root directory of the project

Running with Docker Compose

You can start the whole system by running

./deploy.sh --docker

and stop it by running

./undeploy.sh --docker

This running mode includes the deployment of a (WoT) containerised thing. To see more details about it, check the revue-sample-thing repository.

Running with Kubernetes

In a Kubernetes cluster, on your master node, run the following command to deploy the system:

./deploy.sh --k8s

And similarly, to stop the system

./undeploy.sh --k8s

Once the system is up and running, you have to set up your own WoT device (E.g. revue-sample-thing).

Interacting with the system

Web interfaces

On Kubernetes environment

  • Prometheus and Grafana: The interfaces to monitor the system
    • Prometheus Server dashboard: accessible at https://revue-prometheus
    • Grafana dashboard: accessible at https://revue-grafana
      • Credentials:
        • Username: admin
        • Password: Get the password by running kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
      • Accessing to the dashboard clicking on Dashboards (there are some pre-configured dashboards)

Note that kubernetes IPs depend on your cluster's network-specific configuration. Edit configuration files in kubernetes/specifications/metallb/ folder to adhere to your case.

Monitoring with devices (WoT)

Go to the revue-sample-thing repository and follow the instructions in the README to set up your own WoT device. Note that if you are running the system with Docker Compose, a sample containerised device is already deployed. Once the device is up and running, you can add it to the system through the Revue Web Interface.

  • Go to Revue Web Interface and log in
  • Go to the Devices section
  • Click on the Add Device button
  • Fill in the form with the device URI
    • <container-name>:<exposed-port> if revue is running with Docker Compose
      • The already deployed sample device is exposed at revue-thing:6000
    • Test the connection.
    • If the connection is successful, it will automatically retrieve the device's capabilities. Eventually, give a description and click Ok to add the device to the system.
  • Monitor the device data through the various sections depending on the device capabilities.

Authors