# Contribuer

<figure><img src="/files/79915dbed189a91a61aedb29d96e2b1c442d2b1d" alt=""><figcaption><p>Architecture de haut niveau du cadre principal utilisé dans l'application</p></figcaption></figure>

## L'architecture de la plateforme MEDomics

La carte ci-dessous illustre l'organisation des fichiers, des modules, des bases de données et la connexion Frontend-Backend au sein de la plateforme MEDomics. Ce guide visuel est conçu pour aider les nouveaux contributeurs à comprendre la structure de l'application, à faciliter l'intégration de nouvelles fonctionnalités et à aider à naviguer efficacement dans la base de code.

{% embed url="<https://miro.com/app/embed/uXjVKiE9qtw=/?embedId=366443778390&frameId=3458764605680580664&pres=1>" %}
architecture détaillée de la plateforme MEDomics
{% endembed %}

## Configuré depuis les fondations 🌱

{% hint style="info" %}
Allez visiter notre [branche de développement GitHub](https://github.com/MEDomics-UdeS/MEDomicsLab/tree/develop#medomicslab---develop-branch-%EF%B8%8F)!
{% endhint %}

#### 1. Installation de MongoDB Community Edition

Suivez les instructions d'installation en fonction de votre système d'exploitation pour [Installation de MongoDB](https://www.mongodb.com/docs/manual/administration/install-community/#std-label-install-mdb-community-edition).

{% tabs %}
{% tab title="Windows" %}
[Installer MongoDB sur Windows](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-windows/#install-mongodb-community-edition)

* N'installez pas MongoDB en tant que service.
* Vous n'êtes pas obligé d'installer MongoDB Compass.
* Vous n'êtes pas obligé d'installer mongosh.
* N'oubliez pas de [ajouter les binaires MongoDB au PATH système](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-windows/#add-mongodb-binaries-to-the-system-path).
  {% endtab %}

{% tab title="Linux" %}
[Installer MongoDB sur Linux (Ubuntu)](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/#install-mongodb-community-edition)

* Installez la dernière version de MongoDB
  {% endtab %}

{% tab title="Mac" %}
[Installer MongoDB sur Mac](https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-os-x/#install-mongodb-community-edition)
{% endtab %}
{% endtabs %}

#### 2. Installation des outils de base de données MongoDB

Suivez les instructions d'installation en fonction de votre système d'exploitation pour [Installation des outils de base de données MongoDB](https://www.mongodb.com/docs/database-tools/installation/installation/).

{% tabs %}
{% tab title="Windows" %}
[Installer les outils de base de données MongoDB sur Windows](https://www.mongodb.com/docs/database-tools/installation/installation-windows/#installation)

* Installez avec l'installateur MSI.
  {% endtab %}

{% tab title="Linux" %}
[Installer les outils de base de données MongoDB sur Linux](https://www.mongodb.com/docs/database-tools/installation/installation-linux/#installation)

* Installez avec le paquet DEB.
  {% endtab %}

{% tab title="Mac" %}
[Installer les outils de base de données MongoDB sur Mac](https://www.mongodb.com/docs/database-tools/installation/installation-macos/#installation)

* Installez avec Homebrew.
  {% endtab %}
  {% endtabs %}

### 1. Installation de Nvm

* [NVM pour Windows](https://github.com/coreybutler/nvm-windows)
* [NVM pour Ubuntu](< https://github.com/nvm-sh/nvm#installing-and-updating>)

### 2. Installation de npm/node.js

```
nvm install lts
nvm use lts
```

### 3. Cloner le dépôt

{% hint style="warning" %}
Nous utilisons actuellement *develop* comme notre branche d'intégration.
{% endhint %}

{% tabs %}
{% tab title="HTTPS" %}

```
git clone -b scalability https://github.com/MEDomics-UdeS/MEDomicsLab.git
```

{% endtab %}

{% tab title="SSH" %}

<pre><code><strong>git clone -b scalability git@github.com:MEDomics-UdeS/MEDomicsLab.git
</strong></code></pre>

{% endtab %}
{% endtabs %}

### 4. Configuration côté serveur (Go)

#### 4.1 Installation de Go

1. Téléchargez la dernière version stable de Go depuis le site officiel : <https://golang.org/dl/>
2. Suivez les [instructions d'installation](https://go.dev/doc/install) pour votre système d'exploitation.

#### 4.2 Configuration de l'environnement

{% tabs %}
{% tab title="Windows" %}
Exécutez ces commandes dans une **invite CMD** nd :

```
setx GOPATH %USERPROFILE%\go
setx PATH "%PATH%;C:\Go\bin"
```

{% endtab %}

{% tab title="Linux et Mac" %}

Exécutez ces commandes dans un terminal :

```
echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.bashrc
```

{% endtab %}
{% endtabs %}

Après, **fermez tous vos terminaux** car ces commandes prendront effet lors de l'initialisation de tout terminal

#### 4.3 Vérifier l'installation

1. Ouvrez un nouveau terminal
2. Exécutez la commande `go version`
3. Si Go est correctement installé, vous devriez voir le numéro de version affiché dans la console.

#### 4.4 Configuration pour l'application

1. Ouvrez une nouvelle invite de commandes et rendez-vous dans le `<repo path>/go_server` répertoire.
2. Exécutez la commande `go run main.go` (la première fois, il devrait télécharger les bibliothèques requises et lancer le serveur)
3. Vous pouvez terminer le processus en appuyant sur `CTRL + C`
4. Enfin, compilez l'application en exécutant `go build main.go` (Cela devrait créer un fichier exécutable -> ce fichier sera exécuté par le JavaScript côté client, donc les modifications des `.go` fichiers doivent être suivies d'une recompilation. Félicitations, vous êtes maintenant prêt à commencer à développer des applications Go !

### 5. Initialiser les sous-modules

```
cd <.../MEDomicsLab/>
git checkout dev_lab
cd ../MEDprofiles
git checkout fusion_MEDomicsLab
```

### 6. Démarrez l'application Electron !

{% code fullWidth="false" %}

```
cd <.../MEDomicsLab>
npm install
npm run dev
```

{% endcode %}

{% hint style="warning" %}
Sur **Windows**, si vous rencontrez des messages d'erreur lors de l'exécution `npm install`liés aux fichiers .dll manquants de tensorflow, revenez à votre version de node en suivant ces étapes :

* [Téléchargez node v18.16.1](https://nodejs.org/fr/blog/release/v18.16.1)
* Ajoutez au PATH la voie vers votre nouveau node en la plaçant avant l'ancienne.
* Testez votre version de node en utilisant : `node --version`
  {% endhint %}

{% hint style="info" %}
**Configuration de MongoDB**

La plateforme MEDomicsLab utilise **le port 54017** comme port de connexion MongoDB par défaut. Pour la visualisation et la gestion de la base de données, nous recommandons d'utiliser [MongoDB Compass](https://www.mongodb.com/products/compass), le client GUI officiel de MongoDB.

**Détails clés**:

* Port par défaut : `54017`
* Client recommandé : MongoDB Compass
* Format de la chaîne de connexion : `mongodb://localhost:54017/`
  {% endhint %}

{% hint style="info" %}

#### Modifier les paramètres de démarrage

1. Allez dans le fichier `medomics.dev.js`
2. Voici une description de l'objet :

```javascript
const config = {
  // Si vrai, le serveur sera lancé automatiquement lorsque l'application sera démarrée
  runServerAutomatically: true,
  // Si vrai, utiliser les outils de développement React
  useReactDevTools: false,
  // le port par défaut à utiliser pour le serveur, assurez-vous qu'aucun programme ne l'utilise par défaut
  defaultPort: 5000,
  // Soit "FIX" soit "AVAILABLE" (sensible à la casse)
  // FIX 		-­> si defaultPort est utilisé, forcer la terminaison et utiliser defaultPort
  // AVAILABLE 	-> si defaultPort est utilisé, itérer pour trouver le prochain port disponible
  portFindingMethod: PORT_FINDING_METHOD.FIX
}
```

{% endhint %}

## Pour tester la version de production&#x20;

### Construisez l'application Electron et exécutez la version construite

{% tabs %}
{% tab title="Windows" %}

```
npm run build:win                            # construire et empaqueter l'application 
.\build\dist\win-unpacked\MEDomicsLab.exe    # Exécuter l'exécutable de la version construite
```

{% endtab %}

{% tab title="Linux" %}

```
npm run build:linux                    # construire et empaqueter l'application 
bash build/dist/linux-unpacked/medapp  # Exécuter l'exécutable de la version construite
```

{% endtab %}

{% tab title="Mac" %}

```
npm run build:mac                                                    # construire et empaqueter l'application 
bash build/dist/mac-arm64/MEDomicsLab.app/Contents/MacOS/MEDomicsLab # Exécuter l'exécutable de la version construite     
```

{% endtab %}
{% endtabs %}

> L'application construite se trouvera dans le `build/dist` dossier


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://medomicslab.gitbook.io/medomics-docs/v1-fr/contributing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
