Skip to content

Developpement ​

Prérequis ​

  • Node.js ≥ 23
  • npm ≥ 11

Structure du projet ​

Source du projet uniquement disponible dans la branche dev.

Racine/
├── backend/           # Serveur Express (API + serveur du frontend buildé)
├── frontend/          # Sources Vue.js (développement du frontend)
└── docs/              # Documentation github (https://thanatos-vf-2000.github.io/sap-devsec-scanner/)

Cloner le dépôt ​

bash
git clone https://github.com/thanatos-vf-2000/sap-devsec-scanner.git
cd sap-devsec-scanner
git switch dev

Installer les dépendances backend ​

bash
cd backend
npm install

Installer les dépendances frontend ​

bash
cd frontend
npm install

Mode développement - Frontend ​

Information

Utiliser la variable d'environnement ENABLE_DEVTOOLS à true pour activer Vue DevTools (http://localhost:5173/__devtools__/).

export ENABLE_DEVTOOLS=true

bash
cd frontend
npm run dev
# → http://localhost:5173

Mode développement - Backend ​

bash
# Build - Frontend Vue
cd frontend
npm run build

# Start - Backend
cd backend
npm run dev
# → http://localhost:3001

Gestion des langues ​

L'interface est automatiquement affichée en français ou en anglais selon la langue configurée dans le navigateur.

Frontend (Vue.js) ​

La détection se fait au chargement via navigator.language dans src/i18n/index.js :

js
function detectLang() {
  const lang = navigator.language || navigator.userLanguage || 'en';
  return lang.toLowerCase().startsWith('fr') ? 'fr' : 'en';
}

Toutes les chaînes de l'interface sont centralisées dans ce fichier. Pour ajouter une langue :

  1. Ajouter un bloc xx: { ... } dans messages
  2. Étendre la logique detectLang()

Backend (Express.js) ​

Le backend détecte la langue via l'en-tête HTTP Accept-Language (envoyé automatiquement par le navigateur) :

js
app.use((req, res, next) => {
  const acceptLang = req.headers['accept-language'] || '';
  const isFrench = acceptLang.toLowerCase().split(',').some(lang =>
    lang.trim().startsWith('fr')
  );
  req.lang = isFrench ? 'fr' : 'en';
  req.t = i18n[req.lang];
  next();
});

Les messages d'erreur API sont traduits via backend/utils/i18n.js.

Contribution ​

Les contributions sont les bienvenues ! Pour proposer une amélioration :

  1. Forker le dépôt branche dev
  2. Créer une branche (git checkout -b feature/ma-feature)
  3. Commiter vos changements (git commit -m 'feat: ajouter ...')
  4. Pousser la branche (git push origin feature/ma-feature)
  5. Ouvrir une Pull Request

Open-source project - Apache-2.0 license