ExtMig
Open-Source-CLI-Tool zur Automatisierung und Vereinfachung von Datenbank-Migrations-Workflows für TypeScript-Projekte.
Ein Open-Source-Entwicklerwerkzeug zur Verbesserung von Migrations-Workflows und Produktivität für moderne Entwicklungsteams.
ExtMig ist ein Open-Source-CLI-Tool, das entwickelt wurde, um Migrations-Workflows in TypeScript-basierten Node.js-Projekten zu vereinfachen und zu automatisieren. Entstanden aus der Reibung bei der manuellen Verwaltung von Datenbankmigrationen zwischen Umgebungen, bietet ExtMig Entwicklern eine strukturierte, reproduzierbare Methode zum Ausführen, Verfolgen und Zurückrollen von Migrationen mit einem einzigen Befehl.
Das Projekt wurde mit starkem Fokus auf Entwicklererfahrung aufgebaut — TypeScript-first-Konfiguration, klare CLI-Ausgabe und eine erweiterbare Architektur, die sich in bestehende Toolchains integriert, ohne eine bestimmte Einrichtung zu erzwingen.
Offen auf GitHub veröffentlicht, spiegelt ExtMig das Engagement wider, Werkzeuge zu entwickeln, die echte Probleme in echten Entwicklungs-Workflows lösen, und zur Open-Source-Community beizutragen.
Hauptfunktionen
Automatisierte Migrationsausführung
Migrationen per einzigem CLI-Befehl ausführen, zurückrollen und testen – mit klarer Ausgabe und Fehlerbehandlung.
TypeScript-first Konfiguration
Konfigurations- und Migrationsdateien werden in TypeScript geschrieben – mit vollständiger Typsicherheit und IDE-Unterstützung.
Erweiterbares Plugin-System
Benutzerdefinierte Hooks vor und nach jedem Migrationsschritt hinzufügen, um sich in bestehende Toolchains zu integrieren.
Sicheres Rollback
Jede Migration definiert eine up- und down-Funktion für saubere und vorhersehbare Rollbacks in Entwicklung und Produktion.
Tech-Stack
Architektur
ExtMig ist als Node.js-CLI mit einer Plugin-basierten Architektur aufgebaut. Jeder Migrationsschritt wird als atomare Einheit dargestellt, was Rollback und Dry-Run-Unterstützung ermöglicht. Das Tool liest die Konfiguration aus einer lokalen extmig.config.ts-Datei und löst Migrationsdateien der Reihe nach auf.
Herausforderungen & Lösungen
Die schwierigen Probleme — und wie ich sie gelöst habe.
Atomares Rollback über mehrere Schritte sicherstellen
Die schwierigste Aufgabe war das Design der Ausführungs-Engine, sodass bei einem Fehler der gesamte Batch sauber zurückgerollt wird. Gelöst durch Transaction-Boundaries und eine interne State Machine.
TypeScript-Konfigurationsauflösung zur Laufzeit
Das Laden einer extmig.config.ts zur Laufzeit erforderte dynamische Kompilierung mit ts-node/esm. CJS- und ESM-Formate ohne erzwungene Neukonfiguration zu unterstützen war eine nicht-triviale Kompatibilitätsherausforderung.
Weitere Projekte
Masroufi
Eine vollständige mobile Recruiting-Plattform mit Flutter, Clean Architecture und BLoC, die drei verschiedene Benutzerrollen unterstützt.
Cat'aloge
Eine KI-gestützte mobile App, die automatisch Ihre Galerie durchsucht und Tierfotos mithilfe vollständig auf dem Gerät laufender TensorFlow Lite-Inferenz organisiert.
Accident Risk Navigator
Eine KI-Full-Stack-Plattform, die Unfallrisiken basierend auf Straßen- und Wetterbedingungen vorhersagt und Risikozonen auf interaktiven Karten visualisiert.
Interesse an einer Zusammenarbeit?
Ich bin immer offen für Gespräche über neue Projekte und Möglichkeiten.