Skip to content

프로젝트 설명

박찬얼 edited this page Jun 11, 2023 · 4 revisions

프로젝트 소개

42서울 학생들의 동료 학습을 돕기 위한 Q&A 서비스입니다.

문제정의

기존 42서울 학생들이 동료 학습을 위해 사용하는 슬랙의 채널의 불편함이 존재합니다.

  1. 카테고리의 부재: 같은 과제가 다양한 명칭으로 사용되어 정보가 분산되어 검색에 어려움이 생깁니다.

  2. 글과 댓글 구조: 슬랙은 단순한 글과 댓글 구조로 댓글들 사이의 의존관계를 파악하기 어렵습니다.

  3. 중복 질문: 위의 문제로 중복된 질문들이 생기고 이는 원하는 정보를 찾기 더욱 힘들게 만듭니다.

  4. 정보제공에 대한 보상 부재: 질문에 양질의 답변을 제공할 동기가 부족합니다.

해결 방법

  1. 카테코리의 부재

    tag를 사용하여 글의 특성을 나타내고 특정 tag를 포함한 글을 조회할 수 있도록 합니다.

  2. 글과 댓글 구조

    질문글, 답변글,각 글의 댓글을 이용하여 의존관계 파악을 용이하도록 합니다.

  3. 중복 질문

    검색 기능과 tag 기능,추천 많은 글 순서로 보기등을 이용하여 원하는 질문을 쉽게 찾도록 하여 중복 질문을 줄입니다.

  4. 정보 제공에 대한 보상 부재

    작성한 글에 대한 추천과 채택에 점수를 부여합니다. 그리고 월간 랭킹과 전체 랭킹으로 우수 유저에게 명예를 부여하고, 양질의 정보를 제공하도록 유도합니다.

사용 기술

통신 : REST API, Json
서버 : AWS lightsail / S3 / Nginx
개발 언어 : Javascript - NodeJS - ExpressJS / Javascript - React
데이터베이스 : Mysql / Redis
ORM : TypeORM
모니터링 : Google Analytics / Sentry
커뮤니케이션 : Slack
이슈관리 : Github
CI/CD : Actions
API 명세 : Swagger
버전 관리 : Git / GitFlow

프로젝트 설명

메인 페이지

image

질문글 리스트

  • 각 질문글의 제목, 내용의 일부, 태그, 답변수, 추천수, 조회수, 글 작성 날짜, 작성자 정보를 제공합니다.
  • 답변 수 글씨의 색상으로 채택 여부를 표현하여 해결된 질문인지 확인할 수 있도록 하였습니다.
  • 최근순, 인기순으로 정렬할 수 있도록 하였습니다.
  • 아직 채택이 완료되지 않은 글은 답변 필요 버튼으로 필터링하여 조회할 수 있도록 하였습니다.

랭킹기능

  • 점수를 얻은 상위 10명의 유저를 보여줍니다.
  • 전체 랭킹과, 월간 랭킹을 제공합니다.
  • 랭킹 정보는 Redis의 Sorted set을 이용하여 저장하고 있습니다.

페이지 네이션

  • 페이지 네이션으로 구현하여 탐색을 용이하게 하였습니다.

테그 리스트 페이지

image

태그 리스트

  • 사용된 태그의 리스트와 각 태그들의 사용된 수를 제공합니다. 각 태그를 클릭하여 해당 태그를 사용한 글들을 조회할 수 있습니다.

태그 사용한 글 조회

  • 특정 태그를 사용한 글 리스트를 제공합니다. 최신순, 추천순 정렬과 답변이 필요한 글 필터링이 가능합니다.

질문 글 페이지

image

질문 글 / 답변 글

  • 추천 비추천 기능, 채택 기능, 답변 기능, 댓글 기능, 답변 작성 기능을 제공합니다.

  • 채택된 답변은 파란색 테두리와 체크 표시로 식별할 수 있도록 하였습니다.

답변 작성

  • Markdown 기반으로 작성할 수 있도록 하였습니다.

  • preview 버튼으로 작성한 내용 미리 보기를 할 수 있습니다.

  • 드래그 앤 드롭으로 이미지 파일을 첨부할 수 있습니다.

  • 사진은 S3에 업로드됩니다.