ExtMig
Outil CLI open-source pour automatiser et simplifier les workflows de migration de base de données pour les projets TypeScript.
Un outil de développement open-source conçu pour améliorer les workflows de migration et la productivité des équipes de développement modernes.
ExtMig est un outil CLI open-source conçu pour simplifier et automatiser les workflows de migration dans les projets Node.js basés sur TypeScript. Né de la friction liée à la gestion manuelle des migrations de bases de données entre environnements, ExtMig offre aux développeurs une méthode structurée et reproductible pour exécuter, suivre et annuler des migrations depuis une seule commande.
Le projet a été construit avec un fort accent sur l'expérience développeur — configuration TypeScript-first, sortie CLI claire et architecture extensible qui s'intègre aux chaînes d'outils existantes sans imposer une configuration spécifique.
Publié ouvertement sur GitHub, ExtMig témoigne d'un engagement à construire des outils qui résolvent de vrais problèmes dans de vrais workflows de développement, et à contribuer à la communauté open-source.
Fonctionnalités clés
Exécution automatisée des migrations
Exécutez, annulez et testez vos migrations depuis une seule commande CLI avec une sortie claire et une gestion des erreurs.
Configuration TypeScript-first
Les fichiers de configuration et de migration sont écrits en TypeScript, avec sécurité de typage complète et support IDE.
Système de plugins extensible
Ajoutez des hooks personnalisés avant et après chaque étape de migration pour s'intégrer à votre chaîne d'outils existante.
Rollback sécurisé
Chaque migration définit une fonction up et down, permettant des rollbacks propres et prévisibles en développement et en production.
Stack technique
Architecture
ExtMig est structuré comme un CLI Node.js avec une architecture basée sur des plugins. Chaque étape de migration est représentée comme une unité atomique, permettant le rollback et le support dry-run. L'outil lit la configuration depuis un fichier local extmig.config.ts et résout les fichiers de migration dans l'ordre.
Défis & Solutions
Les problèmes complexes — et comment je les ai résolus.
Garantir un rollback atomique sur plusieurs étapes
La partie la plus difficile était de concevoir le moteur d'exécution pour que si une étape échoue, l'ensemble du lot soit annulé proprement. Résolu en encapsulant toutes les étapes dans une limite de transaction et en construisant une machine à états interne.
Résolution de configuration TypeScript au runtime
Charger un fichier extmig.config.ts au runtime nécessitait une compilation dynamique avec ts-node/esm. Gérer les formats CJS et ESM sans forcer l'utilisateur à reconfigurer son projet était un défi de compatibilité non trivial.
Plus de projets
Masroufi
Une plateforme mobile de recrutement complète construite avec Flutter en Clean Architecture et BLoC, supportant trois rôles utilisateurs distincts.
Cat'aloge
Une application mobile alimentée par l'IA qui scanne automatiquement votre galerie et organise les photos d'animaux grâce à une inférence TensorFlow Lite entièrement on-device.
Accident Risk Navigator
Une plateforme IA full-stack qui prédit le risque d'accident en fonction des conditions routières et météorologiques, et visualise les zones à risque sur des cartes interactives.
Intéressé par une collaboration ?
Je suis toujours ouvert à discuter de nouveaux projets et opportunités.