{
    "name": "Default Linux Universal",
    "image": "mcr.microsoft.com/devcontainers/universal:2-linux",
    "features": {
      "ghcr.io/devcontainers-contrib/features/poetry:2": {}
    },
    "postCreateCommand": "poetry config virtualenvs.in-project true && poetry install -E all && poetry run pre-commit install && yarn install",
    "customizations": {
      "vscode": {
        "settings": {
          "python.analysis.diagnosticMode": "workspace",
          "python.analysis.typeCheckingMode": "basic",
          "ruff.organizeImports": false,
          "[python]": {
            "editor.defaultFormatter": "ms-python.black-formatter",
            "editor.codeActionsOnSave": {
              "source.fixAll.ruff": true,
              "source.organizeImports": true
            }
          },
          "[javascript]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
          },
          "[html]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
          },
          "[typescript]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
          },
          "[javascriptreact]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
          },
          "[typescriptreact]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
          },
          "files.exclude": {
            "**/__pycache__": true
          },
          "files.watcherExclude": {
            "**/target/**": true,
            "**/__pycache__": true
          }
        },
        "extensions": [
          "ms-python.python",
          "ms-python.vscode-pylance",
          "ms-python.isort",
          "ms-python.black-formatter",
          "charliermarsh.ruff",
          "EditorConfig.EditorConfig",
          "esbenp.prettier-vscode",
          "bradlc.vscode-tailwindcss"
        ]
      }
    }
  }