보로미를 통해 대학생들이 자유롭게
써보고 싶은 물건을 저렴한 가격에 사용해보기 원합니다.
또한 공유 재산으로서 환경에 더욱 기여하는 방향성을 가지고 있습니다.
- 프로젝트 이름 : 보로미
- 프로젝트 한 줄 소개 : 대학생들을 위한 쉽고 빠른 대여 서비스, Borrow Me
- 프로젝트 기간: 2023.09-2022.11
- 개발 언어: JAVA & SPRING (BE)
배포 중인 인스턴스는 다음과 같이 있습니다.
- FE: https://kad4a5a7c2c57a.user-app.krampoline.com
- BE: https://kd232444c2db9a.user-app.krampoline.com
김근호 | 박찬 | 이지혜 |
프로젝트 경험이 없는 팀원들이 대부분 이었습니다. 그렇기에, 공통 목표는 MVP를 개발하는 것으로 설정 하였습니다. MVP는 최소한의 기능을 갖춘 제품으로, 대학생들이 대여 서비스를 원활하게 이용할 수 있는 기반을 마련하는 것을 목표로 했습니다. 우리는 서로의 강점을 살려 지식을 공유하고, 팀원들 간의 협업을 통해 프로젝트를 진행하도록 하였습니다. 프로젝트 과정에서 실력 향상과 성장을 경험하며, 팀원 모두가 소중한 프로젝트 기회를 얻을 수 있도록 노력했습니다.
대학생들을 위한 쉽고 빠른 대여 서비스, Borrow Me
🏫 필요한 대여물품을 학교 내에서 간편하게 대여
- 보로미에서는 전공책, 전자기기, 정장 등의 대여물품을 학교 내에서 빠르게 대여할 수 있어요.
- 원하는 카테고리를 선택하면, 카테고리 별로 상품들을 확인해볼 수 있어요.
- 대여물품의 정가를 함께 알려주어 더욱 합리적인 선택을 도와요 !
🗓️ 원하는 대여날짜를 1일 간격으로 정할 수 있어요
- 비싼 노트북을 구매하기 전 며칠동안만 사용해보고 싶다면 ?? 대여기간을 하루부터 설정가능하기 때문에 원하는 기간만 대여할 수 있어요.
- 다른 대여 플랫폼은 최소 한달이던데, 우와 !
✅ 버튼 한 번으로 반납 신청도 빠르게 ~
- 대여 종료일이 되면 [마이페이지]>[대여내역]>[반납하기] 버튼을 통해 반납 신청을 할 수 있어요 !
💬 리뷰를 확인하고 상품에 대한 다양한 의견도 바로 확인 가능
- 원하는 상품을 클릭하면, 다른 사람들의 리뷰를 확인할 수 있어요 ~ 참고해서 더 좋은 선택을 해보시는 건 어떨까요 ?
더 자세한 기능별 코드 소개는 노션을 참고해주세요 :)
- 일관된 구조
- 이슈 템플릿 등을 활용하여, 다른 BE 개발자들에게 일종의 가이드라인을 제시하려고 노력하였습니다.
- 브랜치명의 경우에는 생성된 이슈의 이름과 동일하게 네이밍을 하여 어떤 이슈와 관련된 PR인지 바로 확인할 수 있게 하였습니다. (ex. feat/be-01)
- 커밋 메시지는
style
,chore
처럼 기준이 애매한 것들을 제외하고, 읽기 쉽게feat
,fix
,docs
,refactor
,build
5가지로 구분하였습니다.
- 구상한 기능을 우선적으로 구현하기 위해 노력
- 로그인/회원가입, 페이머니 충전 및 결제, 상품 무한스크롤, 리뷰, 대여 등의 핵심 기능을 구현하기 위해 많은 노력을 기울였습니다.
- 사용자에게 있을 예외 상황에 대해 고민하고, 각 예외별로 적절한 상태코드를 사용하여 응답
- 사용자와 상호작용하는 부분에서 발생할 수 있는 예외 상황에 대해 고민하고, 각 예외에 대해 400, 401, 403, 404, 409 다섯가지의 상태코드를 사용하여 클라이언트에게 명확한 에러 응답을 제공했습니다. 이는 사용자 경험을 향상시키기 위한 부분으로 고려되었습니다.
- 대여 날짜 처리가 필요했기 때문에, 대여일
parsing
및Datetime
관련 날짜 처리 고민- 날짜 처리 과정에서의 고민 : 대여 날짜 처리에 대해 LocalDateTime형의 날짜 변수를 파싱하여 사용하였지만, parse 메서드는 문자열을 날짜로 변환할 때 사용자가 부적절한 형식의 날짜를 입력하는 경우 잘못된 데이터로 인해 애플리케이션이 예상치 못한 동작을 하는 상황이 발생할 수 있어 이에 대한 고민을 하였습니다.
- parseDateTime 메서드를 만들어 DateTimeParseException을 처리하도록 하였습니다. 이를 통해 애플리케이션의 안정성을 보장하고자 하였습니다.
- DateTime 형식으로 대여일을 변환하여 대여일이 과거인지, 대여종료일이 시작일보다 빠른 예외가 발생하지 않는지에 대해 처리하도록 하였습니다.
status
(예약중, 대여중, 반납완료, 리뷰완료) 상태의 기준을 고민하고 적절한 로직 구현**- 대여상태로 예약중, 대여중, 반납완료를 고려하였지만, front의 경우 [반납 후 리뷰 전]과 [반납 후 리뷰 작성]의 경우를 구별해야 하기에 네가지의 status를 갖도록 수정하였습니다.
- 현재의 대여상태를 고려하여 다양한 대여 상태에서의 로직을 알맞게 구현하였습니다.
- Exception에
reason
을 추가적으로 응답하도록 Exception마다 알맞은 reason을 작성하고, 응답 구현- 프론트분들의 요청사항 중 예외 메세지를 전달할 때 reason을 통해 어떤 조건 또는 이유로 예외가 발생했는지 정확하게 전달받기 위해 reason을 함께 전달해주면 좋겠다는 요청이 있었습니다.
- reason을 함께 전달하기 위해 GlobalExceptionHandler를 수정하여 HttpHeader에 reason을 추가해 함께 에러 메세지를 전달하도록 하였습니다.
Java : 11, Spring : 2.7.16
- 프로젝트 클론
git clone https://github.com/Step3-kakao-tech-campus/Team15_BE.git
cd Team15_BE
cd src
- 실행
./gradlew build
cd build/libs
java -jar borrowme-0.0.1-SNAPSHOT.jar