ndd-drive/PROJECT_STRUCTURE.md

3.8 KiB

프로젝트 구조 가이드

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