Skip to content

Instantly share code, notes, and snippets.

@BobDempsey
Created December 12, 2025 22:44
Show Gist options
  • Select an option

  • Save BobDempsey/df37a6a630c633d107545d8b441c6b86 to your computer and use it in GitHub Desktop.

Select an option

Save BobDempsey/df37a6a630c633d107545d8b441c6b86 to your computer and use it in GitHub Desktop.
Node.js TypeScript Project Checklist
# Node.js TypeScript Project Checklist
## TypeScript Configuration
- Strict mode enabled (`strict: true`)
- ES module setup (`module: NodeNext`, `moduleResolution: NodeNext`)
- Path aliases with tsconfig-paths or native Node subpath imports
- Separate tsconfig files for src and tests if needed
- Output directory configuration (`outDir: dist`)
## Code Quality
- Biome for linting and formatting (single tool, fast)
- biome.json configuration with recommended rules
- EditorConfig for non-Biome editor consistency
- Husky + lint-staged running `biome check --apply`
- commitlint with conventional commits
## Testing
- Vitest or Jest with ts-jest
- Coverage thresholds configured
- Test file naming convention (`*.test.ts` or `*.spec.ts`)
- Separate unit and integration test directories
- Mock/fixture organization
## Project Structure
- `src/` for application code
- `src/index.ts` as entry point
- Logical grouping (routes, services, repositories, utils, types, config)
- Barrel exports (`index.ts`) for public module APIs
- Dedicated `types/` or `*.types.ts` files
## Build & Runtime
- tsx for development (fast TypeScript execution)
- Node.js native test runner or Vitest for tests
- tsup or tsc for production builds
- nodemon or tsx watch for dev hot reload
- Source maps for debugging
## Package Configuration
- `"type": "module"` in package.json
- `"engines"` field specifying Node version
- Proper exports field for ESM
- Scripts: `dev`, `build`, `start`, `test`, `lint` (`biome check`), `format` (`biome format`)
## Git & Repository
- .gitignore (node_modules, dist, .env, coverage)
- .nvmrc or .node-version for Node version pinning
- PR and issue templates
- CODEOWNERS
- Conventional commit enforcement
## CI/CD
- GitHub Actions (or equivalent) for lint, test, build
- `biome ci` command for CI environments (fails on issues)
- Dependency scanning (Dependabot)
- Node version matrix testing if supporting multiple versions
- Automated releases with semantic-release or changesets
## VS Code
- extensions.json (Biome, TypeScript, Error Lens)
- settings.json (Biome as default formatter, format on save)
- launch.json for debugging with source maps
- tasks.json for common build tasks
## Environment & Config
- .env.example with documented variables
- dotenv or native Node `--env-file` flag
- Runtime validation with zod
- Config module with typed environment access
## Error Handling & Logging
- Centralized error handling
- Structured logging (pino or winston)
- Process signal handlers (SIGTERM, SIGINT)
- Uncaught exception and rejection handlers
## Dependencies
- pnpm or npm with lock file committed
- Separate devDependencies properly
- @types packages for untyped dependencies
- Regular dependency audits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment