# Contribution

<figure><img src="https://2361277526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUO0RN9PzFLqAgLEwwaSn%2Fuploads%2FFkAkj48jExKFoXWlpnZS%2FnewFWArchitecture.png?alt=media&#x26;token=9629abd2-5705-47f3-a33e-a38d15490ae9" 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
