"compression": "^1.7.4", "cors": "^2.8.5", "helmet": "^4.1.1", "hpp": "^0.2.3", "morgan": "^1.10.0", ## 팀 규칙 ### 프로젝트 매니저 - 한 주를 담당할 프로젝트 매니저(이하 PM)를 매주 선정 - PM의 역할 - PM은 팀원들이 그라운드 룰을 잘 지키는지 확인 - 평일 아침 스크럼 및 회의 진행 ### 스크럼 - 매일 아침 10시 - 넋두리, 잡담, 하고 싶은 말 편하게 나누기 ### 회고 - 매일 저녁 6시 반에 모여 하루 개발 마무리 - 그날 그날 진척 상황, 어려운 점 등 공유 ### 짝코딩 - 기능 구현이 겹쳐서 협업이 필요할 때 짝코딩 요청 - JS: VS Code live share 사용 - SWIFT: 팀 뷰어 사용 ### 활동 규칙 - PR은 하루 1번이 아니라 기능별로 날림 - 하루에 1회 이상 회고 - 서운한 점이 있으면 💌마음의 편지함💌으로 저격할 수 있다 - 서로 그랬구나~ 시간 갖기 - 마음의 편지함에는 무조건 용용체🐉 사용! 서운했어용~ - 잘한 점은 무한 칭찬! - 항상 긍정적으로 생각하기! ## 커밋 컨벤션 - **[feat]** : 새로운 기능 추가 - **[docs]** : 문서의 수정 - **[style]** : (코드의 수정 없이) 스타일(style)만 변경(들여쓰기 같은 포맷이나 세미콜론을 빼먹은 경우) - **[refactor]** : 코드를 리펙토링, 파일 이동 - **[test]** : Test 관련한 코드의 추가, 수정 - **[chore]** : (코드의 수정 없이) 설정을 변경 - **[deploy]** : 배포 - **[env]** : 환경설정 파일 추가/수정/삭제 - **[fix]** : 버그 수정 Type: 대괄호(`[]`)안에 표기 Subject: 50자 이내 명령형으로 작성 - 대략적인 내용 요약 작성 - 제목 끝에 마침표 금지 Body: 커밋 내용 부연설명 - Subject의 내용 + commit 내용에 대한 이유 - 왠만하면 작성, 필수 x - 어떻게 보다는, 목적과 구현 내용 위주 - 한글로 작성 Footer: 이슈 관리시에만 작성 - 이슈 태그번호 (#001) 기재 ## 깃허브 규칙 ### ZeroCho님 Git workflow 참고 ## 코딩 컨벤션 ### iOS - [스위프트 API 가이드라인](https://gist.github.com/godrm/d07ae33973bf71c5324058406dfe42dd) - [스타일쉐어 스타일 가이드](https://github.com/StyleShare/swift-style-guide) ### JS #### 변수, 함수, 클래스 명명 규칙 - 창의적인 단어 쓰지 않기 (제일 떠오르기 쉽고 기본적인 단어) - 변수는 명사형으로 작성 - 함수는 서술형으로 작성 #### 기타 코딩 규칙 - html태그 선언 시 최대한 시멘틱한 태그 사용 - 모두가 approve 한 후에 merge 할 수 있다 - 코드 리뷰는 필수! 꼭 확인하기! #### eslint & prettier - 기본적으로 eslint airbnb를 따른다 - 추가하고 싶은 룰이 있을 경우 의견을 제시해서 논의 후에 반영 할 수 있다 ##### eslint ``` module.exports = { plugins: ['react-hooks'], extends: [ 'airbnb-base', 'plugin:react/recommended', 'plugin:jsx-a11y/recommended', 'plugin:import/errors', 'plugin:import/warnings', 'plugin:prettier/recommended', ], rules: { 'linebreak-style': 0, }, settings: { 'import/resolver': { node: { extensions: ['.js', '.jsx'], }, }, }, }; ``` ##### prettier ``` { "singleQuote": true, "semi": true, "useTabs": false, "tabWidth": 2, "trailingComma": "all", "printWidth": 100, "arrowParens": "always" } ```