Skip to content

Personal project

eslint-config-basic

Built a DX-first ESLint toolkit for JavaScript and TypeScript teams that want stronger defaults, less setup friction, and cleaner reviews.

Creator
2 yrs 8 mo

A closer look at the design decisions, technical choices, and problems this project was built to solve.

Active project

Building a DX-first ESLint toolkit

I built @santi020k/eslint-config-basic to remove lint setup friction from the kind of projects I work on most: React, Next.js, Astro, TypeScript, and monorepos with real teams behind them. It is the successor to my original @santi020k/eslint-config-santi020k package, rebuilt from scratch around ESLint’s flat config format with a much wider framework footprint and better DX throughout.

Goals

  • Reduce setup friction for new projects so teams can get to useful standards faster.
  • Encode strong defaults based on real project work across front-end apps, tooling, Astro sites, and monorepos.
  • Stay composable so different stacks can opt into the pieces they actually need instead of inheriting a giant monolith.

What I built

  • A composable ESLint core for JavaScript and TypeScript projects, with auto-detection for the frameworks and tools already in your repo.
  • Optional packages for React, Next.js, Astro, Vue, Svelte, Solid, Angular, NestJS, Expo, Qwik, and Remix.
  • A strict mode that promotes warnings to errors for CI/CD pipelines and stricter team workflows.
  • First-class support for Tailwind CSS, Vitest, and Testing Library, plus documentation and examples that make adoption easier for teams, not just for me.

Results

  • 229+ weekly npm downloads across personal, client, and shared codebases.
  • Less repeated setup work whenever a new project or experiment starts.
  • A reusable expression of my engineering standards in a form other teams can actually adopt and extend.

Why it matters

Linting is rarely the star of the show, but it changes how teams work. This project reflects how I think about developer tooling in general: remove friction, encode good defaults, and make quality easier to maintain at scale.

NPM Package
Share this piece

Related work

More projects in a similar lane.

More work from a similar lane — same type, overlapping technologies, adjacent problems.

Browse all projects
CreatorActive

Apr 2026 - Present

Santi020k Theme

Built a theme family for VS Code, Zed, Codex, Chrome, terminals, Raycast, Slack, JetBrains, and Xcode, with shared tokens and a unified product website.

  • Published through the VS Code Marketplace, Open VSX, Zed extension registry, Chrome Web Store, npm, GitHub Releases, and Homebrew
  • Astro
  • Node.js
  • Vitest
  • ESLint
Read case study for Santi020k Theme
CreatorCompleted

Jan 2023 - Mar 2024

eslint-config-santi020k

Turned internal linting conventions into a reusable package that standardized React and TypeScript projects and paved the way for @santi020k/eslint-config-basic.

  • Shared one reusable lint baseline across multiple React and TypeScript projects
  • React.js
  • Next.js
  • Astro
  • TypeScript
Read case study for eslint-config-santi020k