종류 | 브랜치명 | 예시 | 설명 |
---|---|---|---|
Main | main |
main |
최종 배포용 브랜치 |
Develop | dev |
dev |
기능 통합 및 배포 전 작업 브랜치 |
Feature | feature/이슈번호-기능명 |
feature/5-signin |
개별 기능 개발 브랜치 |
Hotfix | hotfix-버전 |
hotfix-1.1.4 |
배포 이후 긴급 수정 브랜치 |
Release | release-버전 |
release-1.1 |
배포 준비를 위한 브랜치 |
규칙
- 기능 개발 전, 이슈를 생성한 후 브랜치를 생성합니다.
- 브랜치명은 소문자를 사용하고, 단어는 또는
/
로 구분합니다.- 브랜치는 관련 이슈에 링크되어야 합니다.
- 깃허브에 익숙지 않은 팀원을 위해 한 줄 커밋 사용
- 한국어로 내용 작성
형식
<타입>: <변경 내용>(<이슈 번호>)
커밋 메시지는 현재까지의 수정사항을 한눈에 파악 가능하게 작성합니다.
예시:
feat: 기본 CRUD 기능 작성(#3)
커밋 유형 | 의미 |
---|---|
feat | 새로운 기능 추가, 컴포넌트 파일 생성 |
fix | 코드(버그) 또는 UI의 문제 해결 |
docs | 문서 수정 |
style | 코드 formatting, 세미콜론 누락, 코드 자체의 변경이 없는 경우 (엔터 쳐서 한줄 비우는 경우) |
refactor | 코드 리팩토링 |
test | 테스트 코드, 리팩토링 테스트 코드 추가, 더미 데이터 사용시 |
chore | 패키지 매니저 수정, 그 외 기타 수정 ex) .gitignore |
design | CSS 등 사용자 UI 디자인 변경 (tailwind 사용시) |
types | 타입 및 인터페이스 정의 |
comment | 필요한 주석 추가 및 변경 |
rename | 파일 또는 폴더 명을 수정하거나 옮기는 작업만인 경우 |
remove | 파일을 삭제하는 작업만 수행한 경우 |
revert | 원래의 코드로 되돌리는 경우 |
init | 초기화 관련 작업 |
!BREAKING CHANGE | 커다란 API 변경의 경우 |
!HOTFIX | 급하게 치명적인 버그를 고쳐야 하는 경우 |
타입 | 예시 |
---|---|
상수(Constant) | SCREAMING_SNAKE_CASE (MAX_VALUE, API_URL) |
Boolean 변수 | is접두사 (isActive) |
일반 변수, 함수 | camelCase 사용 (userName, itemList) |
컴포넌트 | PascalCase (UserCard, LoginForm) |
커스텀 훅 | use + PascalCase (useScroll, useAuth) |
배열 | 복수형 사용 (users, items) |
객체 | 단수형 사용 (user, item) |
이벤트 핸들러 | handle 접두사 (handleSubmit) |
비동기 함수 | fetch 접두사 (fetchDat) |
타입스크립트 | type |
- 모든 작업은 이슈 생성 → 브랜치 생성 → 작업 → PR(develop 브랜치에) 순으로 진행합니다.
- 하나의 브랜치에서는 하나의 이슈만 처리합니다.
- 커밋 메시지는 위 컨벤션을 따릅니다.
- 코드 변경 사항은 PR 전 Lint & Formatter를 통과해야 합니다.
- PR과 이슈 템플릿을 적극 사용해 주세요.
폴더 | 설명 |
---|---|
pages/ |
페이지 라우팅에 해당하는 파일 (예: /login, /qna, /main) |
components/ |
버튼, 카드, 모달 등 공통적으로 쓰이는 UI 단위 컴포넌트 |
hooks/ |
자주 쓰는 로직을 재사용할 수 있도록 만든 커스텀 훅 |
lib/ |
API 요청 함수, fetch wrapper, 공통 유틸 함수 |
types/ |
사용자, 게시글, API 응답 등에서 사용되는 타입 정의 |
assets/ |
프로젝트에서 사용하는 이미지, 아이콘 등 정적 파일 |
api/ |
서버와 통신하는 API 호출 관련 함수 모음 (엔드포인트별 분리 권장) |
store/ |
전역 상태 관리 (예: Zustand, Redux 등) 관련 로직 및 상태 정의 |
@components/ui/
안에 컴포넌트별로 폴더 만들어서 사용해 주세요.- 인터페이스 들어가는 건 전부
@types/
안으로 부탁드립니다. - UI 컴포넌트 폴더 내 파일 구조는 아래 이미지 참고해 주세요.
