diff --git a/README.md b/README.md index a78bb32..3a4bf56 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +[![Release](https://img.shields.io/badge/release-v0.2-blue.svg)] [![Dev](https://img.shields.io/badge/dev-v0.3-green.svg)] + + # 📦 StackPulse **StackPulse** ist eine kleine Web-App, die über die Portainer-API deine Docker-Stacks verwaltet und aktualisiert. @@ -25,7 +28,7 @@ Ziel:
- ^|^e v0.2.0 – In Entwicklung + ✅ v0.2.0 – Release ### Backend - [x] Anbindung einer SQLite-Datenbank @@ -54,7 +57,6 @@ Ziel:
- --- ## 🗂️ Projektstruktur @@ -62,6 +64,8 @@ Ziel: ```bash stackpulse/ ├── backend/ # Node.js Backend mit Express +│ └── data # SQlite Datenbank +│ └── db # Datenbank-Integration ├── frontend/ # React Frontend mit Tailwind ├── scripts/ # Lokale Hilfsskripte (nicht Teil des Images) │ └── start-dev.sh #Skript für den lokalen Start @@ -102,6 +106,18 @@ services: - STACK_SELF_ID=ID_deiner_stackpulse_ID ``` +Die PORTAINER_ENDPOINT_ID erhältst du, wenn du die die URL im Browser ansiehst, wenn du das Dashboard in Portainer öffnest: + +![PORTAINER_ENDPOINT_ID](assets/images/ENDPOINT_ID.png) + +Die 3 wäre in diesem Fall Endpoint-ID. + +Die STACK_SELF_ID findest du, wenn du das Frontend von StackPulse öffnest: + +![SELF_STACK_ID](assets/images/SELF_STACK_ID.png) + +Diese ID kann erst nach dem Deploy von Stackpulse ausgelesen werden. Vergiss daher nicht, nach dem Hinterlegen der ID in den Variablen das Stack noch einmal zu redeployen! + --- ## 📋 Voraussetzungen diff --git a/assets/images/ENDPOINT_ID.png b/assets/images/ENDPOINT_ID.png new file mode 100644 index 0000000..fea20e6 Binary files /dev/null and b/assets/images/ENDPOINT_ID.png differ diff --git a/assets/images/SELF_STACK_ID.png b/assets/images/SELF_STACK_ID.png new file mode 100644 index 0000000..24978de Binary files /dev/null and b/assets/images/SELF_STACK_ID.png differ diff --git a/frontend/src/Stacks.jsx b/frontend/src/Stacks.jsx index d96e3fe..ff7f9f6 100644 --- a/frontend/src/Stacks.jsx +++ b/frontend/src/Stacks.jsx @@ -17,7 +17,8 @@ export default function Stacks() { return { ...stack, redeploying: previous?.redeploying || stack.redeploying || false, - redeployDisabled: stack.redeployDisabled ?? previous?.redeployDisabled ?? false + redeployDisabled: stack.redeployDisabled ?? previous?.redeployDisabled ?? false, + duplicateName: stack.duplicateName ?? previous?.duplicateName ?? false }; }); }; @@ -94,9 +95,6 @@ export default function Stacks() { }; const handleRedeploy = async (stackId) => { - const targetStack = stacks.find((stack) => stack.Id === stackId); - if (targetStack?.redeployDisabled) return; - setSelectedStackIds((prev) => prev.filter((id) => id !== stackId)); setStacks((prev) => prev.map((stack) => @@ -254,6 +252,9 @@ export default function Stacks() {

{stack.Name}

ID: {stack.Id}

+ {stack.duplicateName && ( +

⚠️ Doppelter Name erkannt

+ )}
@@ -275,8 +276,6 @@ export default function Stacks() { ) : ( <> - Status - Veraltet