Coding Rules

March 3, 2026 ยท View on GitHub

Critical Rules (Always Check)

  • Use const for constants with ALL_CAPS naming and let for everything else
  • Use cn() utility for dynamic classes, never template strings
  • Use function declarations function foo() not arrow expressions
  • Named exports only, no default exports (except for must-use cases like Route components)
  • No useMemo or useCallback (React 19 compiler handles it)

File Organization

  • Co-locate related files (component, styles, types, utils)
  • No barrel exports (index.ts re-export files)
  • Use kebab-case for filenames: product-card.tsx

Naming

  • Components: PascalCase (ProductCard)
  • Files: kebab-case (product-card.tsx)
  • Functions: camelCase (getProduct)
  • Constants: UPPER_SNAKE_CASE (REVIEWS_PER_PAGE)
  • Types: PascalCase (Product, Cart)

Styling

  • Use Tailwind CSS
  • Use cn() from lib/cn for conditional classes (No string templates)
  • Use cva for building component class variants, not objects or arrays