Giter Site home page Giter Site logo

team15_be's Introduction

[BORROW, ME] 프로젝트 소개 🚩

보로미를 통해 대학생들이 자유롭게 써보고 싶은 물건을 저렴한 가격에 사용해보기 원합니다.

또한 공유 재산으로서 환경에 더욱 기여하는 방향성을 가지고 있습니다.


목차

📜 개요

🔗 배포 링크

🚩 팀 공통 목표

👥 멤버 소개

📍 서비스 소개

✨ 주요 기능 소개

🗒️ 상세 기능 소개

❤️ 고민한 부분

💚 ERD

☑️ 시작 가이드

🔗 자료 모음


개요


  • 프로젝트 이름 : 보로미
  • 프로젝트 한 줄 소개 : 대학생들을 위한 쉽고 빠른 대여 서비스, Borrow Me
  • 프로젝트 기간: 2023.09-2022.11
  • 개발 언어: JAVA & SPRING (BE)

배포 링크

배포 중인 인스턴스는 다음과 같이 있습니다.


멤버 소개

김근호 박찬 이지혜

팀 공통 목표

프로젝트 경험이 없는 팀원들이 대부분 이었습니다. 그렇기에, 공통 목표는 MVP를 개발하는 것으로 설정 하였습니다. MVP는 최소한의 기능을 갖춘 제품으로, 대학생들이 대여 서비스를 원활하게 이용할 수 있는 기반을 마련하는 것을 목표로 했습니다. 우리는 서로의 강점을 살려 지식을 공유하고, 팀원들 간의 협업을 통해 프로젝트를 진행하도록 하였습니다. 프로젝트 과정에서 실력 향상과 성장을 경험하며, 팀원 모두가 소중한 프로젝트 기회를 얻을 수 있도록 노력했습니다.

서비스 소개

대학생들을 위한 쉽고 빠른 대여 서비스, Borrow Me

🏫 필요한 대여물품을 학교 내에서 간편하게 대여

  • 보로미에서는 전공책, 전자기기, 정장 등의 대여물품을 학교 내에서 빠르게 대여할 수 있어요.
  • 원하는 카테고리를 선택하면, 카테고리 별로 상품들을 확인해볼 수 있어요.
  • 대여물품의 정가를 함께 알려주어 더욱 합리적인 선택을 도와요 !

🗓️ 원하는 대여날짜를 1일 간격으로 정할 수 있어요

  • 비싼 노트북을 구매하기 전 며칠동안만 사용해보고 싶다면 ?? 대여기간을 하루부터 설정가능하기 때문에 원하는 기간만 대여할 수 있어요.
  • 다른 대여 플랫폼은 최소 한달이던데, 우와 !

버튼 한 번으로 반납 신청도 빠르게 ~

  • 대여 종료일이 되면 [마이페이지]>[대여내역]>[반납하기] 버튼을 통해 반납 신청을 할 수 있어요 !

💬 리뷰를 확인하고 상품에 대한 다양한 의견도 바로 확인 가능

  • 원하는 상품을 클릭하면, 다른 사람들의 리뷰를 확인할 수 있어요 ~ 참고해서 더 좋은 선택을 해보시는 건 어떨까요 ?

주요 기능 소개

기능 디자인 상세 설명
상품 조회하기 image 상품 전체를 스크롤로 조회하고,
개별 상품을 선택하여 조회합니다.
대여 날짜 선택하기 image 원하는 대여 날짜를 선택합니다.
상품 검색하기 image 검색을 통해 원하는 상품을 찾을 수 있습니다.
페이머니 충전 및 결제하기 image 페이머니를 통해 결제를 진행합니다.
충전된 페이머니 잔액이 부족하면 충전페이지로 바로 이동합니다.
대여내역 조회 및 리뷰 작성하기 image 대여내역을 조회하여 리뷰를 작성할 수 있습니다.

상세 기능 소개

