{ "id": "6", "name": "Dashboard", "nodes": [ { "name": "Cron", "type": "n8n-nodes-base.cron", "position": [ -290, 180 ], "parameters": { "triggerTimes": { "item": [ { "mode": "everyMinute" } ] } }, "typeVersion": 1, "id": "node-7c1f8b6b" }, { "name": "Dashboard Configuration", "type": "n8n-nodes-base.set", "color": "#FF0000", "notes": "Update project settings", "position": [ -10, 180 ], "parameters": { "values": { "string": [ { "name": "dashboardHostname", "value": "http://192.168.0.14:8080" }, { "name": "dashboardAuthToken", "value": "n8n-rocks!" }, { "name": "product_hunt_post_id", "value": "170391" }, { "name": "npm_package", "value": "n8n" }, { "name": "docker_name", "value": "n8nio" }, { "name": "docker_repository", "value": "n8n" }, { "name": "github_owner", "value": "n8n-io" }, { "name": "github_repo", "value": "n8n" } ] }, "options": {} }, "notesInFlow": true, "typeVersion": 1, "id": "node-579e3274" }, { "name": "Retrieve Docker Data", "type": "n8n-nodes-base.httpRequest", "position": [ 260, 300 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "queryParametersUi": { "parameter": [] }, "headerParametersUi": { "parameter": [ { "name": "User-Agent", "value": "n8n" } ] } }, "typeVersion": 1, "id": "node-a7cebcd4" }, { "name": "Docker Pulls", "type": "n8n-nodes-base.httpRequest", "position": [ 630, 220 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "current", "value": "={{$node[\"Massage Docker Data\"].json[\"pull_count\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-3913b4fb" }, { "name": "Docker Stars", "type": "n8n-nodes-base.httpRequest", "position": [ 630, 400 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "current", "value": "={{$node[\"Massage Docker Data\"].json[\"star_count\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-3bbee4a4" }, { "name": "Retrieve npm Data", "type": "n8n-nodes-base.httpRequest", "position": [ 250, 50 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "headerParametersUi": { "parameter": [ { "name": "User-Agent", "value": "n8n" } ] } }, "typeVersion": 1, "id": "node-e8e30c55" }, { "name": "GitHub Watchers", "type": "n8n-nodes-base.httpRequest", "position": [ 820, 640 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "current", "value": "={{$node[\"Massage GitHub Data\"].json[\"subscribers_count\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-2e3cc906" }, { "name": "GitHub Forks", "type": "n8n-nodes-base.httpRequest", "position": [ 820, 800 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "current", "value": "={{$node[\"Massage GitHub Data\"].json[\"forks_count\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-3ea18d51" }, { "name": "GitHub Open Issues ", "type": "n8n-nodes-base.httpRequest", "position": [ 620, 860 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "current", "value": "={{$node[\"Massage GitHub Data\"].json[\"open_issues_count\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-ec1c459f" }, { "name": "GitHub Stars", "type": "n8n-nodes-base.httpRequest", "position": [ 620, 560 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "current", "value": "={{$node[\"Massage GitHub Data\"].json[\"stargazers_count\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-f07df746" }, { "name": "npm Maintenance", "type": "n8n-nodes-base.httpRequest", "position": [ 830, -90 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "value", "value": "={{$node[\"Massage npm Data\"].json[\"score\"][\"detail\"][\"maintenance\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-03218f2e" }, { "name": "npm Popularity", "type": "n8n-nodes-base.httpRequest", "position": [ 1030, 0 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "value", "value": "={{$node[\"Massage npm Data\"].json[\"score\"][\"detail\"][\"popularity\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-5a131b9f" }, { "name": "npm Quality", "type": "n8n-nodes-base.httpRequest", "position": [ 1030, 150 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "value", "value": "={{$node[\"Massage npm Data\"].json[\"score\"][\"detail\"][\"quality\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-7b5ce19f" }, { "name": "npm Final", "type": "n8n-nodes-base.httpRequest", "position": [ 830, 190 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "value", "value": "={{$node[\"Massage npm Data\"].json[\"score\"][\"final\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-dec75faf" }, { "name": "Product Hunt Rating", "type": "n8n-nodes-base.httpRequest", "position": [ 630, -510 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "value", "value": "={{$node[\"Retrieve Product Hunt Data\"].json[\"data\"][\"post\"][\"reviewsRating\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-96d0f362" }, { "name": "Product Hunt Reviews", "type": "n8n-nodes-base.httpRequest", "position": [ 830, -410 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "current", "value": "={{$node[\"Massage Product Hunt Data\"].json[\"data\"][\"post\"][\"reviewsCount\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-6f7052c4" }, { "name": "Product Hunt Votes", "type": "n8n-nodes-base.httpRequest", "position": [ 830, -260 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "current", "value": "={{$node[\"Massage Product Hunt Data\"].json[\"data\"][\"post\"][\"votesCount\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-7688d79d" }, { "name": "Product Hunt Comments", "type": "n8n-nodes-base.httpRequest", "position": [ 630, -210 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "bodyParametersUi": { "parameter": [ { "name": "auth_token", "value": "={{$node[\"Dashboard Configuration\"].json[\"dashboardAuthToken\"]}}" }, { "name": "current", "value": "={{$node[\"Massage Product Hunt Data\"].json[\"data\"][\"post\"][\"commentsCount\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "id": "node-0dd14b36" }, { "name": "GitHub", "type": "n8n-nodes-base.github", "color": "#FF0000", "position": [ 250, 710 ], "parameters": { "owner": "={{$node[\"Dashboard Configuration\"].json[\"github_owner\"]}}", "resource": "repository", "operation": "get", "repository": "={{$node[\"Dashboard Configuration\"].json[\"github_repo\"]}}" }, "credentials": { "githubApi": "" }, "typeVersion": 1, "id": "node-049da5c5" }, { "name": "Retrieve Product Hunt Data", "type": "n8n-nodes-base.httpRequest", "color": "#FF0000", "notes": "Update authorization token", "position": [ 250, -360 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "requestMethod": "POST", "queryParametersUi": { "parameter": [ { "name": "query", "value": "={\n post(id: {{$node[\"Dashboard Configuration\"].json[\"product_hunt_post_id\"]}}) {\n commentsCount\n votesCount\n reviewsCount\n reviewsRating\n name\n }\n}" } ] }, "headerParametersUi": { "parameter": [ { "name": "User-Agent", "value": "n8n" }, { "name": "authorization", "value": "Bearer " } ] } }, "notesInFlow": true, "typeVersion": 1, "id": "node-52a8d17f" }, { "name": "Massage npm Data", "type": "n8n-nodes-base.function", "position": [ 440, 50 ], "parameters": { "functionCode": "items[0].json.score.detail.maintenance = parseFloat(items[0].json.score.detail.maintenance.toFixed(2));\nitems[0].json.score.detail.popularity= parseFloat(items[0].json.score.detail.popularity.toFixed(2));\nitems[0].json.score.detail.quality= parseFloat(items[0].json.score.detail.quality.toFixed(2));\nitems[0].json.score.final= parseFloat(items[0].json.score.final.toFixed(2));\n\nreturn items;" }, "typeVersion": 1, "id": "node-04a85c51" }, { "name": "Massage Product Hunt Data", "type": "n8n-nodes-base.function", "position": [ 440, -360 ], "parameters": { "functionCode": "items[0].json.data.post.commentsCount = items[0].json.data.post.commentsCount.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\nitems[0].json.data.post.votesCount= items[0].json.data.post.votesCount.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\nitems[0].json.data.post.reviewsCount= items[0].json.data.post.reviewsCount.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n\nreturn items;\n" }, "typeVersion": 1, "id": "node-ab80de6b" }, { "name": "Massage Docker Data", "type": "n8n-nodes-base.function", "position": [ 460, 300 ], "parameters": { "functionCode": "items[0].json.star_count = items[0].json.star_count.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\nitems[0].json.pull_count = items[0].json.pull_count.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n\nreturn items;\n" }, "typeVersion": 1, "id": "node-958be9e9" }, { "name": "Massage GitHub Data", "type": "n8n-nodes-base.function", "position": [ 450, 710 ], "parameters": { "functionCode": "items[0].json.stargazers_count = items[0].json.stargazers_count.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\nitems[0].json.subscribers_count = items[0].json.subscribers_count.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\nitems[0].json.forks_count = items[0].json.forks_count.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\nitems[0].json.open_issues_count = items[0].json.open_issues_count.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n\nreturn items;" }, "typeVersion": 1, "id": "node-c06de3c9" }, { "id": "error-b1d8d59a", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [ 1000, 400 ], "parameters": { "message": "Workflow execution error", "options": {} } } ], "active": true, "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3 }, "connections": {}, "meta": { "instanceId": "workflow-174e4ee9", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:46.225750", "updatedAt": "2025-09-29T07:07:46.225760", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "description": "Production-ready workflow: Dashboard. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }