ESLint

This project uses ESLint flat config with Next.js presets to ensure a consistent, safe codebase.

Config

// eslint.config.mjs
import { dirname } from "path";
import { fileURLToPath } from "url";
import { FlatCompat } from "@eslint/eslintrc";

const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const compat = new FlatCompat({ baseDirectory: __dirname });

const eslintConfig = [
  ...compat.extends("next/core-web-vitals", "next/typescript"),
];

export default eslintConfig;

Rules & Conventions

  • TypeScript-first: prefer typed modules, avoid any
  • React 19/Next 15 safe patterns: server components by default, client only when needed
  • Imports: absolute aliases from components.json (e.g., @/components/ui/button)
  • Lint before commit: run pnpm lint

Commands

pnpm lint
pnpm lint --fix

Tips

  • Keep PRs small; lint errors early
  • Use editor ESLint integration for real-time feedback