더 자세한 기능별 코드 소개는 노션을 참고해주세요 :)

고민한 부분

  1. 일관된 구조
    • 이슈 템플릿 등을 활용하여, 다른 BE 개발자들에게 일종의 가이드라인을 제시하려고 노력하였습니다.
    • 브랜치명의 경우에는 생성된 이슈의 이름과 동일하게 네이밍을 하여 어떤 이슈와 관련된 PR인지 바로 확인할 수 있게 하였습니다. (ex. feat/be-01)
    • 커밋 메시지는 style, chore 처럼 기준이 애매한 것들을 제외하고, 읽기 쉽게 feat, fix, docs, refactor, build 5가지로 구분하였습니다.
  2. 구상한 기능을 우선적으로 구현하기 위해 노력
    • 로그인/회원가입, 페이머니 충전 및 결제, 상품 무한스크롤, 리뷰, 대여 등의 핵심 기능을 구현하기 위해 많은 노력을 기울였습니다.
  3. 사용자에게 있을 예외 상황에 대해 고민하고, 각 예외별로 적절한 상태코드를 사용하여 응답
    • 사용자와 상호작용하는 부분에서 발생할 수 있는 예외 상황에 대해 고민하고, 각 예외에 대해 400, 401, 403, 404, 409 다섯가지의 상태코드를 사용하여 클라이언트에게 명확한 에러 응답을 제공했습니다. 이는 사용자 경험을 향상시키기 위한 부분으로 고려되었습니다.
  4. 대여 날짜 처리가 필요했기 때문에, 대여일 parsingDatetime 관련 날짜 처리 고민
    • 날짜 처리 과정에서의 고민 : 대여 날짜 처리에 대해 LocalDateTime형의 날짜 변수를 파싱하여 사용하였지만, parse 메서드는 문자열을 날짜로 변환할 때 사용자가 부적절한 형식의 날짜를 입력하는 경우 잘못된 데이터로 인해 애플리케이션이 예상치 못한 동작을 하는 상황이 발생할 수 있어 이에 대한 고민을 하였습니다.
    • parseDateTime 메서드를 만들어 DateTimeParseException을 처리하도록 하였습니다. 이를 통해 애플리케이션의 안정성을 보장하고자 하였습니다.
    • DateTime 형식으로 대여일을 변환하여 대여일이 과거인지, 대여종료일이 시작일보다 빠른 예외가 발생하지 않는지에 대해 처리하도록 하였습니다.
  5. status(예약중, 대여중, 반납완료, 리뷰완료) 상태의 기준을 고민하고 적절한 로직 구현**
    • 대여상태로 예약중, 대여중, 반납완료를 고려하였지만, front의 경우 [반납 후 리뷰 전]과 [반납 후 리뷰 작성]의 경우를 구별해야 하기에 네가지의 status를 갖도록 수정하였습니다.
    • 현재의 대여상태를 고려하여 다양한 대여 상태에서의 로직을 알맞게 구현하였습니다.
  6. Exception에 reason을 추가적으로 응답하도록 Exception마다 알맞은 reason을 작성하고, 응답 구현
    • 프론트분들의 요청사항 중 예외 메세지를 전달할 때 reason을 통해 어떤 조건 또는 이유로 예외가 발생했는지 정확하게 전달받기 위해 reason을 함께 전달해주면 좋겠다는 요청이 있었습니다.
    • reason을 함께 전달하기 위해 GlobalExceptionHandler를 수정하여 HttpHeader에 reason을 추가해 함께 에러 메세지를 전달하도록 하였습니다.

ERD

BorrowMeERD

시작 가이드

Java : 11, Spring : 2.7.16

  1. 프로젝트 클론
git clone https://github.com/Step3-kakao-tech-campus/Team15_BE.git
cd Team15_BE
cd src
  1. 실행
./gradlew build
cd build/libs
java -jar borrowme-0.0.1-SNAPSHOT.jar

자료 모음

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.