선택 근거와 트레이드오프
Next.js (App Router)
선택 이유: 케이스 페이지를 섹션 단위로 분해해 포트폴리오 정보 구조를 빠르게 확장할 수 있습니다.
고려한 한계: 버전 변경 폭이 커 문서와 마이그레이션 가이드를 계속 확인해야 합니다.
Tailwind CSS
선택 이유: 디자인 의도를 코드에 직접 반영해 시안-구현 간 불일치를 줄일 수 있습니다.
고려한 한계: 유틸리티 클래스가 길어지면 가독성이 떨어질 수 있어 공통 패턴 정리가 필요합니다.
Framer Motion
선택 이유: 마이크로 인터랙션을 빠르게 프로토타이핑해 '정적인 포트폴리오'를 '경험형 포트폴리오'로 전환할 수 있습니다.
고려한 한계: 모든 영역에 과도하게 적용하면 성능/집중도 저하가 생겨 최소 범위 적용 원칙이 필요합니다.
Supabase
선택 이유: UX 가설 검증에 필요한 행동 로그와 실시간 피드백 루프를 짧은 사이클로 실험할 수 있습니다.
고려한 한계: 권한 정책(RLS)과 테이블 설계를 초기에 명확히 하지 않으면 확장 시 수정 비용이 커집니다.
Recharts
선택 이유: 대시보드형 시각화(Area/Bar) 구현이 빠르고 데이터 변경 대응이 쉽습니다.
고려한 한계: 복잡한 차트 상호작용은 커스텀 로직이 늘어날 수 있어 요구사항 선별이 중요합니다.