├── public/ # 이미지, 폰트 등의 정적 리소스
│ ├── icons/
│ ├── images/
src/
│
├── components/ # 글로벌 UI 컴포넌트 (Atomic Design 적용)
│ ├── atoms/ # 최소 단위 UI 컴포넌트 (Button, Input 등)
│ ├── molecules/ # Atoms의 조합 (SearchBar, Card 등)
│ ├── organisms/ # Molecules의 조합 (Header, Footer 등)
│
├── features/ # 특정 기능 단위로 그룹화
│ ├── home/ # Home 관련 기능
│ │ ├── components/ # 이 기능에서만 사용하는 컴포넌트
│ │ ├── services/ # API 호출, 데이터 처리 로직
│ │ ├── hooks/ # Custom Hooks
│ │ ├── stores/ # Zustand, Recoil 상태 관리
│ │ ├── types/ # 해당 도메인에서 사용하는 TypeScript 타입
│
├── hooks/ # 글로벌 Custom Hooks
├── middleware/ # API 요청, 인증 미들웨어
├── services/ # 글로벌 API 서비스 함수
├── stores/ # 글로벌 상태 관리 (Recoil, Zustand 등)
├── styles/ # 글로벌 스타일
├── types/ # 글로벌 타입 정의
│
├── app/ # Next.js App Router 기반 페이지
│ ├── layout.tsx # 글로벌 레이아웃
│ ├── page.tsx # 홈 페이지
│ ├── loading.tsx # 글로벌 로딩 UI
│ ├── error.tsx # 글로벌 에러 페이지
│ │
│ ├── home/ # /home 페이지
│ │ ├── page.tsx # Home 페이지
│ │ ├── loading.tsx # 페이지별 로딩 상태
│ │ ├── error.tsx # 페이지별 에러 핸들링
│
├── lib/ # 유틸리티 함수 및 API 클라이언트
│ ├── utils.ts # 기타 공통 유틸 함수
│
├── .env # 환경 변수
├── tsconfig.json # TypeScript 설정
├── next.config.js # Next.js 설정
└── package.json # 프로젝트 의존성
✅ Atoms (원자)
• 가장 작은 단위의 UI 요소
• 예: Button, Input, Typography, Icon 등
✅ Molecules (분자)
• 여러 개의 Atom을 조합하여 만든 작은 단위의 컴포넌트
• 예: SearchBar, Card, LoginForm 등
✅ Organisms (유기체)
• 여러 개의 Molecule을 조합하여 만든 큰 UI 블록
• 예: Header, Footer, Sidebar 등
💡 Atoms, Molecules, Organisms는 components/ 내에서만 관리하며, 비즈니스 로직이 포함되지 않도록 유지
✅ features/{feature}/
• 각 기능(도메인)별로 독립적인 디렉토리 구조
• 비즈니스 로직이 포함된 컴포넌트는 features/{feature}/components 내에서 관리
✅ features/{feature}/services/