Created
December 12, 2025 22:44
-
-
Save BobDempsey/df37a6a630c633d107545d8b441c6b86 to your computer and use it in GitHub Desktop.
Node.js TypeScript Project Checklist
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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