{ "name": "Seclore n8n Development", "image": "mcr.microsoft.com/devcontainers/javascript-node:1-20-bullseye", "features": { "ghcr.io/devcontainers/features/git:1": {}, "ghcr.io/devcontainers/features/github-cli:1": {} }, "customizations": { "vscode": { "extensions": [ // TypeScript and JavaScript "ms-vscode.vscode-typescript-next", "bradlc.vscode-tailwindcss", "esbenp.prettier-vscode", "dbaeumer.vscode-eslint", // Node.js specific "ms-vscode.vscode-node-azure-pack", "christian-kohler.npm-intellisense", "eg2.vscode-npm-script", "leizongmin.node-module-intellisense", // General development "ms-vscode.vscode-json", "redhat.vscode-yaml", "ms-vscode.hexdump", "ms-vscode.vscode-markdown", // Git and version control "mhutchie.git-graph", "eamodio.gitlens", // API and REST "humao.rest-client", "rangav.vscode-thunder-client", // Utilities "formulahendry.auto-rename-tag", "streetsidesoftware.code-spell-checker", "ms-vscode.vscode-todo-highlight", "gruntfuggly.todo-tree", // Docker (for n8n) "ms-azuretools.vscode-docker" ], "settings": { "typescript.preferences.includePackageJsonAutoImports": "on", "typescript.suggest.autoImports": true, "typescript.updateImportsOnFileMove.enabled": "always", "editor.formatOnSave": true, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit", "source.organizeImports": "explicit" }, "files.associations": { "*.json": "jsonc" }, "npm.enableScriptExplorer": true, "npm.scriptExplorerAction": "run" } } }, "forwardPorts": [5678, 3000, 8080], "portsAttributes": { "5678": { "label": "n8n", "onAutoForward": "notify" }, "3000": { "label": "Development Server", "onAutoForward": "notify" }, "8080": { "label": "Alternative Port", "onAutoForward": "ignore" } }, "postCreateCommand": ".devcontainer/post-create.sh", "remoteUser": "node", "mounts": [ "source=${localWorkspaceFolder}/.n8n,target=/home/node/.n8n,type=bind,consistency=cached" ] }