From 2bd77c0329796aa020e7eb43db24335f300aad7b Mon Sep 17 00:00:00 2001 From: Stevan Freeborn Date: Wed, 29 Jul 2026 16:29:22 -0500 Subject: [PATCH] chore: add VS Code workspace configuration for debugging and tasks --- .vscode/extensions.json | 9 ++++ .vscode/launch.json | 55 ++++++++++++++++++++++++ .vscode/settings.json | 3 ++ .vscode/tasks.json | 93 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 160 insertions(+) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..489ccc8 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "Vue.volar", + "ms-dotnettools.csharp", + "ms-dotnettools.vscode-dotnet-runtime", + "ms-azuretools.vscode-docker", + "tamasfe.even-better-toml" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..564675f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,55 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Backend", + "type": "coreclr", + "request": "attach", + "processId": "${command:pickRemoteProcess}", + "pipeTransport": { + "pipeProgram": "docker", + "pipeArgs": ["exec", "-i", "paragonplayground-backend"], + "debuggerPath": "/vsdbg/vsdbg", + "pipeCwd": "${workspaceFolder}", + "quoteArgs": false + }, + "preLaunchTask": "docker-compose up (backend only)", + "sourceFileMap": { + "/src/src/ParagonPlayground.Api": "${workspaceFolder}/src/ParagonPlayground/backend/src/ParagonPlayground.Api", + "/src/src/ParagonPlayground.Domain": "${workspaceFolder}/src/ParagonPlayground/backend/src/ParagonPlayground.Domain", + "/src/src/ParagonPlayground.Infrastructure": "${workspaceFolder}/src/ParagonPlayground/backend/src/ParagonPlayground.Infrastructure" + }, + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "logging": { + "moduleLoad": false + } + }, + { + "name": "Attach to Frontend", + "type": "chrome", + "request": "launch", + "url": "${input:frontendUrl}", + "webRoot": "${workspaceFolder}/src/ParagonPlayground/frontend/src", + "sourceMapPathOverrides": { + "/app/src/*": "${webRoot}/*", + "webpack:///src/*": "${webRoot}/*" + } + }, + { + "name": "Attach to All", + "type": "compound", + "preLaunchTask": "docker-compose up", + "configurations": ["Attach to Backend", "Attach to Frontend"] + } + ], + "inputs": [ + { + "id": "frontendUrl", + "type": "promptString", + "description": "Full URL (e.g. https://myorg.paragonplayground.localhost)", + "default": "https://myorg.paragonplayground.localhost" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d917517 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "FSharp.suggestGitignore": false +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..7dd5533 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,93 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "docker-compose up", + "type": "shell", + "command": "docker compose -f docker-compose.dev.yml up -d --build", + "options": { + "cwd": "${workspaceFolder}/src/ParagonPlayground" + }, + "problemMatcher": [], + "group": "none", + "detail": "Build and start all services (Vite dev server runs in Docker on port 3000)" + }, + { + "label": "docker-compose up (backend only)", + "type": "shell", + "command": "docker compose -f docker-compose.dev.yml up -d --build mongodb backend nginx", + "options": { + "cwd": "${workspaceFolder}/src/ParagonPlayground" + }, + "problemMatcher": [], + "group": "none", + "detail": "Backend only (no frontend container — port 3000 free for local Vite dev)" + }, + { + "label": "docker-compose down", + "type": "shell", + "command": "docker compose -f docker-compose.dev.yml down", + "options": { + "cwd": "${workspaceFolder}/src/ParagonPlayground" + }, + "problemMatcher": [], + "group": "none", + "detail": "Stop and remove all services" + }, + { + "label": "docker-compose restart", + "type": "shell", + "command": "docker compose -f docker-compose.dev.yml restart", + "options": { + "cwd": "${workspaceFolder}/src/ParagonPlayground" + }, + "problemMatcher": [], + "group": "none", + "detail": "Restart all services" + }, + { + "label": "build backend", + "type": "shell", + "command": "dotnet build backend/ParagonPlayground.slnx --configuration Debug", + "options": { + "cwd": "${workspaceFolder}/src/ParagonPlayground" + }, + "problemMatcher": "$msCompile", + "group": "build", + "detail": "Build the .NET solution" + }, + { + "label": "test backend", + "type": "shell", + "command": "dotnet test backend/ParagonPlayground.slnx --configuration Debug --no-build --verbosity normal", + "options": { + "cwd": "${workspaceFolder}/src/ParagonPlayground" + }, + "problemMatcher": "$msCompile", + "group": "test", + "detail": "Run .NET tests" + }, + { + "label": "install dependencies", + "type": "shell", + "command": "scripts/install.ps1", + "options": { + "cwd": "${workspaceFolder}/src/ParagonPlayground" + }, + "problemMatcher": [], + "group": "none", + "detail": "Restore .NET packages and install npm dependencies" + }, + { + "label": "clean backend", + "type": "shell", + "command": "dotnet clean backend/ParagonPlayground.slnx && Get-ChildItem -Path backend -Include bin,obj -Recurse -Directory | Remove-Item -Recurse -Force", + "options": { + "cwd": "${workspaceFolder}/src/ParagonPlayground" + }, + "problemMatcher": [], + "group": "none", + "detail": "Clean .NET build artifacts" + } + ] +}