Pages générées
714
Pages statiques générées après l’ajout des expertises, outils et routes localisées.
Preuve d’ingénierie
Cette page expose la logique technique derrière la plateforme : architecture web, backend NestJS, qualité, tests, opérations, SEO, i18n et discipline de livraison.
Pages générées
714
Pages statiques générées après l’ajout des expertises, outils et routes localisées.
Langues actives
6
Français, anglais, arabe, espagnol, allemand et néerlandais avec routes dédiées.
Chaîne qualité
Typecheck + Build
Validation frontend systématique avant de figer les changements.
Backend quality is module-owned.
Each serious module can expose its own perf, contract, unit, integration, E2E, smoke, security and mutation phases.
Carte système
La preuve ne vient pas d’une seule page. Elle vient de l’ensemble : site public, API, admin, documentation, outils, contenus localisés et qualité.
Next.js, routes localisées, SEO, sitemap, pages expertise et documentation.
API NestJS pour contact, chatbot, analytics, communication et workflows produit.
Supervision future des demandes, conversations, logs, statistiques et opérations.
Packs développeur, scripts, passerelle SMS transactionnelle et IA locale.
Backend proof
L’objectif est de montrer la capacité à structurer des modules, contrats, validations, flux métier, sécurité et intégrations sans transformer le projet en vitrine fragile.
NestJS
Modules, services, DTOs, guards, validation et contrats API maintenables.
Prisma
Modèles, transactions, contraintes et séparation claire entre domaine et stockage.
Realtime
Chat, support, notifications et interfaces admin reliées à l’état réel du système.
Communication
Canaux transactionnels conçus avec limites, logs, sécurité et usages précis.
Controller receives a public operation through a documented route.
class-validator, Swagger metadata and ValidationPipe must stay aligned.
Access rules, JWT context, throttling and role checks protect the boundary.
Business rules are isolated, testable and protected by explicit branches.
Transactions, constraints and persistence shape are verified by tests.
Schemathesis, smoke, ZAP, k6 and Stryker expose behavior from outside.
Méthode backend
NestJS, Spring Boot, Python, Go ou .NET : le principe reste le même. Comprendre, verrouiller, améliorer, mesurer, durcir, puis documenter.
Lire les routes, DTOs, guards, services, accès base de données, erreurs et contrats publics.
Comprendre le système avant de le modifier.
Clarifier les responsabilités sans réécrire le produit ni casser le comportement existant.
Réduire la dette sans créer une migration risquée.
Verrouiller les comportements existants avec des tests simples mais utiles.
Créer un filet de sécurité avant les corrections profondes.
Tester les branches, erreurs, limites, transactions, null, undefined et chemins d’exception.
Attaquer les angles morts que les tests superficiels ignorent.
Valider les frontières réelles entre API, authentification, base de données et services.
Prouver que le comportement fonctionne hors isolation.
Mesurer la latence, concurrence, contention DB, N+1, throttling, mémoire et chemins lents.
Identifier ce qui casse quand le backend n’est plus seul.
Utiliser OpenAPI et Schemathesis pour confronter le contrat public au comportement réel.
Corriger DTOs, Swagger, ValidationPipe et réponses documentées.
Ajouter smoke checks, ZAP, logs et vérifications runtime sur les comportements exposés.
Observer le système comme il tourne réellement.
Utiliser Stryker pour vérifier que les tests tuent les changements de comportement.
Mesurer la force des tests, pas seulement leur couverture.
Garder les commandes, rapports, runners et décisions dans une forme réutilisable.
Rendre la qualité transmissible à l’équipe et au futur projet.
Définition des tests
La qualité backend n’est pas une pile de dossiers. Chaque phase répond à une question précise : est-ce correct, intégré, documenté, robuste, sécurisé et capable de résister au changement ?
Vérifie le typage, ESLint, Prettier, le build et les hooks Git avant de faire confiance au runtime.
When
Avant toute suite lourde, avant commit, avant push et avant d’analyser des erreurs plus complexes.
Why
Husky, ESLint et Prettier évitent de laisser entrer du bruit dans le dépôt : format cassé, dette de style, erreurs statiques ou build invalide.
Mesure la latence, le taux d’erreur, la concurrence et les limites visibles quand l’API reçoit de la charge.
When
Avant de valider un module exposé, après un refactor sensible ou quand un endpoint touche la base de données.
Why
Un backend peut être fonctionnel en test unitaire mais lent, instable ou dangereux sous concurrence.
Attaque automatiquement les endpoints à partir du contrat OpenAPI publié par l’application.
When
Après avoir stabilisé les DTOs, Swagger, ValidationPipe et les statuts HTTP documentés.
Why
Révèle les écarts entre documentation, validation réelle et réponses envoyées aux clients.
Isole une décision métier, un DTO, un service, un guard ou un mapper pour vérifier ses branches.
When
Au début du durcissement, avant les refactors profonds, et pour tuer les mutants Stryker.
Why
Verrouille les règles importantes sans dépendre du réseau, de la base ou de tout le module.
Vérifie les frontières réelles entre modules, providers, transactions, base de données et services.
When
Quand la logique dépend de Prisma, d’un repository, d’une transaction ou d’une composition de services.
Why
Attrape les erreurs que les tests unitaires masquent avec des mocks trop optimistes.
Teste un parcours API complet depuis la requête HTTP jusqu’au comportement produit attendu.
When
Pour les flows critiques : auth, contact, admin, support, paiement, notification ou onboarding.
Why
Prouve que les couches controller, validation, auth, service et réponse fonctionnent ensemble.
Vérifie rapidement que le système lancé répond et que les chemins critiques ne sont pas cassés.
When
Après build, déploiement local, changement d’environnement ou avant de lancer des tests plus lourds.
Why
Évite de lancer une suite coûteuse contre une API morte, mal configurée ou non joignable.
Observe la surface HTTP exposée pour détecter des signaux de sécurité basiques ou des mauvaises réponses.
When
Sur les endpoints publics, admin, auth ou toute route exposée à des utilisateurs externes.
Why
Complète les tests fonctionnels avec une vision runtime de la surface attaquable.
Modifie le code automatiquement pour vérifier si les tests détectent les changements de comportement.
When
Après une bonne couverture unit/integration, quand on veut mesurer la force réelle des tests.
Why
Une couverture à 100% ne suffit pas ; Stryker vérifie que les assertions protègent vraiment le métier.
portfolio-api/test
Each backend module owns the same quality surface, from contract checks to mutation testing, with a dedicated global runner and local README.
Load, latency and concurrency baseline.
OpenAPI contract attack against real endpoints.
DTOs, services, guards, modules and branch decisions.
Database, providers and cross-service boundaries.
Real API flows through the application surface.
Runtime availability and critical path sanity checks.
Basic exposed security signals.
Stryker mutation strength and test robustness.
Sample modules already shaped with this convention
test/<module>/
├── 01-perf
├── 02-schemathesis
├── 03-unit
├── 04-integration
├── 05-e2e
├── 06-smoke
├── 07-zap
├── 08-mutation
├── scripts/run-<module>-global.sh
└── README.mdOne command can run the module quality chain with explicit toggles.
MODULE_NAME="admin-auth"RUN_ADMIN_AUTH_SCHEMATHESIS="${RUN_ADMIN_AUTH_SCHEMATHESIS:-true}"RUN_ADMIN_AUTH_SMOKE="${RUN_ADMIN_AUTH_SMOKE:-true}"RUN_ADMIN_AUTH_UNIT="${RUN_ADMIN_AUTH_UNIT:-true}"RUN_ADMIN_AUTH_INTEGRATION="${RUN_ADMIN_AUTH_INTEGRATION:-true}"RUN_ADMIN_AUTH_E2E="${RUN_ADMIN_AUTH_E2E:-true}"RUN_ADMIN_AUTH_MUTATION="${RUN_ADMIN_AUTH_MUTATION:-true}"OpenAPI is fetched from the running API, then attacked in Docker.
SCHEMA_FETCH_URL="${SCHEMA_FETCH_URL:-http://localhost:4002/api/docs-json}"SCHEMATHESIS_BASE_URL="${SCHEMATHESIS_BASE_URL:-http://host.docker.internal:4002}"SCHEMATHESIS_PATH_REGEX="${SCHEMATHESIS_PATH_REGEX:-^/api/v1/admin/auth/(login|refresh|logout|me)$}"docker run --rm --add-host=host.docker.internal:host-gateway \ ghcr.io/schemathesis/schemathesis:stable run openapi-admin-auth.jsonMutation score is a hard quality threshold, not a vanity metric.
{ "testRunner": "jest", "mutate": ["src/modules/admin-auth/**/*.ts"], "coverageAnalysis": "perTest", "thresholds": { "high": 100, "low": 100, "break": 100 }}Performance tests expose latency and failure-rate risks outside unit isolation.
export const options = { thresholds: { http_req_failed: ["rate<0.01"], checks: ["rate>0.99"], "http_req_duration{endpoint:health}": ["p(95)<250", "p(99)<500"], },};Outil → risque
La chaîne qualité n’est pas une accumulation de logos. Chaque étape a une raison précise et couvre un angle que les autres ne couvrent pas.
TypeScript
Détecte les incohérences de types avant le runtime, surtout dans les DTOs, services et contrats internes.
Unit tests
Verrouillent les règles importantes, les branches, les erreurs et les cas limites isolés.
Integration tests
Vérifient les interactions entre services, transactions, base de données et dépendances internes.
E2E tests
Valident les flows réels depuis l’endpoint jusqu’au comportement attendu côté produit.
k6
Expose les lenteurs, verrous, N+1, contention et comportements qui n’apparaissent pas en test isolé.
Schemathesis
Révèle les écarts entre Swagger, DTOs, ValidationPipe, statuts HTTP et réponses réelles.
ZAP
Repère les signaux de sécurité basiques visibles depuis l’extérieur du système.
Stryker
Prouve si la suite de tests détecte réellement les mutations de comportement.
Modèle de confiance
Ce graphe est un modèle pédagogique, pas une statistique scientifique. Il montre comment la confiance augmente quand la validation couvre davantage d’angles.
Le code compile et les erreurs évidentes sont réduites.
Les décisions métier principales commencent à être verrouillées.
Les frontières service/base/API deviennent plus sûres.
Les parcours réels sont validés de bout en bout.
Le contrat public est attaqué automatiquement.
Performance, smoke et sécurité runtime ajoutent une vision réelle.
La suite de tests prouve qu’elle détecte les changements dangereux.
Quality pipeline
Chaque étape doit réduire une catégorie de risque : typage, contrat, comportement métier, runtime, sécurité ou robustesse des tests.
01
Vérifier le typage, le formatage, les conventions et les erreurs évidentes avant runtime.
02
Tester les décisions métier, les intégrations et les parcours de bout en bout.
03
Attaquer les contrats API et vérifier que la documentation reflète le comportement réel.
04
Chercher activement les faiblesses au lieu de se contenter d’un build vert.
Ce que cela prouve
Cette page ne promet pas une perfection abstraite. Elle montre une méthode : structurer, vérifier, documenter, localiser, mesurer et refactoriser quand une limite apparaît.
Les pages, contenus, composants et routes sont séparés pour rester maintenables.
Les fichiers trop grands sont divisés au lieu d’être acceptés comme dette silencieuse.
Sitemap, canonical, hreflang et routes localisées sont traités comme des contrats publics.
Le site lui-même démontre le niveau attendu : contenu, UI, architecture et validations.
Preuve exploitable
Pour une mission backend, une reprise de projet ou une plateforme produit, cette page sert de point d’entrée technique.