---
# System prepended metadata

title: errorHadDuck readMe

---

# 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  | 개별 글 페이지 진입        |         |
|             |                        |                           |                                 |                                                        |                            |         |

