BlockLucky Documentation officielle GitHub

Versions de la stack

Cette page liste les dépendances déclarées par chaque projet du monorepo et explique comment leurs versions sont choisies, figées et mises à jour. Les tableaux en bas de page sont générés à chaque construction de la documentation depuis les fichiers package.json : ils sont toujours à jour avec le code.

Politique de versions

Moteur Node.js

Tous les projets qui ont un package.json avec des dépendances déclarent le même moteur :

JSON
{
  "engines": {
    "node": ">=22.12.0"
  }
}

La version majeure de référence est fixée à la racine par .nvmrc, qui contient 22. Tous les jobs Node.js de la CI lisent ce fichier (node-version-file: .nvmrc dans .github/workflows/ci.yml). Les images Docker partent de node:22-bookworm-slim, déclarée par ARG NODE_IMAGE dans les Dockerfile du backend, du frontend web et de la chaîne locale.

Où Version de Node.js
Postes de développement nvm use lit .nvmrc : Node.js 22
CI GitHub Actions actions/setup-node avec .nvmrc
Images Docker node:22-bookworm-slim
package.json de chaque projet >=22.12.0

Aucun fichier .npmrc n'active engine-strict : avec une version de Node.js plus ancienne, npm affiche un avertissement mais installe quand même.

À savoir

Le site de l'Office de Tourisme n'a aucune dépendance. Son package.json ne contient qu'un script dev qui lance npx --yes serve@14.2.7, avec une version figée dans la commande elle-même.

Plages déclarées et épinglage

Les projets n'appliquent pas tous la même règle dans package.json :

Projet Règle observée Exemples
smart-contract/ Plages ^ (mineures et correctifs acceptés), TypeScript en ~ "hardhat": "^3.21.2", "typescript": "~6.0.3"
backend/ Plages ^ pour toutes les dépendances "express": "^5.3.0", "@prisma/client": "^7.10.1"
frontend-web/ Versions exactes, TypeScript en ~ "next": "16.4.5", "react": "19.3.1"
mobile-app/ ^ pour les bibliothèques JavaScript, ~ pour les modules liés au SDK Expo, exact pour React, React Native et react-native-svg "expo-secure-store": "~58.0.2", "react-native": "0.88.1"
documentation-officielle/ Versions exactes "marked": "18.2.0", "mermaid": "12.3.0"

Quelle que soit la plage déclarée, la version réellement installée est figée par le fichier package-lock.json versionné dans chaque projet. La CI et les Dockerfile installent avec npm ci, qui refuse de modifier le lockfile et échoue s'il ne correspond plus au package.json. Une plage ^ ne change donc rien en CI ou en production tant que le lockfile n'est pas régénéré : elle indique seulement jusqu'où npm install ou Dependabot peuvent monter.

Important

Après toute modification d'un package.json, lancer npm install dans le dossier du projet et versionner le package-lock.json mis à jour dans la même pull request. Sinon npm ci échoue en CI.

Autres versions figées

Élément Où Mode d'épinglage
Compilateur Solidity smart-contract/hardhat.config.ts Version exacte 0.8.34, EVM prague. Les sources déclarent pragma solidity ^0.8.28, et solhint impose cette borne (compiler-version dans .solhint.json)
Images d'infrastructure docker-compose.yml Étiquettes de version : postgres:15-alpine, redis:7.4-alpine, axllent/mailpit:v1.31.4
Image de l'Office de Tourisme frontend-office-tourisme/Dockerfile nginxinc/nginx-unprivileged:1.30-alpine
Actions GitHub .github/workflows/ci.yml Épinglées par empreinte de commit complète, par exemple actions/checkout@11d5960a...
Outils lancés en conteneur par la CI .github/workflows/ci.yml Étiquettes exactes : zricethezav/gitleaks:v8.30.1, aquasec/trivy:0.76.2
forge-std smart-contract/package.json Archive d'une étiquette précise (v1.17.0)

Mises à jour automatiques avec Dependabot

.github/dependabot.yml ouvre des pull requests de mise à jour. Chacune passe par la CI comme n'importe quel changement.

