Skip to content

Another-Glass/Assignment1_Team1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

원티드 백엔드 프리온보딩 1차 과제

👨‍💻 원티드 프리온보딩 어나더글라스 팀입니다.

6명의 안경잡이 개발자들의 시선과 관점이 담긴 과제입니다.

무던히 포기하지 않고 견디고 견뎠던 그 시간들이 변함없는 단 하나의 해답임을 믿습니다.

PRs Welcome Hits issues






🎤 소개

이 레포지토리는 원티드 프리온보딩 백엔드 코스 1차 과제를 위해 만들어졌습니다.

  • 일정 : 2021년 11월 1일(월) 오후 11시 ~ 11월 3일(수) 오전 10시


🧑🏻‍💻 팀원 소개

팀장 박상수 팀원 김성연 팀원 최준호
blog: Plus Ultra
github: epitone
blog: sudocorp
github: SibaDoge1
blog: raejun92.log
github: raejun92
sprint1 sprint1 sprint1
개발 환경 설정 개발 환경 설정 개발 환경 설정
사용자 API, 게시글 API 댓글 API 게시글 API
프로젝트 회고 프로젝트 회고 프로젝트 회고



📕 과제 내용

개발 요구사항

  • 원티드 지원 과제 내용 포함
  • 게시글 카테고리
  • 게시글 검색
  • 대댓글(1 depth)
    • 대댓글 pagination
  • 게시글 읽힘 수
    • 같은 User가 게시글을 읽는 경우 count 수 증가하면 안 됨
  • Rest API 설계
  • Unit Test
  • 1000만건 이상의 데이터를 넣고 성능테스트 진행 결과 필요


📕 과제 해결 방안

  • Node.js, express, mongoDB, mongoose를 활용해서 게시판 CRUD API, 회원가입 로그인 API, 댓글 CRUD를 구현했습니다.
  • 인증, 인가를 위해 JWT를 활용했습니다.
  • 코드 컨벤션, 커밋 컨벤션, Git Flow를 지켜가며 작업했습니다.
  • Github Project, 마일스톤을 활용해서 백로그, 이슈 관리를 진행했습니다.
  • 계층 분리를 통해 코드의 가독성을 높였습니다.
  • 게시글마다 게시글 카테고리를 구분할 수 있게 설정했습니다.
  • 게시글 검색을 할 때, 게시글 제목 검색, 게시글 본문 검색, 게시글 제목+본문 검색을 할 수 있게 설정했고, 정규식을 활용한 검색방법을 도입했습니다.
  • 게시글 읽힘 수의 경우, 한 유저가 하나의 게시글을 중복으로 들어간 경우, 읽힘 수가 증가하지 않도록 설정헀습니다.


🛠 실행 방법

  • 레포지토리를 clone 받거나, 압축을 해제한 후 npm install을 통해 환경 셋팅을 진행합니다.

  • npm start를 통해 서버를 구동합니다.

  • src 폴더에 .env 파일을 설정해서, 환경변수를 설정합니다.

  • .env 파일 설정 방법
    MONGO_URL="mongoURL"
    PORT=4000
    JWT_SECERT="wanted"
    JWT_ALGO="HS256"
    


🗂 과제 확인 및 평가 API 명세서

  • Postman을 활용하여 API 작동 테스트를 진행했습니다.
  • root 디렉토리의 1weak-1st.postman_collection.json 파일을 Postman에 import하여 테스트 가능합니다.
  • 배포된 서버 주소 및 자세한 API 명세는 아래에서 확인 가능합니다.
  • 🗂 API Description Link


😎 컨벤션 설정



🛠 Dependencies



🌲 File Tree


📦src
 ┣ 📂bin
 ┃ ┗ www
 ┣ 📂config
 ┃ ┣ db.js
 ┃ ┗ secretKey.js
 ┣ 📂controllers
 ┃ ┣ postController.js
 ┃ ┗ userController.js
 ┣ 📂global
 ┃ ┗ routes.js
 ┣ 📂lib
 ┃ ┣ encryption.js
 ┃ ┗ jwt.js
 ┣ 📂middlewares
 ┃ ┗ auth.js
 ┣ 📂models
 ┃ ┣ postModel.js
 ┃ ┗ userModel.js
 ┣ 📂routes
 ┃ ┣ globalRouter.js
 ┃ ┣ postRouter.js
 ┃ ┗ userRouter.js
 ┣ 📂service
 ┃ ┣ postService.js
 ┃ ┗ userService.js
 ┣ 📂utils
 ┃ ┣ 📂db
 ┃ ┃ ┣ auto-id-setter.js
 ┃ ┃ ┗ index.js
 ┃ ┣ responseMessage.js
 ┃ ┣ statusCode.js
 ┃ ┗ util.js
 ┣ 📂views
 ┃ ┣ error.jade
 ┃ ┣ index.jade
 ┃ ┗ layout.jade
 ┣ .babelrc
 ┣ .env
 ┣ .eslintrc.json
 ┣ .gitignore
 ┣ .prettierrc.json
 ┣ app.js
 ┣ package-lock.json
 ┗ package.json

Releases

No releases published

Packages

No packages published