# errorHadDuck readMe
## 기술 스택
### Front
- HTML
- React
- react-router-dom
- style : bootstrap4, font-awesome, font(https://fonts.google.com/?subset=korean 참고해서 정하기)
### Back
- 서버 : NodeJS (AWS EC2)
- 미들웨어 : Express, cors
- DB : mysql (AWS RDS-mysql)
- orm : sequelize
- 보안 : crypto ([참고] https://www.zerocho.com/category/NodeJS/post/593a487c2ed1da0018cff95d )
```javascript=
crypto.pbkdf2('입력비밀번호', '기존salt', 100000, 64, 'sha512', (err, key) => {
console.log(key.toString('base64') === '기존 비밀번호');
});
```
:AWS COGNITO (https://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/what-is-amazon-cognito.html)
- 세션검증 : cookie-parser
## 팀원정보
| 이름 | 스택 | TIL blog | github username |
| ------ | --------- | --------------------------------- | --------------- |
| 조아라 | front-end | https://grin-quokka.tistory.com/ | grin-quokka |
| 박강호 | front-end | https://medium.com/@whatorjust/ | whatorjust |
| 이해준 | back-end | https://medium.com/@0oooceanhigh/ | liftingturn |
| | | | |
---
# 프로젝트 기획 및 범위설정
## bare minimum
1. 회원기능 (아이디, 비밀번호, 이메일) (node.js,로컬mysql)
2. 에러 로그 게시판 (CRUD)
3. 채팅창('꽉꽉'만 말함)
4. 배포용 서버 업로드 (EC2,RDS)
5. 서버 - router 연결
6. AWS 배포 (S3)
7. css : bootstrap4 사용
8. 보안 : crypto (세션, 해싱)
## advance
1. 회원 정보 수정 (마이페이지)
2. 비밀번호 관리 : AWS COGNITO
3. 클라우드-프론트 연동(https)
4. css : tailwind 사용
5. 개인 통계
6. 글에 태그 달아서 sorting
7. 답변 달릴 시 알림 (mailgun.com)
8. 서비스 이용 통계 (google analytics)
## nightmare
1. 회원 정보 추가 (이미지 등)
3. 챗봇 (api 활용)
4. sns 공유 기능
5. 회원들끼리 통계/랭킹
6. 다크 모드
7. 채팅 내용 저장, 다시 보기
8. 리덕스 적용
---
API 정의
---
## 시스템 아키텍쳐 설계 (기능 Flow, 컴포넌트 구성)
### flow
- 로그인 페이지 (로그인 / 회원가입)
- - 회원가입 페이지
- - 기입한 정보를 보여주는 페이지
- 홈으로 이동
- - 로그인
- overview (총 문제, 해결된 문제, 미해결된 문제) - 뱃지로 갯수, 카드 형식(최근 몇개만)
- nav bar
- 게시글 목록 페이지(해결된 창, 미해결된 창)
- 작성하는 페이지
- 수정하는 페이지
- 프로젝트 진행을 Sprint 로 구분.
(각 스프린트는 하나의 일정한 기능단위 완성으로 구성되어야 합니다. ex) Sprint1 완성시 기능을 제외한 프로젝트 컴포넌트 및 영역 구분 완료)
- DB 설계
-
#### team rule
1. 10시에 칼퇴근
2. 10:15 ~ 10:35 스탠드 업 미팅
3. 19:10 ~ 19:40 팀 자체 코드 리뷰, merge
4. 불만사항, 건의사항 회의시간에 꼭 말하기
5. DM으로 욕하지 말기
#### 기타 rule (공부 후 논의)
- MVC 구조
- 디렉토리 구조 ..? (이미지는 어디에 저장할지 등)
- gitignore
- eslint
- prettier
- 버전 (package.json)
- git flow 연습용 저장소
- 기능별 branch 분리(-b)
- merge, pull 연습
- 회의 / 코드리뷰 → 로그 적기 md share로 작성
- 커밋 시기 룰, 커밋 메세지 룰
(참고 : https://meetup.toast.com/posts/106)
1. 제목과 본문을 한 줄 띄워 분리하기
2. 제목은 영문 기준 50자 이내로
3. 제목 첫글자를 대문자로
4. 제목 끝에 . 금지
5. 제목은 명령조로
6. 본문은 영문 기준 72자마다 줄 바꾸기
7. 본문은 어떻게보다 무엇을, 왜에 맞춰 작성하기
- 학습할 시간도 task에 넣기
- 매일 코드리뷰 후 merge -> 시간 정하기
- 일하는 시간 정하기
### DOC
- [서버 저장소]-fork 후 업뎃
- [클라이언트 저장소]-fork 후 업뎃
- [미로](https://miro.com/app/board/o9J_kwKhf6c=/)
- [노션 페이지](https://www.notion.so/6-errorHadDuck-TEAM-QUACK-61747e9aaa58486fadacb4cd54fb3c85)
- [오븐 프로토타입](https://ovenapp.io/view/O87H43tYQiolsC5EubzfmMvL0ZF4oOjk/q65D8)
| http method | endpoint | req(json) | res(성공/실패) | detail | usage | example |
| ----------- | ---------------------- | ------------------------- | ------------------------------- | ------------------------------------------------------ | -------------------------- | ------- |
| POST | /users/login | username, password | 200/204 | 로그인 | 로그인 | |
| POST | /users/signup | username, email, password | 200/204 | 회원가입 제출 | 회원가입 제출 | |
| GET | /posts | - | 200/204 | 모든 게시글 요청 | 모든 게시글 요청 | |
| GET | /posts?iscomplete=bool | - | 200/204 | 미해결/해결 모든 글 요청 | 미해결/해결 모든 글 요청 | |
| POST | /posts | 해당 페이지 모든 정보 | 200+postid/204 | 등록 이후 받은 postid 통해서 개별 글 페이지 이동 | 새 글 등록 | |
| PATCH | /posts/:postid | 변경된 모든 필드 | 200+postid/204 | | | |
| DELETE | /posts/:postid | - | 200/204 | 서버에서는 cascade delete등 관련된 연결,데이터 다 삭제 | 개별페이지에서 삭제 클릭시 | |
| GET | /posts/:postid | - | 200+개별페이지구성 모든정보/204 | postid 1개에 해당하는 개별페이지 구성정보 전부 return | 개별 글 페이지 진입 | |
| | | | | | | |