Das Projekt wurde von einer einzelnen Next.js-Anwendung in ein Turborepo Monorepo mit pnpm Workspaces umstrukturiert. Vor der Migration wurde geteilte Logik (Utilities, UI-Komponenten, E-Mail-Templates) zwischen den Anwendungen per Copy-Paste übertragen. Änderungen mussten manuell dupliziert werden, und Versionsabweichungen waren unvermeidlich.
Nach der Migration lebt geteilter Code in dedizierten Packages mit scoped Exports. Eine Utility-Funktion wird einmal geschrieben und konsistent über alle Anwendungen hinweg importiert:
// Vorher: per Copy-Paste in jede App
import { cn } from '@/lib/utils'
// Nachher: Single Source of Truth
import { cn } from '@nextsaasai/utils'
Das Build-System nutzt Turborepos Task-Graph, um Builds zu parallelisieren und Ergebnisse zu cachen. Geteilte Packages werden zuerst gebaut, anschließend binden die Anwendungen sie als Workspace-Dependencies ein. Die Kundenauslieferung bewahrt die vollständige Monorepo-Struktur – Kunden erhalten dasselbe Workspace-Layout, das auch in der Entwicklung verwendet wird.
Dies ist ein Minor-Version-Bump auf 0.3.0, da die Migration die grundlegende Struktur des Projekts, die Import-Pfade und die Build Pipeline verändert.