Écosystème Dossiers Fréquence Particularités
npm /backend, /smart-contract, /frontend-web Hebdomadaire, le lundi 5 pull requests ouvertes au plus, mineures et correctifs regroupés en une seule pull request par projet
npm /mobile-app Hebdomadaire, le lundi Même regroupement, et mises à jour majeures de expo* et react-native* ignorées
npm /documentation-officielle Mensuelle Toutes les dépendances dans un seul groupe, 3 pull requests au plus
docker /backend, /frontend-web, /frontend-office-tourisme, /smart-contract Hebdomadaire Images de base des Dockerfile
docker-compose / Hebdomadaire Images de docker-compose.yml
github-actions / Hebdomadaire Toutes les actions dans un seul groupe

Toutes les entrées npm ont un délai de carence (cooldown) de 5 jours : Dependabot ne propose pas une version publiée depuis moins de 5 jours, ce qui laisse le temps à une version compromise ou défectueuse d'être retirée.

Pourquoi les majeures d'Expo sont exclues

Une version d'Expo SDK impose les versions de React Native, de React et de chaque module expo-*. Monter l'un sans les autres casse la compilation native. Un changement de SDK se fait à la main, en suivant le guide de migration d'Expo, puis en vérifiant la configuration avec npx expo config --type public (lancé par la CI). Voir Builds et publication.

Contrôles de sécurité des dépendances

La CI lance npm audit --omit=dev sur les dépendances de production :

Projet Seuil bloquant
backend/, frontend-web/, mobile-app/ --audit-level=high
smart-contract/ --audit-level=critical, justifié dans l'ADR 0004

Les images de production (backend, web, tourisme) sont en plus analysées par Trivy, bloquant sur les vulnérabilités CRITICAL et HIGH corrigeables. La procédure complète est dans Dépendances et Chaîne logicielle.

Versions clés

Les briques présentées dans Choix techniques correspondent aux déclarations suivantes :

Brique Paquet Projet
Express 5 express backend
Prisma 7 prisma, @prisma/client, @prisma/adapter-pg backend
BullMQ bullmq backend
Redis ioredis backend
Socket.IO socket.io, socket.io-client backend, web, mobile
ethers v6 ethers backend, smart-contract
Hardhat 3 hardhat, @nomicfoundation/hardhat-toolbox-mocha-ethers smart-contract
OpenZeppelin 5 @openzeppelin/contracts smart-contract
Chainlink @chainlink/contracts smart-contract
Next.js 16, React 19 next, react, react-dom web
Tailwind 4 tailwindcss, @tailwindcss/postcss web
Redux Toolkit et RTK Query @reduxjs/toolkit, react-redux web, mobile
Expo et React Native expo, react-native mobile
Zod zod backend
TypeScript typescript tous les projets TypeScript

À savoir

Le backend déclare aussi le paquet redis en dépendance de production alors que le code n'importe que ioredis. Les dépendances de développement nodemon et ts-node ne servent qu'à backend/nodemon.json, qui exécute lui-même tsx ; les scripts npm run dev et npm run dev:worker utilisent directement tsx watch.

Dépendances déclarées par projet

Colonne « Version demandée » : la plage écrite dans package.json. La version installée exacte est dans le package-lock.json du projet.

Smart contracts

Fichier : smart-contract/package.json, Node.js >=22.12.0.

Paquet Version demandée Usage
@chainlink/contracts ^1.5.0 exécution
@openzeppelin/contracts ^5.6.1 exécution
@nomicfoundation/hardhat-toolbox-mocha-ethers ^4.0.0 développement
@nomicfoundation/hardhat-verify ^3.1.4 développement
@types/chai ^5.2.3 développement
@types/chai-as-promised ^8.0.2 développement
@types/mocha ^10.0.10 développement
@types/node ^22.20.5 développement
chai ^6.3.0 développement
ethers ^6.17.0 développement
forge-std https://github.com/foundry-rs/forge-std/archive/refs/tags/v1.17.0.tar.gz développement
hardhat ^3.21.2 développement
mocha ^12.0.3 développement
solhint ^6.2.5 développement
typescript ~6.0.3 développement

Backend

Fichier : backend/package.json, Node.js >=22.12.0.

