{ "folders": [+ { "name": "đŸ—“ī¸ Documents", "path": "./Documnets" }, { "name": "🔧 Backend", "path": "./backend" }, { "name": "🎨 Frontend", "path": "./frontend" }, { "name": "đŸŽ¯ Root", "path": "./" } ], "settings": { // ======================================== // EDITOR SETTINGS // ======================================== "editor.fontSize": 14, "editor.lineHeight": 1.6, "editor.rulers": [80, 120], "editor.minimap.enabled": true, "editor.renderWhitespace": "boundary", "editor.bracketPairColorization.enabled": true, "editor.guides.bracketPairs": "active", "editor.smoothScrolling": true, "editor.cursorBlinking": "smooth", "editor.cursorSmoothCaretAnimation": "on", "editor.wordWrap": "on", "editor.linkedEditing": true, "editor.formatOnSave": true, "editor.formatOnPaste": true, "editor.suggestSelection": "first", "editor.tabSize": 2, "editor.detectIndentation": true, // ======================================== // DEFAULT FORMATTER // ======================================== "editor.defaultFormatter": "esbenp.prettier-vscode", "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[javascriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[typescriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[jsonc]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[css]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[scss]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[markdown]": { "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.wordWrap": "on" }, "[yaml]": { "editor.defaultFormatter": "redhat.vscode-yaml" }, "[dockerfile]": { "editor.defaultFormatter": "ms-azuretools.vscode-docker" }, // ======================================== // CODE ACTION ON SAVE // ======================================== "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit", "source.organizeImports": "explicit", "source.addMissingImports": "explicit" }, // ======================================== // PRETTIER SETTINGS // ======================================== "prettier.singleQuote": true, "prettier.semi": true, "prettier.tabWidth": 2, "prettier.useTabs": false, "prettier.trailingComma": "es5", "prettier.printWidth": 80, "prettier.arrowParens": "always", "prettier.endOfLine": "lf", "prettier.bracketSpacing": true, "prettier.jsxSingleQuote": false, // ======================================== // ESLINT SETTINGS // ======================================== "eslint.enable": true, "eslint.validate": [ "javascript", "javascriptreact", "typescript", "typescriptreact" ], "eslint.alwaysShowStatus": true, "eslint.format.enable": false, "eslint.workingDirectories": ["./backend", "./frontend"], // ======================================== // PATH INTELLISENSE - āš„ā¸Ąāšˆā¸Ąā¸ĩ src folder // ======================================== "path-intellisense.mappings": { // Backend paths (āš„ā¸Ąāšˆā¸Ąā¸ĩ src) "@backend": "${workspaceFolder:🔧 Backend}", "@backend/*": "${workspaceFolder:🔧 Backend}/*", "@modules": "${workspaceFolder:🔧 Backend}/modules", "@common": "${workspaceFolder:🔧 Backend}/common", "@config": "${workspaceFolder:🔧 Backend}/config", "@utils": "${workspaceFolder:🔧 Backend}/utils", "@entities": "${workspaceFolder:🔧 Backend}/entities", "@dto": "${workspaceFolder:🔧 Backend}/dto", // Frontend paths (āš„ā¸Ąāšˆā¸Ąā¸ĩ src) "@": "${workspaceFolder:🎨 Frontend}", "@/*": "${workspaceFolder:🎨 Frontend}/*", "@components": "${workspaceFolder:🎨 Frontend}/components", "@hooks": "${workspaceFolder:🎨 Frontend}/hooks", "@utils": "${workspaceFolder:🎨 Frontend}/utils", "@lib": "${workspaceFolder:🎨 Frontend}/lib", "@types": "${workspaceFolder:🎨 Frontend}/types", "@api": "${workspaceFolder:🎨 Frontend}/api", "@styles": "${workspaceFolder:🎨 Frontend}/styles", "@assets": "${workspaceFolder:🎨 Frontend}/assets", "@store": "${workspaceFolder:🎨 Frontend}/store", "@contexts": "${workspaceFolder:🎨 Frontend}/contexts" }, "path-intellisense.autoSlashAfterDirectory": true, "path-intellisense.extensionOnImport": false, "path-intellisense.showHiddenFiles": false, // ======================================== // ERROR LENS // ======================================== "errorLens.enabled": true, "errorLens.enabledDiagnosticLevels": ["error", "warning"], "errorLens.padding": "0 1ch", "errorLens.messageTemplate": "$message", "errorLens.messageEnabled": true, // ======================================== // TAILWIND CSS // ======================================== "tailwindCSS.emmetCompletions": true, "tailwindCSS.colorDecorators": true, "tailwindCSS.suggestions": true, "tailwindCSS.includeLanguages": { "typescript": "javascript", "typescriptreact": "javascript" }, "tailwindCSS.experimental.classRegex": [ ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], ["cn\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], "class[Nn]ame\\s*=\\s*['\"`]([^'\"`]*)['\"`]" ], // ā¸Ŗā¸°ā¸šā¸¸ā¸—ā¸ĩāšˆā¸•ā¸ąāš‰ā¸‡ā¸‚ā¸­ā¸‡ tailwind.config (ā¸–āš‰ā¸˛ā¸Ąā¸ĩ) "tailwindCSS.experimental.configFile": { "frontend/tailwind.config.js": "frontend/**", "frontend/tailwind.config.ts": "frontend/**" }, // ======================================== // HEADWIND // ======================================== "headwind.runOnSave": true, // ======================================== // AUTO CLOSE/RENAME TAG // ======================================== "auto-close-tag.activationOnLanguage": [ "html", "xml", "javascript", "javascriptreact", "typescript", "typescriptreact" ], "auto-rename-tag.activationOnLanguage": [ "html", "xml", "javascript", "javascriptreact", "typescript", "typescriptreact" ], // ======================================== // BETTER COMMENTS // ======================================== "better-comments.tags": [ { "tag": "!", "color": "#FF2D00", "strikethrough": false, "backgroundColor": "transparent", "bold": true }, { "tag": "?", "color": "#3498DB", "strikethrough": false, "backgroundColor": "transparent" }, { "tag": "//", "color": "#474747", "strikethrough": true, "backgroundColor": "transparent" }, { "tag": "todo", "color": "#FF8C00", "strikethrough": false, "backgroundColor": "transparent" }, { "tag": "*", "color": "#98C379", "strikethrough": false, "backgroundColor": "transparent" } ], // ======================================== // TODO TREE // ======================================== "todo-tree.general.tags": ["TODO", "FIXME", "BUG", "HACK", "NOTE", "XXX"], "todo-tree.highlights.enabled": true, "todo-tree.tree.showInExplorer": true, "todo-tree.filtering.excludeGlobs": [ "**/node_modules", "**/dist", "**/build", "**/.next" ], "todo-tree.highlights.customHighlight": { "TODO": { "icon": "check", "iconColour": "#FF8C00", "foreground": "#FF8C00" }, "FIXME": { "icon": "alert", "iconColour": "#FF2D00", "foreground": "#FF2D00" }, "BUG": { "icon": "bug", "iconColour": "#FF2D00", "foreground": "#FF2D00" }, "NOTE": { "icon": "note", "iconColour": "#3498DB", "foreground": "#3498DB" } }, // ======================================== // GITLENS // ======================================== "gitlens.statusBar.enabled": true, "gitlens.currentLine.enabled": true, "gitlens.currentLine.format": "${author}, ${agoOrDate}", "gitlens.codeLens.enabled": true, "gitlens.codeLens.authors.enabled": false, "gitlens.hovers.enabled": true, // ======================================== // GIT // ======================================== "git.enabled": true, "git.autofetch": true, "git.autofetchPeriod": 180, "git.confirmSync": false, "git.enableSmartCommit": true, "git.openRepositoryInParentFolders": "always", // ======================================== // IMPORT COST // ======================================== "importCost.showCalculatingDecoration": true, "importCost.largePackageSize": 100, "importCost.mediumPackageSize": 50, "importCost.smallPackageSize": 20, // ======================================== // JAVASCRIPT/TYPESCRIPT // ======================================== "javascript.suggest.autoImports": true, "javascript.updateImportsOnFileMove.enabled": "always", "javascript.inlayHints.parameterNames.enabled": "all", "javascript.inlayHints.functionLikeReturnTypes.enabled": true, "javascript.preferences.importModuleSpecifier": "relative", "typescript.suggest.autoImports": true, "typescript.updateImportsOnFileMove.enabled": "always", "typescript.inlayHints.parameterNames.enabled": "all", "typescript.inlayHints.functionLikeReturnTypes.enabled": true, "typescript.preferences.importModuleSpecifier": "relative", "typescript.tsdk": "node_modules/typescript/lib", // ======================================== // EMMET // ======================================== "emmet.includeLanguages": { "javascript": "javascriptreact", "typescript": "typescriptreact" }, "emmet.triggerExpansionOnTab": true, // ======================================== // FILES // ======================================== "files.autoSave": "onFocusChange", "files.trimTrailingWhitespace": true, "files.insertFinalNewline": true, "files.encoding": "utf8", "files.eol": "\n", "files.associations": { "*.css": "tailwindcss", ".env*": "dotenv" }, "files.exclude": { "**/.git": true, "**/.DS_Store": true, "**/node_modules": true, "**/.next": true, "**/dist": true, "**/build": true, "**/.turbo": true, "**/coverage": true }, "files.watcherExclude": { "**/.git/objects/**": true, "**/node_modules/**": true, "**/.next/**": true, "**/dist/**": true, "**/build/**": true }, // ======================================== // SEARCH // ======================================== "search.exclude": { "**/node_modules": true, "**/dist": true, "**/build": true, "**/.next": true, "**/coverage": true, "**/yarn.lock": true, "**/package-lock.json": true, "**/pnpm-lock.yaml": true }, "search.useIgnoreFiles": true, "search.smartCase": true, // ======================================== // TERMINAL // ======================================== "terminal.integrated.fontSize": 13, "terminal.integrated.lineHeight": 1.2, "terminal.integrated.smoothScrolling": true, "terminal.integrated.defaultProfile.windows": "Git Bash", "terminal.integrated.cwd": "${workspaceFolder}", // ======================================== // WORKBENCH // ======================================== "workbench.iconTheme": "material-icon-theme", "workbench.activityBar.location": "default", "workbench.tree.indent": 15, "workbench.list.smoothScrolling": true, "workbench.editor.enablePreview": false, "workbench.startupEditor": "welcomePage", // ======================================== // EXPLORER // ======================================== "explorer.compactFolders": false, "explorer.confirmDelete": true, "explorer.confirmDragAndDrop": false, "explorer.sortOrder": "type", "explorer.fileNesting.enabled": true, "explorer.fileNesting.expand": false, "explorer.fileNesting.patterns": { "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, .npmrc", "tsconfig.json": "tsconfig.*.json", ".env": ".env.*", "docker-compose.yml": "docker-compose.*.yml, Dockerfile*", "*.ts": "${capture}.test.ts, ${capture}.spec.ts", "*.tsx": "${capture}.test.tsx, ${capture}.spec.tsx, ${capture}.module.css", "*.js": "${capture}.test.js, ${capture}.spec.js", "*.jsx": "${capture}.test.jsx, ${capture}.spec.jsx" }, // ======================================== // JEST // ======================================== "jest.autoRun": "off", "jest.showCoverageOnLoad": false, // ======================================== // DOCKER // ======================================== "docker.languageserver.formatter.ignoreMultilineInstructions": true, // ======================================== // YAML // ======================================== "yaml.schemas": { "https://json.schemastore.org/github-workflow.json": ".github/workflows/*.{yml,yaml}", "https://json.schemastore.org/docker-compose.json": "docker-compose*.{yml,yaml}" }, "yaml.format.enable": true, "yaml.validate": true, // ======================================== // REST CLIENT // ======================================== "rest-client.timeoutinmilliseconds": 30000, "rest-client.showResponseInDifferentTab": true, "rest-client.environmentVariables": { "$shared": { "apiUrl": "http://localhost:3000" }, "development": { "apiUrl": "http://localhost:3000" }, "production": { "apiUrl": "https://api.yourdomain.com" } }, // ======================================== // MATERIAL ICON THEME // ======================================== "material-icon-theme.folders.theme": "specific", "material-icon-theme.folders.associations": { "hooks": "Custom", "utils": "Helper", "lib": "Library", "components": "Components", "api": "Api", "dto": "Class", "entities": "Database", "modules": "Folder-Controllers", "common": "Shared", "config": "Config" }, // ======================================== // PERFORMANCE // ======================================== "files.maxMemoryForLargeFilesMB": 4096, "telemetry.telemetryLevel": "off", "security.workspace.trust.untrustedFiles": "open" }, // ======================================== // LAUNCH CONFIGURATIONS // ======================================== "launch": { "version": "0.2.0", "configurations": [ { "name": "🔧 Debug Backend", "type": "node", "request": "launch", "runtimeExecutable": "npm", "runtimeArgs": ["run", "start:debug"], "cwd": "${workspaceFolder:🔧 Backend}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "skipFiles": ["/**"], "sourceMaps": true, "restart": true }, { "name": "🎨 Debug Frontend", "type": "chrome", "request": "launch", "url": "http://localhost:3000", "webRoot": "${workspaceFolder:🎨 Frontend}", "sourceMapPathOverrides": { "webpack:///./*": "${webRoot}/*" } }, { "name": "đŸ§Ē Debug Jest Tests (Backend)", "type": "node", "request": "launch", "runtimeExecutable": "npm", "runtimeArgs": ["run", "test:debug"], "cwd": "${workspaceFolder:🔧 Backend}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen" }, { "name": "đŸ§Ē Debug Jest Tests (Frontend)", "type": "node", "request": "launch", "runtimeExecutable": "npm", "runtimeArgs": ["run", "test:debug"], "cwd": "${workspaceFolder:🎨 Frontend}", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen" } ], "compounds": [ { "name": "🚀 Debug Full Stack", "configurations": ["🔧 Debug Backend", "🎨 Debug Frontend"], "stopAll": true } ] }, // ======================================== // TASKS // ======================================== "tasks": { "version": "2.0.0", "tasks": [ { "label": "🔧 Start Backend Dev", "type": "npm", "script": "start:dev", "path": "backend/", "problemMatcher": [], "presentation": { "reveal": "always", "panel": "dedicated", "group": "dev" } }, { "label": "🎨 Start Frontend Dev", "type": "npm", "script": "dev", "path": "frontend/", "problemMatcher": [], "presentation": { "reveal": "always", "panel": "dedicated", "group": "dev" } }, { "label": "🚀 Start Full Stack", "dependsOn": ["🔧 Start Backend Dev", "🎨 Start Frontend Dev"], "problemMatcher": [] }, { "label": "đŸ§Ē Run Backend Tests", "type": "npm", "script": "test", "path": "backend/", "problemMatcher": [] }, { "label": "đŸ§Ē Run Frontend Tests", "type": "npm", "script": "test", "path": "frontend/", "problemMatcher": [] }, { "label": "đŸ—ī¸ Build Backend", "type": "npm", "script": "build", "path": "backend/", "problemMatcher": ["$tsc"], "group": { "kind": "build", "isDefault": false } }, { "label": "đŸ—ī¸ Build Frontend", "type": "npm", "script": "build", "path": "frontend/", "problemMatcher": ["$tsc"], "group": { "kind": "build", "isDefault": false } }, { "label": "🔍 Lint Backend", "type": "npm", "script": "lint", "path": "backend/", "problemMatcher": ["$eslint-stylish"] }, { "label": "🔍 Lint Frontend", "type": "npm", "script": "lint", "path": "frontend/", "problemMatcher": ["$eslint-stylish"] }, { "label": "đŸŗ Docker Compose Up", "type": "shell", "command": "docker-compose up -d", "problemMatcher": [] }, { "label": "đŸŗ Docker Compose Down", "type": "shell", "command": "docker-compose down", "problemMatcher": [] } ] }, // ======================================== // EXTENSIONS // ======================================== "extensions": { "recommendations": [ "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "usernamehw.errorlens", "yoavbls.pretty-typescript-errors", "wix.vscode-import-cost", "aaron-bond.better-comments", "gruntfuggly.todo-tree", "ashinzekene.nestjs", "dsznajder.es7-react-js-snippets", "orta.vscode-jest", "bradlc.vscode-tailwindcss", "heybourn.headwind", "prisma.prisma", "rangav.vscode-thunder-client", "humao.rest-client", "formulahendry.auto-close-tag", "formulahendry.auto-rename-tag", "ms-azuretools.vscode-docker", "mtxr.sqltools", "mongodb.mongodb-vscode", "redhat.vscode-yaml", "mikestead.dotenv", "editorconfig.editorconfig", "eamodio.gitlens", "mhutchie.git-graph", "vivaxy.vscode-conventional-commits", "christian-kohler.path-intellisense", "christian-kohler.npm-intellisense", "pranaygp.vscode-css-peek", "alefragnani.bookmarks", "chakrounanas.turbo-console-log", "wallabyjs.console-ninja", "pkief.material-icon-theme", "github.copilot" ] } }