Skip to main content

Overview

ZeroStarter includes optimized IDE configuration for a consistent development experience across the team. The project is configured with modern tooling focused on speed and developer experience.

Visual Studio Code

The project includes an .vscode/extensions.json file with recommended extensions:
.vscode/extensions.json
{
  "recommendations": ["oxc.oxc-vscode"]
}
VS Code will automatically prompt you to install recommended extensions when you open the project.

Oxc Extension

The Oxc extension provides:
  • Fast Linting with Oxlint - Written in Rust, 50-100x faster than ESLint
  • Fast Formatting with Oxfmt - High-performance code formatter
  • Real-time Feedback - Instant linting and formatting as you type
Installation:
code --install-extension oxc.oxc-vscode
Or search for “Oxc” in the VS Code Extensions marketplace.

Editor Settings

The project includes pre-configured editor settings in .vscode/settings.json:
.vscode/settings.json
{
  "editor.defaultFormatter": "oxc.oxc-vscode",
  "editor.formatOnSave": true
}
  • editor.defaultFormatter - Sets Oxc as the default formatter for all files
  • editor.formatOnSave - Automatically formats files when you save them
While not included in the default configuration, these extensions enhance the development experience:
Extension ID: bradlc.vscode-tailwindcssProvides autocomplete, syntax highlighting, and linting for Tailwind CSS classes.
code --install-extension bradlc.vscode-tailwindcss
Extension ID: unifiedjs.vscode-mdxSyntax highlighting and language support for MDX files (used in Fumadocs).
code --install-extension unifiedjs.vscode-mdx
Extension ID: Drizzle-Team.drizzle-vscodeSyntax highlighting for Drizzle ORM schema files.
code --install-extension Drizzle-Team.drizzle-vscode
Extension ID: aaron-bond.better-commentsColor-coded comments for TODOs, warnings, etc. (though ZeroStarter favors minimal comments).
code --install-extension aaron-bond.better-comments

Cursor

Cursor is an AI-powered code editor built on VS Code. It uses the same configuration automatically.

Why Cursor Works Well with ZeroStarter

1

VS Code Compatibility

Cursor is based on VS Code, so it automatically reads:
  • .vscode/extensions.json
  • .vscode/settings.json
  • All VS Code extensions
2

AI Instructions

Cursor reads AGENTS.md at the repository root for project-specific AI guidance:
AGENTS.md
# AGENTS.md

## Instructions

- Do not comment unnecessarily. Only comment if it is absolutely necessary.
- Use `@/` for imports, if applicable.
3

Claude Integration

Cursor can reference CLAUDE.md for comprehensive project context, including:
  • Development commands
  • Architecture overview
  • Code style conventions
  • Git hook information

Cursor-Specific Features

Use Cursor’s inline AI editing to refactor code while maintaining ZeroStarter conventions.
Ask questions about the monorepo architecture, type-safe API patterns, or specific implementations.
Generate new routes, components, or database schemas that follow project patterns.

Other Editors

WebStorm / IntelliJ IDEA

For JetBrains IDEs:
  1. Install Oxc Plugin (if available) or configure Prettier/ESLint as fallback
  2. Enable Format on Save:
    • Settings → Tools → Actions on Save
    • Check “Reformat code”
  3. Configure Import Aliases:
    • Settings → Editor → Code Style → TypeScript
    • Add @/* path mapping to src/*

Neovim

For Neovim users:
Oxc LSP Configuration (example)
-- Install oxc LSP via Mason or manual installation
require('lspconfig').oxc.setup({
  on_attach = on_attach,
  capabilities = capabilities,
})

-- Format on save
vim.api.nvim_create_autocmd("BufWritePre", {
  pattern = "*",
  callback = function()
    vim.lsp.buf.format()
  end,
})

Zed

For Zed editor:
settings.json
{
  "formatter": "language_server",
  "format_on_save": "on",
  "lsp": {
    "oxc": {
      "initialization_options": {}
    }
  }
}

Monorepo Navigation

ZeroStarter uses a Turborepo monorepo structure. Configure your IDE for efficient navigation:

Workspace Structure

zerostarter/
├── api/
│   └── hono/          # Backend API (port 4000)
├── web/
│   └── next/          # Frontend (port 3000)
└── packages/
    ├── auth/          # Better Auth config
    ├── db/            # Drizzle ORM schema
    ├── env/           # Environment variables
    └── tsconfig/      # TypeScript configs

Quick Navigation Tips

1

Use path aliases

Jump to imports using @/ aliases:
// Cmd/Ctrl + Click to navigate
import { apiClient } from "@/lib/api/client"
import { auth } from "@/lib/auth"
2

Search across workspace

Use workspace-wide search (Cmd/Ctrl + Shift + F) to find code across all packages.
3

Filter by package

In VS Code, use the file explorer to focus on specific apps or packages.

Format on Save

All editors should be configured to format on save for consistency:
.vscode/settings.json
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "oxc.oxc-vscode"
}

TypeScript Configuration

ZeroStarter uses shared TypeScript configurations via @packages/tsconfig:
packages/tsconfig/base.json
{
  "compilerOptions": {
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true
  }
}

IDE TypeScript Settings

Ensure your IDE uses the workspace TypeScript version:VS Code/Cursor: Cmd/Ctrl + Shift + P → “TypeScript: Select TypeScript Version” → “Use Workspace Version”

Troubleshooting

  1. Check extension is installed: code --list-extensions | grep oxc
  2. Restart VS Code/Cursor
  3. Check Output panel (View → Output → Oxc) for errors
  4. Verify .vscode/settings.json has correct formatter setting
  1. Check tsconfig.json includes path mappings:
{
  "compilerOptions": {
    "paths": {
      "@/*": ["./src/*"]
    }
  }
}
  1. Restart TypeScript server: Cmd/Ctrl + Shift + P → “TypeScript: Restart TS Server”
  1. Verify .vscode/settings.json has "editor.formatOnSave": true
  2. Check file is not in .prettierignore or .eslintignore
  3. Try manual format: Cmd/Ctrl + Shift + F
  4. Check Output panel for formatter errors

Next Steps

Build docs developers (and LLMs) love