Paquet Version demandée Usage
@aws-sdk/client-s3 ^3.1161.0 exécution
@aws-sdk/s3-request-presigner ^3.1161.0 exécution
@prisma/adapter-pg ^7.10.1 exécution
@prisma/client ^7.10.1 exécution
bcryptjs ^3.0.3 exécution
bullmq ^6.5.4 exécution
cors ^2.8.6 exécution
dotenv ^18.0.9 exécution
ethers ^6.17.0 exécution
express ^5.3.0 exécution
express-rate-limit ^8.7.3 exécution
google-auth-library ^11.3.4 exécution
helmet ^8.3.0 exécution
ioredis ^6.0.0 exécution
jose ^6.2.17 exécution
jsonwebtoken ^9.0.3 exécution
nodemailer ^10.3.1 exécution
otplib ^13.6.0 exécution
pg ^8.23.1 exécution
prom-client ^15.1.3 exécution
qrcode ^1.5.4 exécution
rate-limit-redis ^6.0.2 exécution
redis ^6.3.1 exécution
socket.io ^4.8.4 exécution
swagger-jsdoc ^6.3.0 exécution
swagger-ui-express ^5.0.1 exécution
winston ^3.19.0 exécution
zod ^4.6.7 exécution
@eslint/js ^10.0.1 développement
@types/bcryptjs ^3.0.0 développement
@types/cors ^2.8.19 développement
@types/express ^5.0.6 développement
@types/jest ^30.0.0 développement
@types/jsonwebtoken ^9.0.10 développement
@types/node ^26.6.6 développement
@types/nodemailer ^8.0.2 développement
@types/pg ^8.23.1 développement
@types/qrcode ^1.5.6 développement
@types/supertest ^7.2.1 développement
@types/swagger-jsdoc ^6.0.4 développement
@types/swagger-ui-express ^4.1.8 développement
eslint ^10.14.0 développement
globals ^17.14.0 développement
jest ^30.5.2 développement
nodemon ^3.1.14 développement
prisma ^7.10.1 développement
supertest ^7.3.1 développement
ts-jest ^29.4.15 développement
ts-node ^10.9.2 développement
tsx ^4.23.15 développement
typescript ^6.0.3 développement
typescript-eslint ^8.72.2 développement

Frontend web

Fichier : frontend-web/package.json, Node.js >=22.12.0.

Paquet Version demandée Usage
@reduxjs/toolkit 2.14.0 exécution
next 16.4.5 exécution
react 19.3.1 exécution
react-dom 19.3.1 exécution
react-redux 9.3.1 exécution
socket.io-client 4.8.4 exécution
@tailwindcss/postcss 4.3.5 développement
@testing-library/jest-dom 7.0.1 développement
@testing-library/react 16.3.3 développement
@types/node 26.6.6 développement
@types/react 19.3.0 développement
@types/react-dom 19.3.0 développement
@vitejs/plugin-react 6.3.0 développement
eslint 10.14.0 développement
eslint-config-next 16.4.5 développement
jsdom 31.0.0 développement
tailwindcss 4.3.5 développement
typescript ~6.0.3 développement
vitest 5.1.0 développement

Application mobile

Fichier : mobile-app/package.json, Node.js >=22.12.0.

Paquet Version demandée Usage
@expo-google-fonts/inter ^0.4.2 exécution
@react-navigation/bottom-tabs ^7.21.0 exécution
@react-navigation/native ^7.5.1 exécution
@react-navigation/native-stack ^7.21.0 exécution
@reduxjs/toolkit ^2.11.2 exécution
axios ^1.9.0 exécution
expo ^58.0.22 exécution
expo-audio ~58.0.12 exécution
expo-auth-session ~58.0.18 exécution
expo-clipboard ~58.0.4 exécution
expo-crypto ~58.0.8 exécution
expo-font ~58.0.11 exécution
expo-image-picker ~58.0.10 exécution
expo-notifications ~58.1.7 exécution
expo-secure-store ~58.0.2 exécution
expo-status-bar ~58.0.4 exécution
expo-web-browser ~58.0.8 exécution
lottie-react-native ^7.2.2 exécution
react 19.3.0 exécution
react-dom 19.3.0 exécution
react-native 0.88.1 exécution
react-native-gesture-handler ~3.3.0 exécution
react-native-safe-area-context ~5.10.1 exécution
react-native-screens ~4.30.1 exécution
react-native-svg 15.16.0 exécution
react-native-web ^0.21.4 exécution
react-redux ^9.2.0 exécution
socket.io-client ^4.8.1 exécution
@babel/core ^7.26.0 développement
@types/react ~19.3.0 développement
eslint ^8.57.1 développement
eslint-config-universe ^12.1.0 développement
typescript ~6.0.3 développement

Documentation officielle

Fichier : documentation-officielle/package.json, Node.js >=22.12.0.

Paquet Version demandée Usage
highlight.js 11.12.0 développement
marked 18.2.0 développement
mermaid 12.3.0 développement
yaml 2.8.1 développement