# 5주차 공부 할 목록
## 개발해야 할 기능
- [ ] 회원가입/로그인 구현
- [ ] 전체적인 DB 및 API 구상
- [ ] 월에 해당하는 화면으로 이동
- [ ] 내역/달력/통계 탭 구현
- [ ] 거래 내용 입력
- [ ] 수입/지출 필터링
- [ ] 거래 내역 리스트 수정, 삭제
- [ ] 통계 -> 카테고리별 지출 그래프화
- [ ] [선택] 달력화면 구현 + 수입/지출 필터링
- [ ] [선택] 결제 수단 관리 팝업
- [ ] [선택] 일별 지출 그래프화
---
## 개발 순서
### 1단계
- Node Express 구조 구상
- DB ERD 구상
- Web API 구상
### 2단계
- Node express 프로젝트 만들기
- 서버 자동배포
- DB Table 만들기 및 DB 연결
### 3단계
- JWT 인증 구현
- **Web API 구현**
### 4단계
- FE 구조 구상
- FE 레이아웃 구상
- 테스트 구조 구상
### 5단계
- **FE 만들기**
- 테스트 코드 작성
---
## FE
- **데이터 시각화**
- SVG
- https://seesparkbox.com/foundry/how_to_code_an_SVG_pie_chart
- **Observer Pattern**
- https://pjh3749.tistory.com/266
- **캐시**
- **테스트**
- **SPA Routing**
- https://poiemaweb.com/js-spa
- History
- https://lucas.codesquad.kr/boostcamp-2020/course/%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-JS/6%EC%A3%BC%EC%B0%A8-%EA%B0%80%EA%B3%84%EB%B6%80%EC%84%9C%EB%B9%84%EC%8A%A4(2-2)/FE-%EB%9D%BC%EC%9A%B0%ED%8C%85
## BE
- Mysql
- **ERD**
- https://lucas.codesquad.kr/boostcamp-2020/course/%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-JS/5%EC%A3%BC%EC%B0%A8-%EA%B0%80%EA%B3%84%EB%B6%80%EC%84%9C%EB%B9%84%EC%8A%A4/BE---ERD
- 조인, 정규화 ,인덱스
- https://lucas.codesquad.kr/boostcamp-2020/course/%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-JS/5%EC%A3%BC%EC%B0%A8-%EA%B0%80%EA%B3%84%EB%B6%80%EC%84%9C%EB%B9%84%EC%8A%A4/%EC%A1%B0%EC%9D%B8,-%EC%A0%95%EA%B7%9C%ED%99%94,-%EC%9D%B8%EB%8D%B1%EC%8A%A4
- **서버 자동배포**
- https://github.com/boostcamp-2020/javascript-w3-todo/blob/J035/deploy.sh
- 유저 인증
- Passport
- https://www.opentutorials.org/course/3402/21864
- Oauth
- **JWT**
- https://youtu.be/7Q17ubqLfaM
- 서버 구조
- https://velog.io/@hopsprings2/%EA%B2%AC%EA%B3%A0%ED%95%9C-node.js-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90-%EC%84%A4%EA%B3%84%ED%95%98%EA%B8%B0
- https://lucas.codesquad.kr/boostcamp-2020/course/%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-JS/5%EC%A3%BC%EC%B0%A8-%EA%B0%80%EA%B3%84%EB%B6%80%EC%84%9C%EB%B9%84%EC%8A%A4/BE-Express-%EB%AA%A8%EB%93%88-%EB%B6%84%EB%A6%AC%ED%95%98%EA%B8%B0
## 프로젝트
- Git
- **issue 등록시 담당자/milestone/작업의 크기 등 포함**
- https://uang.tistory.com/12
- git tag 활용
- git commit 컨벤션 활용
```
- feat: 새로운 기능을 추가할 경우
- fix: 버그를 고친 경우
- docs: 문서 수정한 경우
- style: 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우
- refactor: 프로덕션 코드 리팩터링
- test: 테스트 추가, 테스트 리팩터링 (프로덕션 코드 변경 없음)
- chore: 빌드 테스크 업데이트, 패키지 매니저 설정할 경우 (프로덕션 코드 변경 없음)
```
## 옵저버 패턴 개인 정리
- View = Observer = Handler
- Model = Observerable = EventSource
`Model.observers = [view1, view2, view3]`
model.addEventlistener(e => {
})