CM5 - TOOLING

ou comment bien setup un VRAI projet web !

Pourquoi on est là ?

Pourquoi on est là ?

🧰 Vous montrer l'outillage d'un projet web

🏅Les bonnes pratiques

👨🏼‍🦳Vous faire un retour d'expérience

❓Répondre à TOUTES vos questions

Qui on est ?

Qui on est ?

Mickaël Alves

Etienne Idoux

Qui on est ?

Mickaël Alves

Etienne Idoux

Qui on est ?

Mickaël Alves

Etienne Idoux

Qui on est ?

Mickaël Alves

Etienne Idoux

(Anciennement)

(Actuellement)

Vous devez de toute urgence nous aider à mettre notre application en production ! Le code est déjà fait, mais j'ai peur qu'il ne soit pas très propre !

Allons faire un petit tour sur le projet...

Demo 👨🏼‍💻

👏🏼 Utilisation de Git !

Les bases de Git !

Premier problème...

Premier problème...

Mauvaise utilisation de Git !

Mauvaise utilisation de Git !

  • Des noms commits inadaptés
  • Des fichiers qui ne devraient pas être là ❗
  • Aucune merge request / pull request

Mauvaise utilisation de Git !

  • Des noms commits inadaptés
  • Des fichiers qui ne devraient pas être là ❗
  • Aucune merge request / pull request

Besoin d'un petit nettoyage 🧹

Conventional Commits !

Conventional Commits

Semantic Commit Messages !

Semantic Commit Messages

Demo 👨🏼‍💻

Pourquoi utiliser GitLab / Github ... !

Gitlab logoGithub logo

...

Pourquoi utiliser GitLab / Github ... !

  • Interface de visualisation de projets Git
  • Utilisation des merge requests / pull requests
  • Gestion de projets avec les issues et boards
  • Continuous Integration / Delivery (CI/CD)
    1. Exécution automatique de tests, du packaging, du déploiement, etc.
  • Déploiement sur GitLab / Github Pages
  • Espace de documentation (Wiki...)

Comment améliorer notre code ?

Environnement de travail !

Integrated Development Environment (IDE) !

Integrated Development Environment (IDE) !

Integrated Development Environment (IDE) !

📦 Node Package Manager (NPM)...

📦 Node Package Manager (NPM)...

  • Gestionnaire de packages

📦 Node Package Manager (NPM)...

  • Gestionnaire de packages
  • Installation de dépendances

📦 Node Package Manager (NPM)...

  • Gestionnaire de packages
  • Installation de dépendances
  • Scripts personnalisés

📦 Node Package Manager (NPM)...

  • Gestionnaire de packages
  • Installation de dépendances
  • Scripts personnalisés
https://www.npmjs.com/

Alternative à npm...

https://yarnpkg.com/https://pnpm.io/fr/

Demo 👨🏼‍💻

👮 Linters...

  • Détection des erreurs de syntaxe dans le code

👮 Linters...

  • Détection des erreurs de syntaxe dans le code
  • Des règles pour le projet entier

👮 Linters...

  • Détection des erreurs de syntaxe dans le code
  • Des règles pour le projet entier
  • Améliorer la qualité du code

👮 Linters...

  • Détection des erreurs de syntaxe dans le code
  • Des règles pour le projet entier
  • Améliorer la qualité du code
https://eslint.org/
https://stylelint.io/

Demo 👨🏼‍💻

🧹 Formatters...

🧹 Formatters...

  • Réorganiser le code pour le rendre plus lisible et plus consistant

🧹 Formatters...

  • Réorganiser le code pour le rendre plus lisible et plus consistant
  • Gagner du temps sur le formattage

🧹 Formatters...

  • Réorganiser le code pour le rendre plus lisible et plus consistant
  • Gagner du temps sur le formattage
  • Produire du code uniforme et cohérent

