"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"
}
```