Skip to content

버려질 식료품을 대상으로 하는 가격 할인 거래 플랫폼

Notifications You must be signed in to change notification settings

Lee-Min-Jung/ssackthree_back

Repository files navigation

상품 가치가 떨어진 식료품을 대상으로 하는 가격 할인 거래 플랫폼

프로젝트 배경

  • 음식물 쓰레기 증가로 인한 환경오염 문제 해결
  • 음식점의 음식물 폐기 처리 비용 증가로 인한 수익성 악화 문제 해결
  • 소비자 물가 지수 상승으로 인한 식비 부담 증가 문제 해결

프로젝트 목표

  1. 사용자 만족을 위한 기능 개발
  • 사용자가 만족할 수 있는 기능을 개발하는 것을 목표로 했습니다. 모든 서비스의 핵심은 사용자가 만족하면서 이용할 수 있는지이기 때문입니다.
  • 따라서, 개발할 수 있는 기능을 개발하기보다는 사용자 입장에서 필요한 기능을 먼저 고려한 후 해당 기능 개발을 위해 노력하는 방향으로 프로젝트를 진행하는 것을 목표로 했습니다.
  1. JPA 도입
  • 이전에 진행한 프로젝트에서 JDBC Template를 이용해 데이터베이스 접근을 진행했습니다. 하지만, SQl 중심적인 개발, 쿼리 결과 매핑의 번거로움, Java 객체 매핑 기능의 부재, 데이터베이스 연결 관리, 트랜잭션 관리, 캐싱 및 기타 고급 기능 부재의 문제점을 경험했습니다.
  • 이러한 문제를 해결하고자 JPA 학습을 진행했고, 이 프로젝트에서 JPA를 적용하고자 했습니다.
  1. Spring Security 도입
  • 보안에 충분한 주의를 기울이지 않으면 원치 않은 대가를 치러야 할 수 있습니다. 작은 프로젝트의 경우 상관이 없겠지만, 프로젝트 규모가 커질수록 보안 이슈는 더욱 중요할 것입니다.
  • 따라서, 이전에 학습한 Spring Security의 내용을 이번 프로젝트에 적용하며 보안을 신경쓰고자 했습니다.
  1. 프론트엔드와의 편리한 협업 환경 구축을 위해 Docker 및 Github Actions 활용
  • 이전 프로젝트에서 프론트엔드 개발자와 Rest api 방식으로 협업을 진행하며 api 공유 과정에 있어서 번거로운 과정을 겪었습니다. 백엔드 api를 실행하기 위해 프론트엔드 개발자가 필요하지 않은 백엔드 개발 환경을 설치해야 했기 때문입니다.
  • 따라서, 이러한 번거로움을 해결하고자 Docker를 도입해 백엔드 개발 환경을 이미지화하여 프론트엔드 개발자가 편리하게 백엔드 api에 접근할 수 있는 것을 목표로 했습니다.
  • 또한 이러한 과정을 자동화하기 위해 Gihub Actions를 활용하기로 했습니다.

기능 소개

  1. 구매 기능
  • 소비자가 음식점이 올려놓은 상품을 구매할 수 있는 기능으로 싹쓰리 프로젝트의 핵심 기능입니다.
  • 음식점은 유통기한이 임박한 상품, 음식 섭취에는 문제가 없으나 실수로 잘못 만든 B급 상품, 잘못된 주문으로 만들고 남은 음식을 정가보다 저렴하게 판매합니다.
  • 소비자는 본인이 설정한 거리 이내에 존재하는 음식점이 올려 놓은 상품을 확인할 수 있습니다.
  • 소비자는 원하는 음식을 구매 및 결제한 후 매장에 찾아가 음식을 픽업할 수 있습니다.
  1. 흥정 기능
  • 구매자가 판매자에게 구매하고자 하는 가격을 제안하면 판매자가 최고 가격을 선택하여 거래할 수 있는 싹쓰리 프로젝트의 차별화 기능입니다.
  • 음식점은 상품을 등록할 때 최저 가격을 설정하여 흥정 기능을 활성화합니다.
  • 소비자는 흥정 기능이 활성화된 메뉴에 본인이 거래하고자 하는 가격을 음식점에 제안합니다.
  • 음식점은 흥정 기능이 활성화된 메뉴에 들어온 흥정 내역을 보고 원하는 가격을 제안한 소비자를 선택하여 거래를 진행합니다.
  • 흥정에 성공한 소비자는 결제를 완료하면 매장에 찾아가 음식을 픽업할 수 있습니다.
  • 이는 구매자와 판매자의 가격 적정선을 일치시켜 양측 모두에게 유리한 가격을 이끌어 내며 좀 더 원활하게 거래가 이루어질 수 있게 합니다.
  1. 우리 동네 기능
  • 동네 사용자들끼리 자유롭게 음식을 사고 팔 수 있는 기능입니다.
  • 일반 사용자는 재고로 존재하는 본인 소유의 음식을 보다 저렴하게 판매합니다.
  • 음식 구매를 원하는 사용자는 판매자와의 채팅을 통해 거래를 진행합니다.
  1. 위치 및 거리 설정 기능
  • 소비자는 음식을 직접 픽업해야 합니다. 따라서 소비자와 음식점의 거리 정보가 중요합니다.
  • 이를 위해 소비자가 위치를 설정할 수 있고, 해당 위치로부터의 반경 미터를 설정할 수 있는 기능입니다.
  • 이를 설정하면 해당 위치로부터 반경 N 미터 내부에 있는 음식점의 음식만 홈페이지에서 확인할 수 있습니다.
  1. 알림 기능
  • 각 사용자에게 필요한 알림이 가는 기능입니다.
  • 음식점은 흥정 내역, 결제 등의 내역을 확인해야 음식을 준비할 수 있습니다. 하지만 바쁜 상황에 계속해서 앱을 확인하며 상태 변화를 추적하기는 힘듭니다.
  • 또한, 손님의 경우 흥정 결과 등의 내역을 확인해야 결제를 진행할 수 있습니다. 하지만 일일이 내역 변화를 확인하는 과정은 번거롭습니다.
  • 이러한 문제를 해결하고자 특정 사건이 발생하면 적합한 사용자에게 적합한 알림이 가도록 했습니다.

기능 구현

  1. 구글 GeoCoding API를 활용한 사용자와 음식점의 거리 판별 기능
  • 위치 설정 및 해당 위치로부터 음식점의 거리를 판별하기 위해서 구글에서 제공하는 위도 경도 기능을 사용했습니다.
  1. 카카오페이 API를 활용한 결제 기능
  • 편리하게 결제 기능을 구현하기 위해 카카오페이에서 제공하는 카카오페이 활용 결제 API를 사용했습니다.
  1. 흥정 기능
  2. Socket를 활용한 채팅 기능
  • 우리동네 기능의 경우 사용자들끼리의 거래를 위해 채팅 기능이 필요합니다. 따라서 Socket를 활용해 채팅 기능을 구현했습니다.
  1. SSE를 활용한 알림 기능
  • 알림 기능 구현을 위해 SSE를 활용했습니다.

기술 스택

ERD

About

버려질 식료품을 대상으로 하는 가격 할인 거래 플랫폼

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published