휴지통
⛳ 팀 마일스톤
✍️ 팀 회의록
🏁 개인 목표
- 곽연경 : 1. 투박하지 않은 UI 2. 상태관리에 대한 고민, 선택 3. 코드 퀄리티 4. 협업 경험
- 김나현 : 기획부터 배포까지 협업의 전체적인 프로세스를 이해하는 것.
- 박종운 : 협업 경험과 실제 서비스 경험 쌓기, 디자인 시스템 적용해보기
- 신지희 : 이번 목표는 1. styled-components에 익숙해지기 2. 컴포넌트 재사용성에 집중해 구현하기. 3. 유저가 ‘사용할만한’ 프로젝트를 만들기. 완성도 높은 프로젝트가 되었으면 한다.
- 최용재 : 겉이 이쁜 프로젝트보다는 코드 완성도가 높은 결과물 만들기. 팀원들이 게을러질 수 있도록 재사용성 높이기.
🤝 팀 문화
Agile하게! ⇒ 여러 번의 짧은 스프린트로 개발 진행하자
- 스프린트 단위
- 권장 4~5일, 최대 1주 단위 스프린트
- 4번 개발 스프린트
- QA 스프린트
- 시간 남으면
- 하루 이틀
- 스프린트 과정
- 스프린트 첫날
- 스프린트 목표 세우기
- 팀 목표
- 역할 분담
- 본인이 하고 싶은 일 선정
- 예상 시간 산정
- 다 나뉘어지면 회의
- 둘째날부터
- 오픈 스크럼 (최대 25분)
- 컨디션 점수 + TMI
- 오늘 할 거
- 깃헙 칸반보드 화면공유
- 각자 지금 맡은 기능 진행상황을 %로 얘기
- 질문사항
- 고민되는 부분
- 에러 트러블슈팅 도와주세용
- 클로징 스크럼
- 오늘 한 거
- 체크리스트 체크
- 질문사항
- 고민되는 부분
- 에러 트러블슈팅 도와주세용
👥 팀원 역할
개발환경세팅 : 기획서 대로 초기 개발 환경 구성 후 깃헙에 push, 다른 사람들은 해당 push pull로 동일 환경 구성 ⇒ 1명
노션 관리(회의록 작성, 팀 마일스톤(일정) 관리, 등) ⇒ 1명
깃허브 관리 (PR 리뷰 누락 확인 및 알림, issue+PR 템플릿, label 관리, 깃헙 Readme 파일 관리…) ⇒ 1명
디자인(와이어프레임, 컴포넌트, 디자인 시스템(디자인 토큰 관리), 시퀀스 다이어그램), ⇒ 2명 정도??
기획 : 시퀀스 다이어그램 (UML) + UX 고민 + (상태관리)
🔧 프로젝트 기술 스택
📚 테스크
To-do
8In progress
8Complete
9💬 프로젝트 컨벤션
Issue 템플릿
PR 템플릿
커밋 규칙
형식
commit태그: commit내용
커밋 태그
태그 | 설명 |
Init | 프로젝트 세팅 |
Feat | 새로운 기능 추가 |
Docs | 문서 수정, Storybook stories 관련 변경 |
Style | css ui만 변경 |
Fix | 버그 수정 (코드 수정 O) |
Refactor | 파일명 폴더명 이동 등 변경, 버그 수정 외의 코드 수정 |
Test | 테스트 관련 코드 추가 |
Chore | 라이브러리 설치, 설정 변경, 기타 |
Comment | 주석 |
네이밍
- TS 타이핑 시 Type 접미사 추가
- props 타입 네이밍 형식
컴포넌트명 + Props + Type
- 배열 데이터 네이밍 형식
- 배열은 복수로 네이밍
- 요소는 단수로 네이밍
- 네이밍 규칙
함수, 변수, index.tsx가 없는 폴더, 나머지 파일 => camelCase 컴포넌트, 컴포넌트 파일, 타입, index.tsx가 있는 폴더 => PascalCase 상수 => SNAKE_CASE
- 이벤트 객체 네이밍
- e
- 이벤트 핸들러
- handle 접두사
- 핸들러를 props로 넘길 때 on 접두사
- boolean 변수 네이밍
- is 접두사
- CRUD 네이밍
function gen-* function make-* function get function set function create function remove function delete
타이핑
- 컴포넌트 props 타입 정의 위치 → 해당 파일에서 named export 로 정의
- 나머지 타입 (API 타이핑, …) → 별도의 파일에 named export로 정의
- 컴포넌트 children props 타입→ React.ReactNode로 통일
- interface vs type 사용 조건
- interface : 객체
- type: 나머지
- type: 나머지
- type: 나머지
기타 코드
- 경로 alias
~
: /src
- import 경로 정책
- 같은 폴더에 있는 파일은 상대 경로(
./*
)를 사용한다. - 다른 폴더에 있는 파일은 절대 경로(
~/*
)를 사용한다.
- import 순서
- react > 라이브러리 > component > hook > atoms > utils > types > constants > css
- 함수 작성 방식
- 기본적으로 함수 표현식
- 예외: this binding 등 필요한 경우 function 으로 정의
export default
는 코드 마지막 줄에 추가
폴더구조 + 컴포넌트 분류
src - api - recoil - login -atoms.ts - search -atoms.ts -selectors.ts - pages - hooks - api - comment - useCreateComment.ts - useDeleteComment.ts - notification - useCreateNotification.ts - useGetNotification.ts - useReadNotification.ts - search - ... - components - templates - common - Button - Badge - Avatar - ... - constants - utils - types - api - ... - common.ts - stories - App.tsx - main.tsx
CSS
리코일
// 공식문서 가이드 // 선언 export const somethingState = atom({ key: "somethingState", default: ... }); // 사용 // 상태뒤에 State 접미사를 사용한다면 이름이 겹치는 문제가 발생 const [something, setSomething] = useRecoilState(somethingState);
폴더 구조
atom들은
recoil/도메인/atoms.ts
selector들은 recoil/도메인/selectors.ts
// 제가 사용하는 방법 (종운) // 선언 const somethingAtom = atom({ ... }); // 사용 const [somethingState, setSomethingState] = useRecoilState(somethingAtom);
에러 메시지 컨벤션
도메인: 에러 메시지 (에러가 발생한 메서드/[상세])