ndd-drive/PROJECT_STRUCTURE.md

115 lines
3.8 KiB
Markdown

# 프로젝트 구조 가이드
## 현재 구조 (표준 Tauri 구조)
```
ndd-drive/
├── src/ # 프론트엔드 소스 코드
│ └── index.html # 메인 HTML 파일
├── src-tauri/ # Rust 백엔드 (Tauri)
│ ├── src/ # Rust 소스 파일
│ │ ├── main.rs # 진입점
│ │ └── lib.rs # 라이브러리 진입점
│ ├── Cargo.toml # Rust 의존성 관리
│ ├── tauri.conf.json # Tauri 설정
│ ├── build.rs # 빌드 스크립트
│ ├── icons/ # 앱 아이콘
│ ├── capabilities/ # Tauri 권한 설정
│ ├── gen/ # 자동 생성 파일 (gitignore)
│ └── target/ # 빌드 결과물 (gitignore)
├── package.json # Node.js 의존성 및 스크립트
├── node_modules/ # Node.js 패키지 (gitignore)
└── package-lock.json # 패키지 잠금 파일
```
## 개선된 구조 제안
### 옵션 1: 현재 구조 유지 + 모듈화 (추천)
```
ndd-drive/
├── src/ # 프론트엔드
│ ├── index.html
│ ├── css/
│ │ ├── main.css
│ │ └── components/
│ ├── js/
│ │ ├── main.js
│ │ ├── components/
│ │ └── utils/
│ ├── assets/
│ │ ├── images/
│ │ └── fonts/
│ └── components/ # 재사용 가능한 컴포넌트
├── src-tauri/ # Rust 백엔드
│ ├── src/
│ │ ├── main.rs
│ │ ├── lib.rs
│ │ ├── commands/ # Tauri 커맨드 (프론트엔드에서 호출)
│ │ │ └── mod.rs
│ │ ├── utils/ # 유틸리티 함수
│ │ │ └── mod.rs
│ │ └── models/ # 데이터 모델
│ │ └── mod.rs
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ ├── build.rs
│ ├── icons/
│ └── capabilities/
├── package.json
└── README.md
```
### 옵션 2: 프론트엔드 프레임워크 사용 시 (React/Vue 등)
```
ndd-drive/
├── src/ # 프론트엔드 (프레임워크)
│ ├── index.html
│ ├── main.jsx / main.tsx
│ ├── App.jsx / App.tsx
│ ├── components/
│ ├── pages/
│ ├── hooks/ # React hooks 또는 Vue composables
│ ├── utils/
│ ├── styles/
│ └── assets/
├── src-tauri/ # Rust 백엔드 (동일)
│ └── ...
├── public/ # 정적 파일
├── package.json
└── vite.config.js / webpack.config.js
```
## 각 디렉토리 설명
### `/src` - 프론트엔드
- **index.html**: 앱의 진입점 HTML
- **css/**: 스타일시트 파일
- **js/**: JavaScript 파일
- **assets/**: 이미지, 폰트 등 정적 리소스
- **components/**: 재사용 가능한 UI 컴포넌트
### `/src-tauri` - Rust 백엔드
- **src/main.rs**: Rust 프로그램 진입점
- **src/lib.rs**: 라이브러리 진입점 (Tauri 앱 설정)
- **src/commands/**: Tauri 커맨드 (프론트엔드에서 호출 가능한 Rust 함수)
- **src/utils/**: 공통 유틸리티 함수
- **src/models/**: 데이터 구조 및 모델
- **tauri.conf.json**: Tauri 앱 설정 (윈도우 크기, 권한 등)
- **capabilities/**: 보안 권한 설정
## 권장 사항
1. **프론트엔드 모듈화**: CSS와 JS를 분리하여 관리
2. **Rust 코드 모듈화**: 기능별로 파일 분리 (commands, utils 등)
3. **.gitignore**: target/, node_modules/, gen/ 등 빌드 결과물 제외
4. **문서화**: README.md에 프로젝트 설명 및 실행 방법 작성