Produkte (nicht einzelne Stacks) als primäre Einheit in der UI anzeigen. Multi-Stack Produkte zeigen ihre Sub-Stacks, die einzeln oder zusammen deployed werden können.
StackDefinitionerhältProductNameundProductDisplayNameProperties- Multi-Stack Stacks haben den Produkt-Namen gesetzt
- Single-Stack Stacks: ProductName = StackName
GroupStacksIntoProducts()gruppiert nachProductName
Vorteile:
- Minimale Änderungen am bestehenden Code
- Stacks bleiben die primäre Cache-Einheit
- Rückwärtskompatibel
// Neue Properties hinzufügen:
public string? ProductName { get; } // Name des Parent-Produkts (für Multi-Stack)
public string? ProductDisplayName { get; } // Anzeigename des Produkts
public string? ProductDescription { get; } // Beschreibung des Produkts
public string? ProductVersion { get; } // Version des Produkts
public string? Category { get; } // Kategorie (Database, Web, etc.)
public IReadOnlyList<string> Tags { get; } // Tags für Suche/Filter
// Konstruktor erweiternCreateStackDefinitionsFromMultiStack(): Produkt-Info an jeden Sub-Stack übergebenLoadStacksFromFolderAsync(): Für Single-Stack Manifeste ProductName = StackName setzen
GroupStacksIntoProducts()komplett neu schreiben:- Gruppiere Stacks nach
ProductName - Erstelle ein
ProductDefinitionpro Gruppe - Nutze Produkt-Metadaten vom ersten Stack der Gruppe
- Gruppiere Stacks nach
GET /api/products/{productId}- Gibt Produkt-Details mit allen Stacks zurück
getProduct(productId)Funktion hinzufügen
- Zeigt Produkt-Header (Name, Description, Version, Category)
- Listet alle Stacks mit Services/Variables
- "Deploy" Button pro Stack
- "Deploy All" Button für gesamtes Produkt
- ProductCard: Multi-Stack Produkte → Link zu Detail-Seite statt Expand
- Oder: Modal für Produkt-Details (einfacher, kein Routing nötig)
- Route
/stacks/:productIdfür ProductDetail hinzufügen
- Modal das Produkt-Details zeigt
- Stacks-Liste mit Deploy-Buttons
- Einfacher als neue Route
- StackDefinition erweitern - Neue Properties + Konstruktor
- LocalDirectoryStackSourceProvider anpassen - Produkt-Info setzen
- GroupStacksIntoProducts neu schreiben - Korrekte Gruppierung
- Backend testen - Logs prüfen, API-Response validieren
- Frontend ProductDetailModal - Modal für Multi-Stack Produkte
- Stacks.tsx anpassen - Modal öffnen statt Expand
Nach Implementation:
- WordPress (Single-Stack): 1 Produkt mit 1 Stack, direkter Deploy-Button
- IdentityAccess (Multi-Stack): 1 Produkt mit 1 Stack (identity), "Details" öffnet Modal
- Modal zeigt Stack mit 4 Services, Deploy-Button
-
Deploy All: Wie soll "Deploy All" funktionieren?
- Sequentiell jeden Stack deployen?
- Paralleles Deployment?
- Ein kombiniertes docker-compose.yml generieren?
-
UI-Entscheidung: Modal oder eigene Seite für Produkt-Details?
- Modal: Einfacher, schneller implementiert
- Seite: Mehr Platz, bessere UX für komplexe Produkte
Phase 1 (jetzt):
- Modal für Produkt-Details
- Einzelne Stack-Deployments funktionieren
Phase 2 (später):
- "Deploy All" mit kombiniertem Compose
- Eigene Produkt-Detail-Seite wenn nötig