드디어 중급 프로젝트 시작이다!!
지난 초급 프로젝트는 팀원들 모두 첫 프로젝트를 진행하는 상황이라 소통과 일정 관리, 그리고 업무 분담 면에서 많은 어려움이 있었습니다. 작업이 겹치거나 누락되는 경우도 있었고, 서로의 의견을 조율하다가 오전을 모두 사용한 적도 있었습니다. 이런 경험은 당시에는 힘들었지만 팀 프로젝트에서 무엇이 중요한지를 배우는 값진 기회였습니다.
중급 프로젝트를 시작하며 설레는 마음도 크지만 긴장감도 함께 느껴집니다.
이전 경험을 바탕으로 소통을 더욱 원활히 하고 일정 관리와 업무 분담을 철저히 계획해 프로젝트를 성공적으로 마무리하며 팀원들과 함께 좋은 결과를 만들어내고 싶습니다. 이번에는 더 나은 협업을 통해 성장과 성취를 모두 이루는 뜻깊은 시간을 기대해 봅니다✨✨
기술 스택
- Next.js: 리액트는 SPA(Single Page Application)이고, CSR(Client Side Rendering) 기반으로 앱의 첫 로딩시간이 길고, SEO 가 좋지 않다는 단점이 있다. 이를 해결하기 위해 SSR(서버 사이드 렌더링), SSG(정적 사이트 생성), 파일 기반 라우팅, 성능 최적화 등 다양한 기능을 기본적으로 제공하는 Next.js를 선택했습니다.
- TypeSciprt: ts는 컴파일 과정에서 오류를 잡아내기 때문에 오류를 잡아내기 쉽고, 협업 시 팀원들이 작성한 코드에 타입이 명시되어 흐름을 쉽게 파악할 수 있기 때문에 선택했습니다.
- Module Css: 컴포넌트 단위로 파일을 분리하고 스타일을 적용할 수 있어 클래스 이름 충돌을 방지해 주기 때문에 선택했습니다.
- Redux: Redux는 많은 대규모 프로젝트에서 사용되고 있는 상태 관리 도구이기 때문에 학습을 통해 최신 트렌드와 함께 실제 프로젝트에서의 활용 방법을 익히기 위해 선택했습니다.
- Vercel: Next.js 프로젝트와의 뛰어난 호환성을 제공하며 간편하게 배포와 호스팅이 가능하기 때문에 선택했습니다. (빠른 배포 속도 & 무료)
- Notion: 팀원들과 함께 Notion 페이지를 관리하며 프로젝트에 맡겨진 업무, 진행 현황 등을 실시간으로 공유하고 피드백을 받을 수 있어 선택했습니다.
네이밍 컨벤션
디렉토리 & 파일명
케밥 케이스(kebab-case) ex) item-category
컴포넌트
파스칼 케이스(PascalCase) ex) ItemComponent
변수명
카멜 케이스(camelCase) ex) itemData
커스텀훅
use + 파스칼 케이스(PascalCase) ex) useItemData.tsx
이미지 & 아이콘
img, ic + 스네이크 케이스(snake_case) ex) img_item.svg ic_item.svg
className
케밥 케이스(kebab-case) ex) button button-primary
id
파스칼 케이스(PascalCase) ex) Button ButtonPrimary
효율적으로 PR 관리하기
1. GitHub에서 이슈 생성하기
Labels, Assignees, 및 Projects 추가
- Labels: 이슈의 성격 예) bug, enhancement, documentation.
- Assignees: 해당 이슈를 담당할 사람
- Projects: ‘프로젝트 현황’
Submit new issue
- "Submit new issue" 버튼을 클릭하여 이슈를 생성합니다.
2. 이슈 생성 시 #00_제목으로 브랜치 자동 생성
이슈 생성 시 자동생성 된 브랜치를 fetch 를 통해 가져옴
- 터미널에서 작업을 위해 새로운 브랜치를 생성합니다. 브랜치명에 이슈 번호를 포함하여 추적이 쉽게 만듭니다.
- Git Flow
- 브랜치를 나누는 방법 중에 하나이다.
- 작업의 성격에 따라 브랜치를 나눌 수 있다.
⭐️main(master) 서비스를 직접 배포하는 역할을 하는 브랜치 ⭐️feature(기능) 각 기능 별 개발 브랜치 develop(개발) feature에서 개발된 내용을 가지고 있는 브랜치 release(배포) 배포를 하기 전 내용을 QA(품질 검사)하기 위한 브랜치 hotfix(빨리 고치기) main 브랜치로 배포를 하고 나서 버그가 생겼을 때 빨리 고치기 위한 브랜치 - feature 브랜치는 주로 'feat/{기능_이름}'으로 명명
ex) feature/login - 이슈 생성 시 자동으로 ‘feature/#번호_제목’으로 자동 생성됨
git fetch로 origin(원격 저장소)의 내용을 local로 가져오기
- Git Flow
자동생성된 브랜치로 이동 후 작업
- git checkout ‘자동 생성된 branch’ : 자동생성된 branch로 이동하기
- ex) git checkout feature/#50_PR-템플릿-만들기
- 코드 작업 및 커밋
git add . gitmoji -c
원격 저장소로 푸시
- 로컬 브랜치를 원격 저장소에 푸시합니다.
git push origin ‘자동 생성된 branch’
3. Pull Request (PR) 작성하기
- GitHub에서 Pull Request 생성
- GitHub 저장소에서 **Pull requests** 탭을 클릭하고, New pull request 버튼을 누릅니다.
- 비교할 브랜치를 선택하여 PR을 만듭니다.
- base : develop ,
- compare : 이때까지 작업한 branch
- PR document 작성
PR 설명에는 다음 내용을 포함합니다:- 이슈 번호
- PR 본문에 이슈 연결 키워드 + #이슈번호 작성
- 본문에 작성하면, 해당 이슈에서 PR이 연결된 것을 확인할 수 있다.
- 이슈 연결 키워드
- close / closes / closed: 완료된 상태로 단순히 닫는다
- fix / fixes / fixed: 이슈의 문제나 버그를 수정하여 완료하는 경우
- resolve / resolves / resolved: 이슈의 해결을 완료하는 의미로, 문제나 과제를 종결짓는 뉘앙스
- PR 본문에 이슈 연결 키워드 + #이슈번호 작성
- 변경 사항 요약: 어떤 수정이 있었는지 요약.
- 테스트 사항: 변경 사항을 테스트한 내용 (필요시).
- 이슈 번호
- Create pull request 버튼 클릭 하여 PR 생성
4. merge 및 다음 작업 과정
- 팀원들이 확인 및 답글을 달면 Merge pull request 버튼 활성화
- merge를 하게 되면 이슈가 closed 되고, project 탭의 작업 상태도 done으로 변경
소개 끝났으니 힘내서 프로젝트 진행해 보겠습니다🔥🔥🔥🔥
'프로젝트 > Next+TypeScript' 카테고리의 다른 글
[Taskify] 무한스크롤 - 해결 (4) | 2024.12.19 |
---|---|
[Taskify] 대시보드 상세 - 무한 스크롤 (4) | 2024.12.19 |
[Taskify] 대시보드 상세 페이지 (4) | 2024.12.17 |
[Taskify] Chip(공통 컴포넌트) 추가 (4) | 2024.12.16 |
[Taskify] 버튼(공통 컴포넌트) 추가 (4) | 2024.12.13 |