# 프로젝트 구조 가이드 ## 현재 구조 (표준 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에 프로젝트 설명 및 실행 방법 작성