Ingénieur logiciel, fullstack et DevSecOps. Je conçois, sécurise et déploie des produits web de bout en bout, du besoin métier à la production supervisée.
Conan Chavez
Quaerat possimus libero commodi aut et quae est rerum ullam animi ea expedita dolores quam
À propos

À propos
Conan Chavez, ingénieur logiciel. Dolor in enim nesciu
- Quaerat possimus libero commodi aut et quae est rerum ullam animi ea expedita dolores quam
- Expérience
- 1980 ans
- Basé à
- Incidunt aperiam ipsa incididunt esse veniam maiores
- Concevoir
- Développer
- Sécuriser
- Déployer
J’aime les systèmes qui tiennent leurs promesses : une architecture lisible, un code relu, une livraison automatisée et une sécurité pensée dès la conception, du premier atelier avec le métier jusqu’à la supervision en production.
02Approche
Du besoin à la production
Huit étapes, une seule boucle : celle du monogramme. Chaque étape renvoie à ce qui la prouve sur ce site.
-
01
Comprendre
Analyser le besoin métier et ses contraintes, puis le reformuler en exigences vérifiables.
Voir la preuve -
02
Concevoir
Modéliser les données, découper l’architecture en modules, justifier chaque choix technique.
Voir la preuve -
03
Développer
Des API sécurisées aux interfaces responsives : Django, NestJS, React, Flutter.
Voir la preuve -
04
Tester
Verrouiller par des tests le contrôle d’accès et chaque régression déjà rencontrée.
Voir la preuve -
05
Sécuriser
Authentification, contrôle d’accès par rôles, limitation de débit, secrets hors du code.
Voir la preuve -
06
Automatiser
Pipelines CI/CD : contrôles, construction de l’image et déploiement sans geste manuel.
Voir la preuve -
07
Déployer
Conteneurs Docker, orchestration Kubernetes, déploiement GitOps avec ArgoCD.
Voir la preuve -
08
Superviser
Sondes de santé, journaux exploitables et maintenance continue en production.
Voir la preuve
03Expertise
Du code à l’infrastructure
Une compétence transversale : concevoir l’application, l’industrialiser et la sécuriser, sans changer d’interlocuteur.
Outils maîtrisés
Liste tenue à jour depuis le tableau de bord ; elle alimente aussi le CV.
04DevSecOps
La sécurité est une étape, pas un audit final.
13 étapes, de la première ligne de code à la supervision. Pour chacune : la pratique et l’endroit où je l’ai réellement appliquée.
Étape 01 sur 13
Code source
Un code lisible, découpé et revu est la première barrière contre les défauts comme contre les failles.
Ce que je fais
- Modules à responsabilité claire, nommage explicite
- Validation stricte des entrées côté serveur
- Revue de code et mentorat
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteCode Django organisé en services, sélecteurs et vues ; validations et permissions contrôlées côté serveur.
Étape 02 sur 13
Git
L’historique est la source de vérité : chaque changement est traçable, revu et réversible.
Ce que je fais
- Une branche par fonctionnalité, fusion par merge request
- Messages de commit explicites
- Aucun secret versionné
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteBranches develop (recette) et main (production) : chaque push déclenche le pipeline GitLab.
Étape 03 sur 13
CI/CD
Chaque changement suit la même chaîne automatisée avant d’atteindre un environnement.
Ce que je fais
- Pipelines déclaratifs, versionnés avec le code
- Échec rapide : contrôles avant la construction
- Déploiement automatique par branche
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce sitePipeline GitLab CI : vérification du code Python, intégrité des fichiers statiques, complétude des traductions FR/EN/AR, puis déploiement.
Étape 04 sur 13
Build
Un artefact reproductible, construit une fois et promu d’environnement en environnement.
Ce que je fais
- Images multi-étapes, sans outils de compilation en production
- Dépendances figées
- Ressources compilées à la construction de l’image
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteImage Docker multi-étapes : traductions compilées et fichiers statiques collectés à la construction.
Étape 05 sur 13
Tests
Les tests verrouillent les comportements critiques et chaque régression déjà rencontrée.
Ce que je fais
- Contrôle d’accès vérifié sur toutes les routes sensibles
- Tests de non-régression ciblés
- Tests exécutés avant de livrer
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteSuite de tests Django : contrôle d’accès du tableau de bord, référencement, traductions, relais des médias, limitation de débit.
Étape 06 sur 13
Analyse statique
Détecter tôt ce qu’une relecture laisse passer : erreurs, références cassées, motifs dangereux.
Ce que je fais
- Vérification syntaxique systématique
- Contrôles d’intégrité automatisés
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteCompilation de tout le code Python et détection des références d’assets cassées à chaque pipeline.
Étape 07 sur 13
Dépendances
Chaque dépendance est une surface d’attaque : elle doit être connue, épinglée et justifiée.
Ce que je fais
- Versions épinglées
- Une dépendance n’est ajoutée que si elle est justifiée
- Mises à jour relues avant fusion
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteToutes les dépendances Python sont épinglées à la version près.
Étape 08 sur 13
Contrôles de sécurité
Authentification, autorisation et protection des points d’accès de l’API sont conçues dès l’architecture, pas ajoutées à la fin.
Ce que je fais
- Contrôle d’accès par rôles et défense en profondeur
- Limitation de débit sur les points sensibles
- Chiffrement, journal d’audit, secrets hors du code
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteContent-Security-Policy avec nonce, verrouillage après échecs de connexion, limitation de débit du formulaire de contact, HSTS, cookies sécurisés et contenus riches assainis.
Étape 09 sur 13
Conteneurisation
Le même environnement, du poste de développement à la production.
Ce que je fais
- Images minimales exécutées sans privilèges root
- Sondes de santé des conteneurs
- Secrets injectés à l’exécution, jamais dans l’image
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteConteneur exécuté sans privilèges root, sonde de santé HTTP, aucun secret dans l’image.
Étape 10 sur 13
Registry
Les images sont stockées, versionnées et tracées avant tout déploiement.
Ce que je fais
- Images étiquetées par version
- Accès au registre restreint
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Étape 11 sur 13
Déploiement
Déployer doit être banal : automatisé, répétable et réversible.
Ce que je fais
- GitOps : l’état désiré est versionné
- Recette avant production
- Retour arrière par version
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteDéploiement automatique par SSH puis Docker Compose : develop vers la recette, main vers la production.
Étape 12 sur 13
Orchestration
La plateforme garantit la disponibilité et la montée en charge des services.
Ce que je fais
- Déploiements déclaratifs
- Haute disponibilité
- Configuration distincte par environnement
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Étape 13 sur 13
Observabilité
On ne corrige bien que ce que l’on voit : santé des services, journaux, alertes.
Ce que je fais
- Sondes de santé applicatives
- Journaux exploitables, sans données sensibles
Preuves
Aucun outil de cette étape n’est encore cité dans une expérience publiée.
Sur ce siteSondes de santé Docker et journaux applicatifs sur la sortie standard.
Architecture de ce site
Le reverse proxy assure la terminaison TLS. Django impose HSTS et une CSP à nonce, et limite le débit des formulaires.
Les médias restent dans un bucket privé : Django les transmet en flux, avec un cache immuable et la prise en charge des requêtes partielles.
Chaque push déclenche la CI GitLab : elle vérifie le code, puis déploie l’image Docker sur le serveur.
En ligne de commande
Extraits commentés des opérations de ce site. Démonstration statique : rien n’est exécuté depuis cette page.
Faites défiler : les onglets se succèdent.
# Mettre le serveur à jour sur la branche poussée
ssh -p "$SERVER_PORT" "$SERVER_USER@$SERVER_IP" \
"cd $APP_DIR && git fetch origin && git reset --hard origin/$CI_COMMIT_REF_NAME"
# Reconstruire l’image et remplacer le conteneur
docker compose build --no-cache
docker compose up -d --force-recreate --remove-orphans
# La sonde de santé du conteneur interroge l’application
curl -fsS http://localhost:8000/ > /dev/null && echo ok
# État des services et journaux récents
docker compose ps
docker compose logs --since 10m django
# Audit de la configuration avant mise en production
python manage.py check --deploy
# En-têtes de sécurité réellement servis
curl -sI "$SITE_URL/fr/" | grep -iE '^(strict-transport|content-security|x-content-type)'
Les variables ($SERVER_IP, $APP_DIR…) sont fournies par la CI : aucun secret n’apparaît dans le dépôt.
05Projets
Projets sélectionnés
Des réalisations présentées comme des études de cas : contexte, architecture, sécurité et livraison.
Aucun projet trouvé pour cette catégorie.
Les projets publiés apparaîtront ici.
06Parcours
Parcours
Chaque mission détaille le contexte, les responsabilités et les technologies réellement utilisées.
Diplômes et certifications
07Galerie
Sur le terrain
Conférences, ateliers, mentorat : les moments où le travail se partage.
Les activités publiées apparaîtront ici.
08Journal
Journal
Articles, mémoires et documents : ce que j’apprends et documente en chemin.
Aucune publication pour le moment.
09Contact
Parlons de votre projet
CDI, mission freelance, partenariat technique ou simple question : je réponds personnellement à chaque message.