🧹 Formatters...

  • Réorganiser le code pour le rendre plus lisible et plus consistant
  • Gagner du temps sur le formattage
  • Produire du code uniforme et cohérent
https://prettier.io/
https://biomejs.dev/

Demo 👨🏼‍💻

Autres outils et astuces...

Typescript...

Typescript...

ℹ️ Langage de programmation qui a pour but d'améliorer et de sécuriser la production de code JavaScript.

https://www.typescriptlang.org/
Typescript
const Name: string = "Toto" // ✅
const Age: number = 12 // ✅

const Surname: string = false // ❌
const YearOfBirth: number = "1998" // ❌
			

JsDoc...

JsDoc...

ℹ️ Langage de balisage utilisé pour documenter du code source JavaScript.

https://jsdoc.app/

JsDoc...

Javascript
/**
 * Function to add a book to the list.
 *
 * @constructor
 *
 * @param {string} title - The title of the book.
 * @param {string} author - The author of the book.
 */
function addBook(title, author) {
	blablabla...
}
			

JsDoc...

bash
# Commande de génération de la documentation 📖

jsdoc book.js
			

Les extensions d'IDE...

Les extensions d'IDE .

https://ritwickdey.gallerycdn.vsassets.io/extensions/ritwickdey/liveserver/5.7.9/1661914858952/Microsoft.VisualStudio.Services.Icons.Default

Live Server

Serveur web minimaliste avec un système de HMR


https://ritwickdey.github.io/vscode-live-server/

Les extensions d'IDE .

https://ecmel.gallerycdn.vsassets.io/extensions/ecmel/vscode-html-css/2.0.9/1706810901404/Microsoft.VisualStudio.Services.Icons.Default

HTML CSS Support

Extension VSCode qui permet la complétion des attributs dans le code


https://github.com/ecmel/vscode-html-css

Les extensions d'IDE .

https://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Visual_Studio_Code_1.35_icon.svg/2048px-Visual_Studio_Code_1.35_icon.svg.png

IntelliSense

Fonction d'édition de code, utilisée pour la complétion de code, les informations sur les paramètres... Vous pouvez trouver les extensions pour vos langages préférés !


https://code.visualstudio.com/docs/editor/intellisense

Et l'IA dans tout ça ?

⚠️ A utiliser à bon escient...

⚠️ A utiliser à bon escient...

  • Gain de productivité...

⚠️ A utiliser à bon escient...

  • Gain de productivité...
  • Mais il faut savoir évaluer les réponses !

⚠️ A utiliser à bon escient...

  • Gain de productivité...
  • Mais il faut savoir évaluer les réponses !
  • Une IA ne remplacera jamais une bonne doc 📚

ChatGPT...

ChatGPT...

ℹ️ Le pionnier des LLM, pratique et gratuit mais se trompe souvent sur des problèmes un peu complexe.

https://chat.openai.com/

Github Copilot...

Github Copilot...

ℹ️ Une extension à vos IDE entraînés sur les données de github. Très pratique pour de l'auto-complétion.

https://github.com/features/copilot

Parlons CI/CD !

Continuous Integration (CI)...

Continuous Integration (CI)...

  • Détecter rapidement les erreurs

Continuous Integration (CI)...

  • Détecter rapidement les erreurs
  • Automatiser les bonnes pratiques

Continuous Integration (CI)...

  • Détecter rapidement les erreurs
  • Automatiser les bonnes pratiques
  • Fusionner régulièrement le code pour s'assurer de sa qualité !

Continuous Integration (CI)...

  • Détecter rapidement les erreurs
  • Automatiser les bonnes pratiques
  • Fusionner régulièrement le code pour s'assurer de sa qualité !
Husky
Lint Staged
Gitlab CI/CD

Demo 👨🏼‍💻

Continuous Delivery (CD)...

Continuous Delivery (CD)...

  • Automatiser le deploiement de l'application

