plant-faidare

FAIDARE (FAIR Data-finder for Agronomic REsearch) is a plant scientific data portal. This is a mirror of the main repository (https://forgemia.inra.fr/urgi-is/faidare) that embed the continuous integration environment. Issues should preferably be created in Gitlab. It relies on https://github.com/elixir-europe/plant-brapi-etl-faidare for harvesting the metadata.

https://github.com/elixir-europe/plant-faidare

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.8%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

FAIDARE (FAIR Data-finder for Agronomic REsearch) is a plant scientific data portal. This is a mirror of the main repository (https://forgemia.inra.fr/urgi-is/faidare) that embed the continuous integration environment. Issues should preferably be created in Gitlab. It relies on https://github.com/elixir-europe/plant-brapi-etl-faidare for harvesting the metadata.

Basic Info
Statistics
  • Stars: 4
  • Watchers: 8
  • Forks: 0
  • Open Issues: 23
  • Releases: 0
Created over 6 years ago · Last pushed about 1 year ago
Metadata Files
Readme Contributing License Codemeta

README.md

FAIDARE: FAIR Data-finder for Agronomic Research

FAIDARE is a application that provides web services (based on the BrAPI standard) and a user-friendly web interface to access plant datasets from a federation of sources.

[[TOC]]

Overview

  • Purpose: Facilitate access to federated plant datasets for agronomic research.
  • Key Features:

    • BrAPI-compliant web services.
    • Intuitive filters for dataset exploration.
    • Support for Elasticsearch and Kibana.

How to Contribute

Look at the contribution guide.

Data loading

For loading data in the FAIDARE Elasticsearch, see HOW-TO-LOAD-DATA.md.

Setting Up the Development Environment

Prerequisites

  1. Node.js and Yarn Install Node.js (v16.14.0 recommended) and Yarn. Using nvm is advised for version control: https://github.com/creationix/nvm.

sh nvm install 16.14.0 nvm use v16.14.0 2. Java JDK17 Install the latest JDK17 version for your operating system.

  1. Docker Required to run Elasticsearch and Kibana locally. Ensure Docker and Docker Compose are installed.

Installation Steps

  1. Install JavaScript Dependencies Navigate to the web directory and install dependencies: sh cd web yarn

  2. Start Elasticsearch and Kibana Launch using Docker Compose: sh docker compose up

  • Elasticsearch available at http://127.0.0.1:9200

  • Kibana available at http://127.0.0.1:5601

    Note: Prepare your Elasticsearch indices before proceeding.

Running the Backend Server

Basic API Server

Run the backend server with:

sh ./gradlew bootRun

Development Server

If you are working on frontend assets, start the backend with the dev profile:

sh ./gradlew bootRun --args='--spring.profiles.active=dev'

Complete Backend + Web Interface

For the full application:

sh ./gradlew assemble && java -jar backend/build/libs/faidare.jar

The server should then be accessible at http://localhost:8380/faidare-dev

Build the JS/CSS assets for the Web module

The web directory contains the scripts and styles used by the thymeleaf templates when a Germplasm, Study or Site page is rendered.

The build process for these assets can be run with the following command:

sh cd web yarn watch

yarn watch automatically picks up the changes in any files, and rebuild the resulting assets (thanks to Webpack). Make sure the backend is running with the dev profile if you do so (see above), otherwise the changes won't be shown in the browser.

yarn watch:prod is also available to use production settings, while yarn build and yarn build:prod do the same but without watching the changes.

GitLab CI

When creating merge requests on the ForgeMIA GitLab, the GitLab CI will automatically run the tests of the project (no need to do anything).

If you want to run the GitLab CI locally, you have to follow this steps:

Important:

The gitlab-runner exec command was fully removed in GitLab Runner 16.0 and is no longer available in version 17.0 (released May 2024). This command was deprecated in GitLab 15.7 (December 2022), and its removal was part of the breaking changes introduced in GitLab Runner 16.0.

For more information, see the official deprecation notice.

Alternatives to gitlab-runner exec:

  1. Use the Validate option on GitLab GitLab provides an integrated Pipeline Editor that allows you to validate and simulate the execution of your .gitlab-ci.yml file before actually running the pipeline. To use this feature, go to CI/CD > Pipelines > Editor in your GitLab project. Here, you can paste your .gitlab-ci.yml file and click the Validate button to check the syntax and simulate its execution.

  2. Emulators While gitlab-runner exec is deprecated, third-party tools and emulators can help simulate GitLab CI pipelines locally. These tools may be useful for testing and troubleshooting, though they may not replicate the GitLab CI environment exactly.

Spring Cloud config

On bootstrap, the application will try to connect to a remote Spring Cloud config server to fetch its configuration. The details of this remote server are filled in the bootstrap.yml file. ( TODO: This file is not found ) By default, it tries to connect to the remote server on http://localhost:8888 but it can of course be changed, or even configured via the SPRING_CONFIG_URI environment variable.

It will try to fetch the configuration for the application name faidare, and the default profile. If such a configuration is not found, it will then fallback to the local application.yml properties. To avoid running the Spring Cloud config server every time when developing the application, all the properties are still available in application.yml even if they are configured on the remote Spring Cloud server as well.

The configuration is currently only read on startup, meaning the application has to be rebooted if the configuration is changed on the Spring Cloud server. For a dynamic reload without restarting the application, see http://cloud.spring.io/spring-cloud-static/Finchley.SR1/single/spring-cloud.html#refresh-scope to check what has to be changed.

If you want to use a Spring Cloud configuration server, please refer to https://spring.io/guides/gs/centralized-configuration/

Owner

  • Name: ELIXIR Europe
  • Login: elixir-europe
  • Kind: organization
  • Email: info@elixir-europe.org

ELIXIR is a European intergovernmental organisation. It aims to make life science data easier to find, aggregate, analyse and store.

CodeMeta (codemeta.json)

{
  "@context": "https://w3id.org/codemeta/3.0",
  "type": "SoftwareSourceCode",
  "author": [
    {
      "id": "_:author_1",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRAE-URGI"
      },
      "familyName": "Destin",
      "givenName": "Jrmy",
      "position": 7
    },
    {
      "id": "_:author_2",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRA-URGI"
      },
      "familyName": "Cornut",
      "givenName": "Guillaume",
      "position": 6
    },
    {
      "id": "_:author_3",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRAE-URGI"
      },
      "email": "celia.michotey@inrae.fr",
      "familyName": "Michotey",
      "givenName": "Clia",
      "position": 2
    },
    {
      "id": "_:author_4",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "Ninja Squad"
      },
      "email": "jb@ninja-squad.fr",
      "familyName": "Nizet",
      "givenName": "Jean-Baptiste",
      "position": 5
    },
    {
      "id": "_:author_5",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRAE-URGI"
      },
      "email": "erik.kimmel@inrae.fr",
      "familyName": "Kimmel",
      "givenName": "Erik",
      "position": 11
    },
    {
      "id": "_:author_6",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRA-URGI"
      },
      "familyName": "Buy",
      "givenName": "Mlanie",
      "position": 13
    },
    {
      "id": "_:author_7",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRAE-URGI"
      },
      "email": "raphael.flores@inrae.fr",
      "familyName": "Flores",
      "givenName": "Raphal",
      "position": 3
    },
    {
      "id": "_:author_8",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRAE-URGI"
      },
      "email": "maud.marty@inrae.fr",
      "familyName": "Marty",
      "givenName": "Maud",
      "position": 9
    },
    {
      "id": "_:author_9",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "Ninja Squad"
      },
      "email": "cedric@ninja-squad.fr",
      "familyName": "Exbrayat",
      "givenName": "Cdric",
      "position": 4
    },
    {
      "id": "_:author_10",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRA-URGI"
      },
      "familyName": "Letellier",
      "givenName": "Thomas",
      "position": 10
    },
    {
      "id": "_:author_11",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRAE-URGI"
      },
      "email": "cyril.pommier@inrae.fr",
      "familyName": "Pommier",
      "givenName": "Cyril",
      "position": 1
    },
    {
      "id": "_:author_12",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRA-URGI"
      },
      "familyName": "El-Houdaigui",
      "givenName": "Bilal",
      "position": 8
    },
    {
      "id": "_:author_13",
      "type": "Person",
      "affiliation": {
        "type": "Organization",
        "name": "INRA-URGI"
      },
      "familyName": "Lakmouri",
      "givenName": "Najwa",
      "position": 12
    }
  ],
  "citation": "https://hal.inrae.fr/hal-04638310",
  "codeRepository": "https://forge.inrae.fr/urgi/is/faidare.git",
  "dateCreated": "2018-11-12",
  "description": "FAIDARE: FAIR Data-finder for Agronomic Research\n\nIt provides web services (based on the BrAPI standard) and a web interface with easy to use filters to facilitates the access to plant datasets from a federation of sources.",
  "downloadUrl": "https://forge.inrae.fr/urgi/is/faidare/-/archive/master/faidare-master.tar.gz",
  "isPartOf": "https://forge.inrae.fr/urgi/is/data-discovery",
  "keywords": [
    "data federation",
    "agronomy",
    "genomics"
  ],
  "license": "https://spdx.org/licenses/BSD-3-Clause-Attribution",
  "name": "FAIDARE",
  "operatingSystem": "Linux",
  "programmingLanguage": "Java",
  "relatedLink": "https://urgi.versailles.inrae.fr/faidare/",
  "runtimePlatform": "JVM",
  "version": "CURRENT",
  "codemeta:contIntegration": {
    "id": "https://forge.inrae.fr/urgi/is/faidare/-/pipelines?page=1&scope=all&ref=master"
  },
  "continuousIntegration": "https://forge.inrae.fr/urgi/is/faidare/-/pipelines?page=1&scope=all&ref=master",
  "developmentStatus": "active",
  "issueTracker": "https://forge.inrae.fr/urgi/is/faidare/-/issues"
}

