role map

라이브러리는 역할별로 나눠야 중복 도입과 경계 혼선을 줄인다

인증, 상태, UI, 폼, DB, 유틸리티는 서로 다른 층을 담당한다. 한 문제를 두 라이브러리가 동시에 맡지 않게 나눈다.

역할대표 라이브러리책임겹치면 안 되는 부분
인증Auth.js로그인, 세션, provider, 보호 경계클라이언트 전역 상태로 권한을 대체하지 않기
클라이언트 상태Zustand, Jotai모달, 필터, 임시 선택값서버 데이터 캐시를 전역 상태로 복제하지 않기
서버 상태TanStack Query, SWRfetch, cache, revalidate, mutationDB schema 검증까지 맡기지 않기
UI와 접근성Radix UI, shadcn/ui, Tailwind컴포넌트 구조, 스타일, 접근성비즈니스 상태 관리까지 UI 컴포넌트에 넣지 않기
폼·검증React Hook Form, Zod입력 상태, 오류 메시지, runtime schema서버 권한 검사를 클라이언트 검증으로 대체하지 않기
DB 접근Prisma, Mongoose모델, query, migration 또는 schema클라이언트 번들로 DB client를 보내지 않기