Continuous Delivery (CD)...

  • Automatiser le deploiement de l'application
  • Livrer rapidement et avec sérénité 🧘‍

Continuous Delivery (CD)...

  • Automatiser le deploiement de l'application
  • Livrer rapidement et avec sérénité 🧘‍
  • Mettre en place des tests automatisés

Continuous Delivery (CD)...

  • Automatiser le deploiement de l'application
  • Livrer rapidement et avec sérénité 🧘‍
  • Mettre en place des tests automatisés
Gitlab CI/CD

Notre app est super belle ! Et maintenant ?

Les bundlers !

Les bundlers !

  • Beaucoup de fichiers (html, css, js, images, ...)

Les bundlers !

  • Beaucoup de fichiers (html, css, js, images, ...)
  • Il faut réduire le poids de nos applications !

Les bundlers !

  • Beaucoup de fichiers (html, css, js, images, ...)
  • Il faut réduire le poids de nos applications !
  • On compresse tout grâce aux bundlers 💪

Les bundlers !

  • Beaucoup de fichiers (html, css, js, images, ...)
  • Il faut réduire le poids de nos applications !
  • On compresse tout grâce aux bundlers 💪

Les bundlers !

  • Beaucoup de fichiers (html, css, js, images, ...)
  • Il faut réduire le poids de nos applications !
  • On compresse tout grâce aux bundlers 💪

Les bundlers !

  • Beaucoup de fichiers (html, css, js, images, ...)
  • Il faut réduire le poids de nos applications !
  • On compresse tout grâce aux bundlers 💪

Les bundlers !

Comment mettre le code sur internet ?

Comment mettre le code sur internet ?

ℹ️ Permet d'héberger votre app en quelques clics. Propose aussi des métriques.

https://vercel.com

Comment mettre le code sur internet ?

ℹ️ Gérer votre propre serveur et les sites que vous mettez en ligne.

https://www.nginx.com/

Comment mettre le code sur internet ?

Gestion des versions - Semantic Versioning

https://semver.org/

Comment surveiller tout ça ?

Grafana...

Grafana...

ℹ️ Permet de surveiller et analyser les données de votre application avec des graphes.

https://grafana.com/

Grafana...

New Relic...

New Relic...

ℹ️ Observe vos applications et vos machines et propose beaucoup de fonctionnalités.

https://newrelic.com

New Relic...

Tests de performance...

Tests de performance...

ℹ️ Fournir des insights pour optimiser les perfs et garantir une expérience utilisateur optimale

https://www.datadoghq.com/

Tests de performance...

ℹ️ Evaluer les performances des applications web en simulant un grand nombre d'utilisateurs concurrents.

https://jmeter.apache.org/

Restons informé !

Restons informé !

📬 Par mail

Restons informé !

💬 Par slack

En conclusion

En conclusion

Pourquoi on fait tout ça ?

Linter, Format, Nommage, pourquoi ?

  • Améliorer la qualité du code
  • Améliorer la consistance et lisibilité du code
    1. Plus simple à relire
    2. Plus simple à maintenir
  • Automatiser pour gagner en efficacité

Linter, Format, Nommage, pourquoi ?

  • Améliorer la qualité du code
  • Améliorer la consistance et lisibilité du code
    1. Plus simple à relire
    2. Plus simple à maintenir
  • Automatiser pour gagner en efficacité

❗On choisit puis on s'y tient

CI/CD, Alerting, Monitoring, pourquoi ?

  • Automatiser pour gagner en efficacité
  • Permettre la détection précoce des erreurs
  • Livrer en continu et de manière itérative
  • Surveillance et dépannage des applications

CI/CD, Alerting, Monitoring, pourquoi ?

  • Automatiser pour gagner en efficacité
  • Permettre la détection précoce des erreurs
  • Livrer en continu et de manière itérative
  • Surveillance et dépannage des applications

💸 Une petite erreur peut coûter cher...

Merci !

Mickaël Alves

Etienne Idoux