한국어 | English
DM Note에 관심을 가져주셔서 감사합니다! 이 문서는 프로젝트에 기여하기 위한 기본적인 가이드라인을 안내합니다.
다양한 형태의 기여를 환영합니다.
| 유형 | 설명 |
|---|---|
| 🐛 버그 수정 | 재현 가능한 버그의 원인 분석 및 수정 |
| ✨ 기능 추가 | 새로운 기능 구현 (이슈에서 먼저 논의 권장) |
| ♻️ 리팩토링 | 기존 코드의 구조 개선, 가독성 향상 |
| ⚡ 성능 최적화 | 렌더링, 메모리, 입력 지연 등 성능 개선 |
| 유형 | 설명 |
|---|---|
| 📝 문서 개선 | README, 가이드, API 문서 등의 오류 수정 및 보완 |
| 🌍 번역 | 새로운 언어 추가 또는 기존 번역 개선 (src/renderer/locales/) |
| 🧩 플러그인 / CSS | 커뮤니티 플러그인이나 CSS 테마 제작 및 공유 |
참고: 기능 추가나 큰 변경은 작업 전에 이슈를 열어 논의해주세요.
- Node.js (LTS)
- Rust
- Tauri 사전 요구사항
git clone https://github.com/lee-sihun/DmNote.git
cd DmNote
npm install
npm run tauri:devsrc/renderer/ # React 프론트엔드
├── components/ # UI 컴포넌트
│ ├── main/ # 메인 윈도우 전용
│ ├── overlay/ # 오버레이 윈도우 전용
│ └── shared/ # 공유 컴포넌트
├── hooks/ # 커스텀 훅
├── stores/ # Zustand 스토어
├── utils/ # 유틸리티 함수
└── types/ # 공유 타입 정의
src-tauri/src/ # Rust 백엔드
├── commands/ # Tauri 커맨드 (도메인별 하위 폴더)
├── services/ # 비즈니스 로직
├── state/ # 상태 관리
├── keyboard/ # 키보드 입력
└── audio/ # 사운드 엔진
| 대상 | 규칙 | 예시 |
|---|---|---|
| React 컴포넌트 | PascalCase | GridBackground.tsx |
| 훅 | camelCase + use 접두사 |
useKeyManager.ts |
| Zustand 스토어 | camelCase + use 접두사 |
useFontStore.ts |
| 유틸리티 | camelCase | cubicBezier.ts |
| Rust 파일 | snake_case | app_state.rs |
- 새로 추가하는 파일은 반드시 TypeScript (
.ts/.tsx) - 컴포넌트는 화살표 함수 + Props 인라인 구조분해 패턴 사용
- 컴포넌트는
export default, 훅/유틸리티는 named export 사용
#[tauri::command]사용 (permission 속성 생략 —build.rs가 자동 생성)- 동기
fn기본,async fn은 실제 await가 필요한 경우만 사용
- 기술 용어를 제외하면 한글로 작성
- 키워드/명사형 스타일 사용 (예:
// 카운터 초기화) - 코드로 의도가 명확하면 주석 생략
- 플러그인 API(
dmn.*) 또는 Tauri 커맨드 변경 시docs/content/하위 MDX 문서 업데이트 en/,ko/두 언어 모두 반영
npx tsc --noEmit # 타입 체크
npm run lint # 린트
npm run format # 포맷팅cd src-tauri
cargo check # 컴파일 체크
cargo clippy # 린트
cargo fmt # 포맷팅- 플러그인 API(
dmn.*) 또는 Tauri 커맨드를 변경할 경우, 기존 플러그인이나 외부 연동이 정상 동작하는지 하위 호환성을 반드시 검토해주세요 - 설정 파일 스키마 변경 시 마이그레이션 로직이 필요한지 확인해주세요
- 변경 사항이 있으면
docs/content/하위 MDX 문서를en/,ko/양쪽 모두 업데이트해주세요
- 변경 후 기존 기능이 정상적으로 동작하는지 직접 확인해주세요
- 테스트가 있는 영역이라면 모든 테스트가 통과하는지 확인해주세요
- 이슈를 먼저 열어 변경 사항을 논의합니다
- 포크 후 브랜치를 생성합니다
- 위 체크리스트를 통과하는지 확인합니다
- PR을 제출합니다
기여해 주셔서 감사합니다! 🙏
AI 도구를 활용한 바이브 코딩 기여도 환영합니다. 다만 제출 전에 코드의 동작과 품질을 충분히 검토해주세요.