> For the complete documentation index, see [llms.txt](https://medomicslab.gitbook.io/medomics-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://medomicslab.gitbook.io/medomics-docs/v1-fr/contributing.md).

# Contribuer

<figure><img src="/files/79915dbed189a91a61aedb29d96e2b1c442d2b1d" alt=""><figcaption><p>Architecture de haut niveau du principal framework 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 à naviguer efficacement dans la base de code.

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

## Résumé des normes de contribution

Avant de contribuer à MEDomics, nous vous recommandons vivement de consulter nos [normes de codage](/medomics-docs/v1-fr/contributing/our-coding-standards.md).

## Contribuer à MEDomics 🌱

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

### 1. Prérequis

#### 1.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’avez pas besoin d’installer MongoDB Compass.
* Vous n’avez pas besoin 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 MongoD.
{% endtab %}

{% tab title="MacOS" %}
[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.2 Installation des outils de base de données MongoDB

Suivez les instructions en fonction de votre système d’exploitation pour l’installation des outils de base de données MongoDB.

{% tabs %}
{% tab title="Windows" %}
Installez avec le [MSI](https://www.mongodb.com/docs/database-tools/installation/?operating-system=windows\&package-type=msi) programme d’installation.
{% endtab %}

{% tab title="Linux" %}
Installez avec le [package ](https://www.mongodb.com/docs/database-tools/installation/?operating-system=linux\&package-type=deb).
{% endtab %}

{% tab title="MacOS" %}
Installez avec [Homebrew](https://www.mongodb.com/docs/database-tools/installation/?operating-system=macos\&package-type=homebrew).
{% endtab %}
{% endtabs %}

### 2. Configuration de Node.js et NVM

#### 2.1 Installation de Nvm

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

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

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

{% hint style="warning" %}
Attention, les étapes suivantes diffèrent selon les privilèges de l’utilisateur.
{% endhint %}

<details>

<summary>Pour les membres de l’ <a href="https://github.com/MEDomicsLab">organisation GitHub MEDomicsLab</a></summary>

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

En utilisant HTTPS :

```zsh
git clone -b develop https://github.com/MEDomicsLab/MEDomics.git
```

En utilisant SSH :

```zsh
git clone -b develop git@github.com:MEDomicsLab/MEDomics.git
```

### 4. Configuration du backend (Go)

#### 4.1 Installer 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

Exécutez ces commandes dans le terminal :

<table><thead><tr><th>Windows</th><th>Linux et MacOS</th></tr></thead><tbody><tr><td><pre class="language-powershell"><code class="lang-powershell">setx GOPATH %USERPROFILE%\go
setx PATH "%PATH%;C:\Go\bin"
</code></pre></td><td><pre class="language-zsh"><code class="lang-zsh">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
</code></pre></td></tr></tbody></table>

Après, **fermez tous vos terminaux** car ces commandes prendront effet lors de l’initialisation de n’importe quel terminal

#### 4.3 Vérifier l’installation

Dans un nouveau terminal, exécutez :

```bash
go version
```

Si Go est correctement installé, vous devriez voir le numéro de version affiché dans la console.

#### 4.4 Configuration de l’application

```shellscript
cd <repo-path>/go_server
go run main.go   # l’exécution initiale installe les dépendances
```

Ensuite, construisez l’exécutable :

```shellscript
go build main.go
```

{% hint style="warning" %}
Reconstruisez après toute `.go` modification du fichier.
{% endhint %}

### 5. Initialiser les sous-modules

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

### 6. Créer votre propre branche

Créez toujours une branche à partir de `develop`, et assurez-vous d’avoir les dernières modifications :

```sh
git checkout develop
git pull origin develop
git checkout -b nom-de-votre-branche
# pousser votre branche vers le dépôt MEDomics
git push --set-upstream origin nom-de-votre-branche
```

### 7. Apporter des modifications

* Suivez la structure du projet
* Gardez les commits **petits et descriptifs**

```bash
git add .
git commit -m "feat: add new feature X"
```

Conventions de nommage des commits :

* `feat:` nouvelle fonctionnalité
* `fix:` correction de bogue
* `docs:` modifications de la documentation
* `refactor:` restructuration du code
* `test:` tests ajoutés/mis à jour

***

### 9. Envoyer les modifications

```bash
git push
```

***

### 10. Créer une Pull Request

1. Allez sur GitHub MEDomics [page des Pull Requests](https://github.com/MEDomicsLab/MEDomics/pulls)
2. Cliquez sur **New Pull Request**
3. Branche cible : `develop`&#x20;
4. Branche de comparaison : `nom-de-votre-branche`

***

### 11. Directives pour les Pull Requests

Assurez-vous que :

* ✅ Le code se compile et s’exécute
* ✅ Aucune erreur dans la console
* ✅ Mise en forme correcte
* ✅ Les tests passent (le cas échéant)
* ✅ Description claire de la PR :
  * Ce qui a été fait
  * Pourquoi cela a été fait
  * Captures d’écran (si changements d’interface)

***

### 12. Processus de revue de code

* Répondez aux commentaires du relecteur
* Poussez les mises à jour sur la même branche
* Gardez les échanges professionnels et concis

### 13. Après la fusion

```bash
git checkout develop
git pull
git branch -d feature/nom-de-votre-fonctionnalité # Il est temps pour une nouvelle fonctionnalité
```

</details>

<details>

<summary>Pour les utilisateurs externes</summary>

### 🌱 Contribution via Fork (pratique courante)

Ce flux de travail est recommandé pour les contributeurs externes.

***

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

1. Allez sur le dépôt officiel
2. Cliquez sur **Fork**
3. Clonez votre fork :

```bash
git clone https://github.com/<your-username>/MEDomicsLab.git
cd MEDomicsLab
```

***

### 4. Ajouter le dépôt distant upstream

```bash
git remote add upstream https://github.com/MEDomicsLab/MEDomicsLab.git
```

Vérifiez :

```bash
git remote -v
```

***

### 5. Créer une branche de fonctionnalité

Créez toujours une branche à partir de `develop`:

```bash
git fetch upstream
git checkout develop
git pull upstream develop

git checkout -b feature/nom-de-votre-fonctionnalité
```

***

### 6. Configuration du backend (Go)

#### 6.1 Installer 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.

#### 6.2 Configuration de l’environnement

Exécutez ces commandes dans le terminal :

<table><thead><tr><th>Windows</th><th>Linux et MacOS</th></tr></thead><tbody><tr><td><pre class="language-powershell"><code class="lang-powershell">setx GOPATH %USERPROFILE%\go
setx PATH "%PATH%;C:\Go\bin"
</code></pre></td><td><pre class="language-zsh"><code class="lang-zsh">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
</code></pre></td></tr></tbody></table>

Après, **fermez tous vos terminaux** car ces commandes prendront effet lors de l’initialisation de n’importe quel terminal

#### 6.3 Vérifier l’installation

Dans un nouveau terminal, exécutez :

```bash
go version
```

Si Go est correctement installé, vous devriez voir le numéro de version affiché dans la console.

#### 6.4 Configuration de l’application

```shellscript
cd <repo-path>/go_server
go run main.go   # l’exécution initiale installe les dépendances
```

Ensuite, construisez l’exécutable :

```shellscript
go build main.go
```

{% hint style="warning" %}
Reconstruisez après toute `.go` modification du fichier.
{% endhint %}

***

### 7. Apporter des modifications

* Suivez la structure du projet
* Gardez les commits **petits et descriptifs**

```bash
git add .
git commit -m "feat: add new feature X"
```

Conventions de nommage des commits :

* `feat:` nouvelle fonctionnalité
* `fix:` correction de bogue
* `docs:` modifications de la documentation
* `refactor:` restructuration du code
* `test:` tests ajoutés/mis à jour

***

### 8. Synchroniser avec upstream

Avant de pousser :

```bash
git fetch upstream
git rebase upstream/develop
```

***

### 9. Envoyer les modifications

```bash
git push origin feature/nom-de-votre-fonctionnalité
```

***

### 10. Créer une Pull Request

1. Allez sur votre fork sur GitHub
2. Cliquez sur **Compare & Pull Request**
3. Branche cible : `develop` (dépôt de base)

***

### 11. Directives pour les Pull Requests

Assurez-vous que :

* ✅ Le code se compile et s’exécute
* ✅ Aucune erreur dans la console
* ✅ Mise en forme correcte
* ✅ Les tests passent (le cas échéant)
* ✅ Description claire de la PR :
  * Ce qui a été fait
  * Pourquoi cela a été fait
  * Captures d’écran (si changements d’interface)

***

### 12. Processus de revue de code

* Répondez aux commentaires du relecteur
* Poussez les mises à jour sur la même branche
* Gardez les échanges professionnels et concis

***

### 13. Après la fusion

```bash
git checkout develop
git pull upstream develop
git branch -d feature/nom-de-votre-fonctionnalité
```

</details>

### Exécuter l’application Electron

{% code fullWidth="false" %}

```shellscript
cd <repo_path/MEDomics>
npm install
npm run dev
```

{% endcode %}

{% hint style="warning" %}
Sur **Windows**, si vous rencontrez des messages d’erreur lors de l’exécution de `npm install`liés à des fichiers .dll tensorflow manquants, 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 à la variable PATH le chemin vers votre nouveau node en le plaçant au-dessus de l’ancien node.
* 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. Accédez au fichier `medomics.dev.js`
2. Voici une description de l’objet :

```javascript
export const PORT_FINDING_METHOD = {
  FIX: 0,
  AVAILABLE: 1
};

const config = {
  // Démarre automatiquement le serveur backend lorsque l’application se lance
  runServerAutomatically: true,

  // Active les React Developer Tools (utile pour déboguer l’interface)
  useReactDevTools: false,

  // Port par défaut utilisé par le serveur Electron/Go
  defaultPort: 54288,

  // Port de connexion MongoDB
  mongoPort: 54017,

  // Stratégie d’attribution des ports :
  // FIX        -> force l’utilisation de defaultPort (termine les processus en conflit si nécessaire)
  // AVAILABLE  -> trouve le prochain port disponible si defaultPort est occupé
  portFindingMethod: PORT_FINDING_METHOD.FIX
};

export default config;
```

{% endhint %}

## Tests des versions de production&#x20;

### Construire et exécuter

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

```powershell
npm run build:win                            # construire et empaqueter l’application 
.\build\dist\win-unpacked\MEDomics.exe    # Exécuter l’exécutable de la version compilée
```

{% endtab %}

{% tab title="Linux" %}

```bash
npm run build:linux                    # construire et empaqueter l’application 
bash build/dist/linux-unpacked/medomics-platform  # Exécuter l’exécutable de la version compilée
```

{% endtab %}

{% tab title="Mac" %}

```zsh
npm run build:mac                                                    # construire et empaqueter l’application 
bash build/dist/mac-arm64/MEDomicsLab.app/Contents/MacOS/medomics-platform  # Exécuter l’exécutable de la version compilée     
```

{% endtab %}
{% endtabs %}

L’application compilée sera située dans le `dossier build/dist` .


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
