From 7a69dd0821cef8106b8a7d205e8033b64b2b9194 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 1 Oct 2025 18:52:09 +0000 Subject: [PATCH 1/4] Update --- README.md | 20 ++++++++++++++++++-- assets/images/ENDPOINT_ID.png | Bin 0 -> 13471 bytes assets/images/SELF_STACK_ID.png | Bin 0 -> 24643 bytes frontend/src/Stacks.jsx | 11 +++++------ 4 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 assets/images/ENDPOINT_ID.png create mode 100644 assets/images/SELF_STACK_ID.png 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 0000000000000000000000000000000000000000..fea20e617a45d1686b2da4876b1247773dbe6f5f GIT binary patch literal 13471 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 P%jhIUWkt$_^!@)IEM-1E literal 0 HcmV?d00001 diff --git a/assets/images/SELF_STACK_ID.png b/assets/images/SELF_STACK_ID.png new file mode 100644 index 0000000000000000000000000000000000000000..24978de22ba31c9b664b2f65ed7f3cfea6567334 GIT binary patch literal 24643 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 C$&H!- literal 0 HcmV?d00001 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