GitHub Events

Total
  • Push event: 3
Last Year
  • Push event: 3

Dependencies

docker-compose.yml docker
  • docker.elastic.co/elasticsearch/elasticsearch 7.17.6
  • docker.elastic.co/kibana/kibana 7.17.6
web/package.json npm
  • @types/bootstrap 5.1.9 development
  • @types/leaflet.markercluster 1.4.6 development
  • autoprefixer 10.4.2 development
  • clean-webpack-plugin 4.0.0 development
  • css-loader 6.7.1 development
  • css-minimizer-webpack-plugin 3.4.1 development
  • leaflet.markercluster 1.5.3 development
  • mini-css-extract-plugin 2.6.0 development
  • postcss 8.4.8 development
  • postcss-loader 6.2.1 development
  • prettier 2.5.1 development
  • sass 1.49.9 development
  • sass-loader 12.6.0 development
  • ts-loader 9.2.7 development
  • typescript 4.6.2 development
  • webpack 5.70.0 development
  • webpack-cli 4.9.2 development
  • @types/leaflet 1.7.9
  • bootstrap 5.1.3
  • leaflet 1.7.1
web/yarn.lock npm
  • 313 dependencies
backend/build.gradle.kts maven
  • com.google.guava:guava 27.0.1-jre implementation
  • com.opencsv:opencsv 4.4 implementation
  • io.springfox:springfox-swagger-ui 2.9.2 implementation
  • io.springfox:springfox-swagger2 2.9.2 implementation
  • io.swagger:swagger-annotations 1.5.21 implementation
  • org.elasticsearch.client:elasticsearch-rest-high-level-client 6.6.2 implementation
  • org.elasticsearch:elasticsearch 6.6.2 implementation
  • org.springframework.boot:spring-boot-starter-actuator * implementation
  • org.springframework.boot:spring-boot-starter-security * implementation
  • org.springframework.boot:spring-boot-starter-web * implementation
  • org.springframework.cloud:spring-cloud-starter-config * implementation
  • org.junit-pioneer:junit-pioneer 0.3.0 testImplementation
  • org.junit.jupiter:junit-jupiter-api * testImplementation
  • org.junit.jupiter:junit-jupiter-params * testImplementation
  • org.mockito:mockito-junit-jupiter 2.23.0 testImplementation
  • org.springframework.boot:spring-boot-starter-test * testImplementation
  • org.junit.jupiter:junit-jupiter-engine * testRuntimeOnly
Dockerfile docker
  • alpine latest build
build.gradle.kts maven
web/build.gradle.kts maven