Thanks to visit codestin.com
Credit goes to github.com

Skip to content

lwih/monitorenv

 
 

Repository files navigation

monitorenv

MonitorEnv est une application développée pour le CACEM afin de centraliser les outils nécessaires à l'exercice de ses missions - la protection de l'environnement marin et le contrôle des activités les plus à risque pour la biodiversité marine -, à savoir:

  • l'appui, l'orientation et la coordination des contrôles sur le terrain
  • le suivi et le rapportage des missions de contrôle
  • l'analyse des données de contrôle, l'aide à la décision et à la définiton des plans de contrôle

MonitorEnv est constituté de deux briques logicielles :

  • une application web (MonitorEnv)
  • un pipeline de traitement de données (datapipeline).

Le code source de monitorenv est fortement inspiré de MonitorFish. Il en reprend l'architecture ainsi que de nombreux composants. Le code initial doit fortement à ce projet ainsi qu'à leurs auteurs: Loup Théron, Vincent Chéry et Adeline Celier.

Stack technique (Composants principaux)

  • Infra:
    • docker
  • Backend:
    • Kotlin
    • Spring
  • PostgreSQL
  • Geoserver
  • Frontend:
    • React (Create React App)
    • OpenLayers
    • Rsuite
  • Datapipeline:
    • python 3.10
    • poetry
    • prefect

Installation de l'environnement de développement

Prérequis

  • npm
  • openjdk (osx: brew install openjdk)
  • postgres (seulement psql est nécessaire. osx: brew install libpq)
  • docker + docker-compose
  • python 3.10 + poetry

Configuration

Créer un fichier ./infra/.env à partir de ./infra/.env.template Modifier éventuellement ./infra/configurations/backend/application-dev.properties

Frontend

make dev-install : installation des dépendances du Frontend make dev-run-front : lance le serveur de développement du frontend Le navigateur s'ouvre par défaut sur l'url http://localhost:3000

Linting

Avant de pousser un commit, vérifier le linting avec npm run test:lint:partial

Variables d'environnement

React CRA permet d'introduire des variables d'environnement au build. Afin de permettre l'utilisation de variables d'environnement au run time de l'application, et d'éviter de compiler l'application frontend pour chaque environnement, les variables sont injectées dans l'application via le fichier public/env.js statique chargé par le client. Ce fichier est mis à jour avec les variables d'environnement via un script env.sh. En développement, les variables d'environnement sont injectées via CRA. Le fichier src/env.js gère l'import des variables pour l'ensemble de l'application, quelque soit l'environnement (développemnet ou production).

Backend

Vérifier la configuration : make dev-check-config Lancer le backend : make dev-run-back-with-infra:

  • supprime éventuellemnt les précédentes instances docker
  • crée une instance docker de la base de donnée + geoserver
  • lance le serveur backend de développement

Le backend est alors accesible sur http://localhost:8880 par défaut. Une interface Swagger est disponible sur l'url : http://localhost:8880/swagger-ui.html

Il peut être utile de charger des données de contexte pour le développement du frontend, et de configurer Geoserver afin qu'il puisse distribuer ces données.

Pour relancer le backend sans recréer les conteneurs de base de données et geoserver, lancer la commande make dev-run-back

make load-sig-data
make init-geoserver

Linting

Commande à lancer pour appliquer le linter (ktlint) sur le backend : ./mvnw antrun:run@ktlint-format

Datapipelines

Installer les dépendances : `make install-pipeline``

Installer les hooks de pre-commit cd datascience && poetry run pre-commit install

Clean Archi

UseCases

  • UseCases are HOF called with references to Repositories for inverted dependency injection
  • UseCases references domain entities
  • UseCases return domain entities

Données

En production, certains jeux de données doivent être chargés manuellement :

  • couches réglementaires : table regulation_cacem
  • couches administratives : cf. migrations V0.001 à V0.033
  • Moyens : table control_resources

About

🛥️🏝️🌊 Suivi et appui au contrôle de l'environnement marin 🛥️🏝️🌊

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 52.1%
  • Kotlin 33.8%
  • Python 8.8%
  • JavaScript 2.3%
  • Shell 1.2%
  • CSS 0.9%
  • Other 0.9%