Skip to content

hanghae99-MEALCHAK/MEALCHAK-server-application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

밀착 MealChak - Backend🍙

MealChak Link : https://mealchak.com/
FrontEnd Github : https://github.com/hanghae99-MEALCHAK/MEALCHAK-client-application
Project MealChak Notion : https://bit.ly/mealchak-notion  

🍽프로젝트 소개

점심을 시켜먹고 싶은데 ,

  • 최소 주문 금액이 높아 1인분만 시킬 수가 없어서,
  • 배달비가 아깝거나 가격이 비싸서, 때론 양이 너무 많아서
  • 메뉴를 바꾸거나 망설인적이 있으신가요?

그런 분들을 위한 배달 모임 서비스 밀착🍙입니다!
밀착으로 같이 배달을 시킬 친구👭를 찾아 보세요.

밀착 썸네일

🎯Target

  • 최소 주문금액 때문에 먹고 싶은걸 포기하는 모든 이들
  • 배달비가 부담스러운 사회 초년생과 대학생
  • 혼자 밥먹는게 싫은 1인 가구

🎈기획 배경

image밀착 서비스 기능

우리는 코로나 이후에 배달 음식을 더 많이 주문하게 되었습니다.
그래서 옆에 철수와 내가 같은 곳에서 떡볶이를 따로 시킨다면 배달비도 2배로 들고 환경적으로도
불합리적이다 라는 생각이 들었습니다.
그래서 우리가 오토바이를 직접 이용하는 서비스에서 탄소 배출량을 줄인다면
환경 이슈에서도 큰 도움을 줄 수 있습니다.

밀착이란 서비스는 일석이조 입니다, 고객은 배달료도 아끼고 탄소배출량도 줄일 수 있으니까요!

 

밀착 팀 소개

🍕[프로젝트 개발 노션 링크]

https://www.notion.so/Meal-4e2b5486d44e4123a1d352a63eb0d414

👨‍👨‍👦‍👦 [팀원]

https://www.notion.so/2b83f0f273974545bfed5289c49c6c30

  • Frontend : 김건우, 이수진, 윤정현 React
  • Backend : 박응수, 박강희, 이태경, 하연후 SpringBoot
  • Designer : 박수진, 하유진 UX/UI

📅 진행 기간

  • 21.07.23(금) - 21.08.31(화)

🎥 발표 영상

🗣️ 커뮤니케이션 툴

  • Github
  • Slack
  • Gather
  • Discode
     

서비스 소개

  • 회원가입 없이 카카오톡으로 로그인을 할 수 있습니다.
  • 오늘의 인기 메뉴를 확인 할 수 있습니다.
  • 사용자의 위치를 지정하여 주변 3KM이내의 모집글들만 조회 합니다.
  • 사용자의 위치와 작성된 모집글과의 거리를 나타냅니다.
  • 모집글을 작성한 사용자는 참가를 희망하는 사용자의 매너 점수 및 기본 정보를 조회하여 모집 참여에 동의/거절 을 할 수있습니다.
  • 마이페이지에서 프로필 사진 및 한 줄 소개, 연령, 성별과 같은 기본 정보의 기입을 유도하여 다른 유저들에게 대략적인 정보를 제공합니다.
  • 다른 사용자와의 밀착 경험을 리뷰와 매너 점수로 평가 할 수 있습니다.
  • 모집에 참여한 사용자들은 실시간 채팅을 통해 소통을 할 수 있습니다.
  • 모집글을 작성한 사용자는 해당 모집에 참여한 사용자를 강제 퇴장 시킬 수 있습니다.

밀착 서비스 기능

개발 환경

Server

  • AWS EC2(Ununtu 18.04.5 LTS)ex

DB

  • Google SQL(MySQL)

SCM

  • Git(GitHub)

BackEnd(Language & Framework & Library)

  • Java 8
  • JDK 1.8.0
  • Framework : Spring Boot 2.5.3
  • IDE : IntelliJ IDEA 2021.1.2
  • Build Tools : Gradle 7.1.1
  • ORM : Spring Data JPA 2.5.3
  • JWT 0.9.1
  • Swagger 3.0.0
  • Spring Sequrity 5.5.1
  • CORS
  • Websocket 5.3.9 , SockJS 1.1.2 , Stomp 5.3.9
  • Redis 2.5.3

Tech Structure

아키텍처

ERD

edit_ERD

 
 

어려웠던 점 및 개선 방향

1. 쿼리

  • AS-IS

    즉시 로딩으로 인해 Post를 조회할 경우 Post와 연관된 ChatRoom, User, Menu 등의
    Entity를 조회하는 N+1의 문제로 성능상의 이슈가 발생하였습니다.

as-is 성능개선 전 queryDSL

                (AS-IS)기존 API요청 응답속도  
  • TO-BE

    메소드간의 영향을 끼치지 않기 위해 QueryDsl과 JPA repository의 사용을 분리하여
    entity의 참조관계를 수정하지 않도록 하였습니다.

to-be 성능개선 후 queryDSL

                 (TO-BE)현재 API요청 응답속도   

2. 모집글과 사용자의 거리를 구하는 방식

  • AS-IS 사용자와 모집글의 위치를 주소와 위도,경도로 받아 저장을 하고 모집글과 유저의 거리를 구할 때
    주소를 구 단위(서울시 강남구)로 잘라 해당 구 안에 있는 모집글들만 불러와 거리를 구했습니다. 그러나 인접한 다른 구에서 작성된 모집글과 유저의 거리가 가까움에도 구의 이름이 달라
    모집글을 불러오지 못하는 경우가 발생 하였고 이를 해결 하고자 고민을 하였습니다.

지역구 일러스트-1

  • TO-BE 사용자와 모집글의 주소와 상관없이 위도와 경도를 이용하여 사용자의 위치
  • 주변 3KM이내의 모집글만 불러와서 해당 모집글들에 사용자와의 거리를 입력하고 그 거리를 KEY값으로 TreeMap을 통해 오름차순 정렬을 하였습니다.

지역구 일러스트-2

   

사용자 피드백

"들어온 승인 요청에 알림 뱃지가 필요해요"

  • 새로운 요청이나 채팅이 오면 뱃지를 통해 알 수 있도록 표시했습니다.

새메시지 알람

"모집글 작성 시 가게이름으로 검색할 수 있었으면 좋겠어요" "배달을 시킬 가게의 정보를 볼 수 있었으면 좋겠어요"

  • 배달 예정 식당을 TEXT로만 입력하던 기존 방식에서 식당을 검색하여 입력하는 기능을 추가하였고
    모집글 에서 식당의 정보(메뉴, 평점, 위치 등)를 볼 수 있게 했습니다.

식당 지도에서 선택

"음식을 나눠서 각자가지고 갈지 같이 먹을지에 대한 카테고리가 있으면 좋을 것 같아요!"

  • 사용자들이 서로 만나 음식을 같이 먹을지 나눠 갖을지를 채팅을 통해 소통하여 정하게 하던 기존 방식에서
    모집글을 작성할 때 미리 정하여 선택하여 참여할 수 있게 했습니다.

모집 유형 선택

 

광고 집행

광고집행-합본

고객반응 -

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published