기여하기
Cheolsu Proxy 프로젝트에 기여해주셔서 감사합니다! 이 프로젝트를 개선하는 데 도움을 주시는 커뮤니티의 기여를 환영합니다. 버그 수정, 새로운 기능 추가, 문서 개선 등에 관심이 있으시다면 참여할 수 있는 다양한 방법이 있습니다.
기여 방법
이 프로젝트에 기여하기 시작하는 몇 가지 단계입니다:
- 저장소 포크: GitHub에서 저장소를 포크하고 로컬 머신에 클론합니다
- 브랜치 생성: 변경사항을 위한 새 브랜치를 생성합니다
- 변경사항 구현: 변경사항을 만들고 철저히 테스트합니다
- 커밋: 설명적인 커밋 메시지와 함께 변경사항을 커밋합니다
- 풀 리퀘스트: 변경사항을 포크에 푸시하고 풀 리퀘스트를 제출합니다
작은 버그 수정부터 주요한 새로운 기능까지, 어떤 규모의 기여든 감사합니다. 하고 싶은 변경사항에 대해 확신이 서지 않는다면, 먼저 이슈를 열어서 유지보수자들과 논의해보세요.
기여 유형
🐛 버그 수정
- 버그 리포트 확인 및 재현
- 근본 원인 분석
- 테스트 케이스 작성
- 수정 사항 구현
✨ 새로운 기능
- 기능 요청 검토
- 설계 문서 작성
- 구현 및 테스트
- 문서 업데이트
📚 문서 개선
- 사용자 가이드 작성
- API 문서 업데이트
- 코드 주석 개선
- 번역 작업
🧪 테스트
- 단위 테스트 작성
- 통합 테스트 추가
- 성능 테스트
- 보안 테스트
개발 환경 설정
필수 요구사항
- Rust: 1.70.0 이상
- Node.js: 22.0.0 이상
- Tauri CLI: 최신 버전
- Git: 2.0.0 이상
Rust 설치
개발 도구 설치
프로젝트 클론 및 빌드
개발 워크플로우
1. 이슈 확인
- GitHub Issues에서 작업할 이슈 선택
- 이슈에 "assign"하여 작업 중임을 표시
- 이슈에 대한 질문이나 제안사항이 있으면 댓글 작성
2. 브랜치 생성
3. 개발 및 테스트
4. 커밋
5. 풀 리퀘스트
코딩 스타일
Rust 코딩 규칙
- Rust 표준 코딩 컨벤션 따르기 (rustfmt 사용)
- 에러 처리: Result 타입을 사용하여 명시적으로 처리
- 문서화 주석:
///를 사용 - 모듈 구조: 명확하게 분리
- 테스트: 새로운 기능에는 적절한 테스트 작성
TypeScript/React 코딩 규칙
- TypeScript strict 모드 사용
- 함수형 컴포넌트와 hooks 사용
- 타입 정의: 명시적으로 작성
- 컴포넌트: 단일 책임 원칙 따르기
- 인터페이스: 가능하면 Interface 사용
- Props: 인라인 형식 사용하지 않기
파일 구조
- FSD(Feature-Sliced Design) 아키텍처 따르기
- 네이밍 컨벤션:
- 변수와 함수: camelCase
- 상수: UPPER_SNAKE_CASE
- 컴포넌트: PascalCase
- 파일명: kebab-case
커밋 메시지 규칙
형식
타입
feat: 새로운 기능fix: 버그 수정docs: 문서 변경style: 코드 포맷팅, 세미콜론 누락 등refactor: 코드 리팩토링test: 테스트 추가 또는 수정chore: 빌드 프로세스, 보조 도구 변경
예시
테스트
단위 테스트
UI 테스트
수동 테스트
풀 리퀘스트 가이드라인
PR 제목
- 명확하고 간결하게 작성
- 변경사항을 한 줄로 요약
- 이슈 번호 포함 (예: "Fix #123")
PR 설명
리뷰 프로세스
- 자동 검사: CI/CD 파이프라인 통과
- 코드 리뷰: 최소 1명의 관리자 승인
- 테스트: 모든 테스트 통과
- 병합: 관리자만 병합 가능 (Squash and merge 권장)
문제 해결
일반적인 문제
빌드 실패:
테스트 실패:
Tauri 빌드 오류:
커뮤니티
소통 채널
- GitHub Issues: 버그 리포트, 기능 요청
- GitHub Discussions: 일반적인 질문, 아이디어 공유
- Pull Requests: 코드 리뷰, 토론
행동 강령
모든 기여자는 행동 강령을 준수해야 합니다.
라이선스
기여하시는 모든 코드는 프로젝트와 동일한 라이선스(MIT/Apache-2.0)로 배포됩니다.
감사
모든 기여자분들께 감사드립니다! 여러분의 기여가 Cheolsu Proxy를 더 나은 도구로 만들어줍니다.
더 자세한 정보가 필요하시면 개발 환경 설정을 참조하세요.
