이 레포지토리는 원티드 프리온보딩 백엔드 코스 1차 과제를 위해 만들어졌습니다.
- 일정 : 2021년 11월 1일(월) 오후 11시 ~ 11월 3일(수) 오전 10시
팀장 어유선 | 팀원 김현길 | 팀원 이동훈 |
---|---|---|
blog: Makkiato github: Makkiato |
blog: gusrlf14 github: hyunghilkim |
blog: dongjay00.log github: dongjay00 |
개발 환경 설정 | 개발 환경 설정 | 개발 환경 설정 |
테크리더, QA, devops | API | DB |
프로젝트 회고 | 프로젝트 회고 | 프로젝트 회고 |
- 원티드 지원 과제 내용 포함
- 게시글 카테고리
- 게시글 검색
- 대댓글(1 depth)
- 대댓글 pagination
- 게시글 읽힘 수
- 같은 User가 게시글을 읽는 경우 count 수 증가하면 안 됨
- Rest API 설계
- Unit Test
- 1000만건 이상의 데이터를 넣고 성능테스트 진행 결과 필요
- Node.js, express, mongoDB, mongoose를 활용해서 게시판 CRUD API, 회원가입 로그인 API, 댓글 CRUD를 구현했습니다.
- 짧은 시간내에 효율적으로 완성을 하기위해 DB, API, QA 및 Devops로 업무를 분담하였습니다.
- 앞으로 한달간의 일정을 위해 앞서가기보다는 함께가기로 했습니다.
- Commit마다 함께 더 나은 코드를 위해 고민했습니다.
- 게시글과 댓글 대댓글을 함께 불러오는 과정에서 Promise로부터 여러개의 Promise로 나뉘는 logic을 발견하였습니다. 이렇게 나뉜 Promise가 다 처리되는 것을 기다리면서도, 무작정 chainning 하는 것은 지양하기위에 Promise의 Queue를 사용해보자 하는 아이디어가 나왔고, Array.push를 이용해 임시로 활용해보았습니다
-
레포지토리를 clone 받거나, 압축을 해제한 후 npm install을 통해 환경 셋팅을 진행합니다.
-
npm start를 통해 서버를 구동합니다.
-
src 폴더에 .env 파일을 설정해서, 환경변수를 설정합니다.
-
.env 파일 설정 방법
MONGO_URL="mongoURL" JWT_SECERT_KEY="wanted"
- Postman을 활용하여 API 작동 테스트를 진행했습니다.
- 자세한 API 명세는 아래에서 확인 가능합니다.
- 🗂 API Description Link
-
"bcryptjs": "2.4.3" - https://www.npmjs.com/package/bcryptjs
-
"dotenv": "^10.0.0" - https://www.npmjs.com/package/dotenv
-
"express": "^4.17.1" - http://expressjs.com/
-
"jsonwebtoken": "8.5.1" - https://www.npmjs.com/package/jsonwebtoken
-
"mongoose": "^6.0.12" - https://www.npmjs.com/package/mongoose
📦src
┣ 📂functions
┃ ┣ auth.js
┃ ┣ board.js
┃ ┗ comment.js
┣ 📂middleware
┃ ┗ auth.js
┣ 📂models
┃ ┣ Board.js
┃ ┣ Comment.js
┃ ┣ Count.js
┃ ┗ User.js
┣ 📂PostmanTest
┃ ┣ TestRun_Collection_Sample.json
┃ ┗ TestRun_Sample_Result.json
┣ 📂routes
┃ ┣ auth.js
┃ ┣ comment.js
┃ ┗ post.js
┣ .gitignore
┣ README.md
┣ app.js
┣ package-lock.json
┣ package.json
┗ server.js