프로젝트 전반적인 구조

project-root/
├─ public/               // 정적 파일 (이미지, 아이콘, 폰트)
│  └─ images/
│
├─ src/                  // 애플리케이션 소스 코드
│
├─ .vscode/              // VSCode 설정
├─ .gitignore
├─ .prettierrc
├─ eslint.config.js
├─ package.json
├─ package-lock.json
├─ README.md
└─ vite.config.js

src 폴더 하위 구조

src/
├─ assets/            // 이미지, 폰트 등 정적 리소스
├─ components/        // 공통 UI 컴포넌트
│  ├─ Layout/         // 레이아웃 관련 컴포넌트
│  │  └─ index.jsx + Layout.module.css
│  ├─ Button/         // 버튼 관련 컴포넌트
│  │  └─ 여러 버튼 컴포넌트 + Button.module.css
│  └─ ...             // 기타 재사용 가능한 컴포넌트
│
├─ pages/             // 페이지 단위 컴포넌트
│  ├─ Home/
│  │  └─ index.jsx + Home.module.css
│  ├─ Login/
│  ├─ CompanyDetail/
│  └─ ...             // 추가 페이지
│
├─ hooks/             // 커스텀 훅
├─ utils/             // 공통 유틸 함수
├─ api/               // API 호출 및 서비스 함수
├─ styles/            // 글로벌 CSS
│  └─ global.css
├─ main.jsx           // 엔트리 포인트
└─ App.jsx            // 루트 컴포넌트

컴포넌트 구조 (공통 컴포넌트 및 일반 컴포넌트)

components/
├─ Layout/
│  ├─ index.jsx        // Layout 컴포넌트
│  └─ Layout.module.css
├─ Button/
│  ├─ LargeButton.jsx
│  ├─ MediumButton.jsx
│  ├─ OutlineButton.jsx
│  └─ Button.module.css
└─ ...

스타일 파일 구조

styles/
└─ global.css          // 전체 스타일, reset, 공통 변수
components/Button/
└─ Button.module.css   // 컴포넌트 전용 스타일

유틸리티 및 서비스 파일 구조

utils/
├─ calculateAge.js
├─ formatDate.js
└─ ...
api/
├─ userApi.js
├─ companyApi.js
└─ ...

커스텀 훅 파일 구조