Files
sample-nuxt-project/.claude/project/architecture.md

2.0 KiB

아키텍처 (Sample)

레이어 구조

┌───────────────────────────────────┐
│           pages (Nuxt)            │  ← 라우팅, 데이터 페칭 진입점
├───────────────────────────────────┤
│          components               │  ← 재사용 UI (도메인/공용 분리)
├───────────────────────────────────┤
│       composables (use*)          │  ← 상태 + 로직 (뷰 독립)
├───────────────────────────────────┤
│    composables/api (wrapper)      │  ← 서버 통신 단일 창구
├───────────────────────────────────┤
│         server/api                │  ← Nuxt 서버 라우트
└───────────────────────────────────┘

규칙

  • 하위 레이어는 상위 레이어를 import 할 수 없습니다. (단방향 의존)
  • components 는 비즈니스 로직을 직접 수행하지 않고, composable 에 위임합니다.
  • 전역 상태는 필요한 경우에만 Pinia store 로 승격합니다.

데이터 흐름

  1. 사용자 이벤트 → components 에서 composable 호출
  2. composablecomposables/api 래퍼 호출
  3. 래퍼 → $fetch 로 Nuxt server/api 또는 외부 API 요청
  4. 응답은 타입이 보장된 상태로 composable → component 로 전달

상태 관리 가이드

상태 종류 권장 위치
컴포넌트 로컬 상태 ref / reactive
페이지 단위 공유 상태 provide/inject 또는 composable
앱 전역 상태 Pinia store
서버 데이터 useAsyncData/useFetch