UXDL Docs

IDE & Tooling

Cursor/VS Code extensions, formatters, and debug configurations.

UXDL standardizes on Cursor (VS Code–compatible). These settings keep formatting, linting, and debugging consistent across teams.

ExtensionIDPurpose
ESLintdbaeumer.vscode-eslintLint on save
Prettieresbenp.prettier-vscodeCode formatting
Tailwind CSS IntelliSensebradlc.vscode-tailwindcssTailwind class completion
GitLenseamodio.gitlensBlame and history
Error Lensusernamehw.errorlensInline errors
MDXunifiedjs.vscode-mdxMDX syntax (docs repos)
Dockerms-azuretools.vscode-dockerCompose and Dockerfile support
Thunder Clientrangav.vscode-thunder-clientREST API testing (optional)

Backend-specific (install as needed):

ExtensionPurpose
Drizzle ORM snippets / SQLToolsPostgreSQL query exploration
MongoDB for VS CodeDocument inspection

Workspace settings

Add to .vscode/settings.json in your repo (or user settings):

json
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },
  "typescript.tsdk": "node_modules/typescript/lib",
  "typescript.enablePromptUseWorkspaceTsdk": true,
  "files.exclude": {
    "**/.next": true,
    "**/dist": true
  }
}

Debug configurations

Add to .vscode/launch.json:

json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Next.js: debug server",
      "type": "node",
      "request": "launch",
      "runtimeExecutable": "pnpm",
      "runtimeArgs": ["dev"],
      "cwd": "${workspaceFolder}",
      "console": "integratedTerminal",
      "skipFiles": ["<node_internals>/**"]
    },
    {
      "name": "Express API (tsx)",
      "type": "node",
      "request": "launch",
      "runtimeExecutable": "pnpm",
      "runtimeArgs": ["exec", "tsx", "watch", "src/server.ts"],
      "cwd": "${workspaceFolder}",
      "console": "integratedTerminal",
      "skipFiles": ["<node_internals>/**"]
    },
    {
      "name": "Attach to process",
      "type": "node",
      "request": "attach",
      "port": 9229,
      "skipFiles": ["<node_internals>/**"]
    }
  ]
}
ConfigUse when
Next.js: debug serverStepping through SSR, API routes, middleware
Express API (tsx)Backend breakpoints in routes, services, middleware
Attach to processDebugging a already-running node --inspect process

Cursor-specific tips

  • Use the workspace Rules file (.cursor/rules) if your repo has one — it encodes UXDL conventions for AI assistance
  • Index large monorepos once after clone (Cursor: Resync Index)
  • Prefer workspace TypeScript version over the editor bundled version (setting above)

Shell aliases (optional)

Add to ~/.zshrc:

bash
alias p="pnpm"
alias pd="pnpm dev"
alias pl="pnpm lint && pnpm typecheck"
alias dc="docker compose"
alias uxdl="cd ~/uxdl"

Git hooks

All UXDL repos use Husky pre-commit hooks for lint and typecheck. Do not bypass with --no-verify unless your team lead approves it for a hotfix.

bash
# Hooks install automatically on pnpm install via "prepare" script
pnpm install

CLI tools worth knowing

ToolInstallPurpose
ghbrew install ghPRs, checks, repo clone
awsbrew install awscliSSO, S3, ECS
dockerDocker DesktopLocal databases
pnpmcorepack enablePackage management

Official documentation