Skip to content

Step3-kakao-tech-campus/Team11_BE

Repository files navigation

골라주마 Goalajuma

당신의 모든 순간
"골라주마"
인생은 선택의 연속입니다.
수많은 선택의 순간 앞에서 당신의 모든 순간이 더 행복해지도록

언제 어디서든 누구나 쉽게 투표를 등록하고 응답하는 오픈 투표 플랫폼

목차

배포링크

프로젝트 소개

골라주마는 온라인 투표 커뮤니티 서비스로, 작성자의 질문을 모두가 공유하고 고민할 수 있는 반응형 웹앱입니다.

기획 의도

남녀 노소, 때와 장소를 구분하지 않고 발생하는 선택장애라는 문제를 해결하기 위해 다수의 의견이 필요하다는 설문 조사 결과를 얻었습니다. 이에 따라 많은 사람들이 자신의 크고 작은 고민들을 공유하고 다른 사람들의 고민을 함께 고민할 수 있는 커뮤니티를 개발하였습니다.

주요기능

  1. 사용자가 질문을 업로드 할 수 있는 기능
  2. 사용자가 다른 사용자들의 질문들에 투표할 수 있는 기능
  3. 게시글 검색 기능
  4. 게시글에 댓글을 달 수 있는 기능
  5. 해당 게시글을 공유할 수 있는 기능
  6. 자신이 작성한 글, 자신이 투표에 참여한 글을 확인할 수 있는 기능

ERD 이미지

ERD-이미지 투표라는 컨텐츠를 갖고 있고 실시간으로 투표를 하거나 취소, 변경 등이 빠른 시간에 이뤄져야 하기 때문에 과도한 제약이 단점이 될 수 있다고 생각했고, 개발 도중 편의성을 증진시키기 위해 외래키를 제외하는 구조로 설계했습니다. 또 deleted필드를 구성해 soft delete방식으로 삭제처리했습니다.

아키텍처

image 해당 구조로 리액트 서버를 통해서만 요청을 받을 수 있고, 서버의 주소를 은닉할 수 있다는 장점이 있습니다.

컨벤션

11조 BE의 컨벤션

프레임워크/라이브러리

  • Spring Boot
  • Spring Data JPA
  • Lombok
  • MariaDB Java Client
  • jbcrypt
  • jsonwebtoken
  • spotless

기능 소개

인가&유저 PART

파트 기능 설명
인가처리 토큰 생성 secret key와 유저의 정보로 토큰을 생성
인가처리 토큰 재발급 access token 만료 시, refresh token을 통해 access token 재발급
중복 검사 이메일 중복 확인 이메일 중복을 검사하는 기능
중복 검사 닉네임 중복 확인 닉네임 중복을 검사하는 기능
회원가입 회원가입 회원가입 시 유저의 정보를 검사하고 저장하는 기능
로그인 로그인 로그인을 통해 유저에게 access token, refresh token을 발급하는 기능

투표 PART

파트 기능 설명
투표 투표생성 제목, 부연설명, 2~6개의 옵션, 이미지, 정해진 범주의 카테고리와 마감시간을 조합해 투표를 생성하는 기능
투표 투표마감 투표 생성 시에 마감시간을 정하지만 유저는 원할 때 투표를 마감하는 기능
투표 투표조회 정렬, 카테고리, 마감여부를 기준으로 투표의 리스트를 확인하는 기능
투표 인기투표조회 지난 1시간 사이에 인기가 많았던 투표의 리스트를 확인하는 기능
투표 투표상세조회 한 투표의 상세 정보를 확인하는 기능

투표참여 PART

파트 기능 설명
투표 투표하기 투표에 참여하는 기능
투표 투표취소 참여한 투표를 취소하는 기능. 동시에 댓글도 삭제됨
투표 투표변경 투표를 변경하는 기능

댓글 PART

파트 기능 설명
댓글 댓글생성 댓글을 생성하는 기능
댓글 댓글삭제 댓글을 삭제하는 기능
댓글 댓글조회 한 투표의 댓글 리스트를 조회하는 기능

우리팀의 특징

코드 컨벤션

서로 다른 개발자 3명이 하나의 컨벤션을 지키기란 굉장히 어려웠습니다.. 그래서 저희는 spotless를 활용해 구글 컨벤션을 지켜야 커밋을 할 수 있게 했습니다.

Base class들을 활용한 코드 재사용

추상화 클래스와 base 클래스들을 만들고 그 클래스들을 상속하는 방식으로 dto, exception, entity, response을 구현했습니다. 이를 통해 코드 재사용을 높일 수 있었고 좀 더 통일된 코드를 작성할 수 있었습니다.

exception

exception의 이름을 모두 다르게 만들었는데 실수로 다른 패키지의 예외를 호출하는 실수를 줄일 수 있었고 명확한 이름을 갖기 때문에 구별하기 쉽다는 장점이 있습니다.

API 에러 코드

에러 코드로 400~404로 통일하여 사용했으며, 메시지를 다르게 구성했습니다.

다양한 테스트 케이스

최대한 많은 경우를 테스트하기 위해 다양한 테스트 케이스로 테스트를 했습니다.

이벤트 발행을 통한 의존성 줄이기

투표 삭제 로직과 댓글 삭제 로직간의 결합도를 끊고 관심사를 분리하기 위해 이벤트를 활용하였습니다. 이를 통해 서비스 간의 강한 의존성을 줄일 수 있었습니다

개발 문서

노션 링크

팀 소개

FE FE FE
김가연(리마인더) 문지혜(기획리더) 강성준(리액셔너)
김가연 문지혜 강성준
BE BE BE
진우석(조장) 김수민(테크리더) 박현수(타임키퍼)
진우석 김수민 박현수

About

카카오 테크 캠퍼스 3단계 프로젝트입니다

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages