{
  "name": "Watch Finished Turbo Development",
  "dockerFile": "Dockerfile",
  "context": "..",

  // Configure tool-specific properties.
  "customizations": {
    // Configure properties specific to VS Code.
    "vscode": {
      "extensions": [
        "ms-vscode.vscode-typescript-next",
        "bradlc.vscode-tailwindcss",
        "esbenp.prettier-vscode",
        "ms-vscode.vscode-eslint",
        "ms-vscode.vscode-json",
        "ms-playwright.playwright",
        "ms-vscode.test-adapter-converter",
        "hbenl.vscode-test-explorer",
        "ms-vscode.vscode-jest",
        "ms-vscode-remote.remote-containers",
        "GitHub.copilot",
        "GitHub.copilot-chat"
      ],
      "settings": {
        "typescript.preferences.preferTypeOnlyAutoImports": true,
        "typescript.suggest.autoImports": true,
        "editor.formatOnSave": true,
        "editor.defaultFormatter": "esbenp.prettier-vscode",
        "editor.codeActionsOnSave": {
          "source.fixAll.eslint": "explicit"
        },
        "tailwindCSS.experimental.classRegex": [
          ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"],
          ["cx\\(([^)]*)\\)", "(?:'|\"|`)([^']*)(?:'|\"|`)"]
        ],
        "jest.autoRun": "off",
        "playwright.reuseBrowser": true
      }
    }
  },

  // Features to add to the dev container. More info: https://containers.dev/features.
  "features": {
    "ghcr.io/devcontainers/features/github-cli:1": {},
    "ghcr.io/devcontainers/features/docker-in-docker:2": {},
    "ghcr.io/devcontainers/features/node:1": {
      "version": "20",
      "pnpmVersion": "latest"
    },
    "ghcr.io/devcontainers/features/git:1": {
      "version": "latest",
      "ppa": false
    }
  },

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  "forwardPorts": [
    3000, // Next.js web app
    3001, // NestJS API service
    9229 // Node.js debugger
  ],

  // Use 'postCreateCommand' to run commands after the container is created.
  "postCreateCommand": "pnpm install",

  // Configure tool-specific properties.
  "remoteUser": "node",

  // Mount the workspace
  "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/watch-finished-turbo,type=bind,consistency=cached",
  "workspaceFolder": "/workspaces/watch-finished-turbo",

  // Environment variables
  "containerEnv": {
    "NODE_ENV": "development",
    "PNPM_HOME": "/home/node/.local/share/pnpm",
    "PATH": "/home/node/.local/share/pnpm:/home/node/.local/share/pnpm/global/5/node_modules/.bin:${PATH}"
  },

  // Security options
  "securityOpt": ["label:disable"],

  // Mounts for persistent data
  "mounts": [
    "source=${localWorkspaceFolder}/.devcontainer/.pnpm-store,target=/home/node/.local/share/pnpm,type=volume",
    "source=${localWorkspaceFolder}/data,target=/workspaces/watch-finished-turbo/data,type=bind"
  ]
}
