SWM-99-degree / jariBean

SWM 14th JariBean Project
0 stars 1 forks source link
# "자리:Bean" - 카페 위치 탐색 및 예약 서비스 ![](https://hackmd.io/_uploads/HykQw6Nsh.png) 카페 매장과 손님을 연결해주는 매칭 서비스로 손님들은 원하는 카페를 쉽게 찾을 수 있고, 카페는 예약과 주문을 받아 더욱 효율적인 운영이 가능해진다. ### 🙆‍♂️[~~배포 페이지~~]🙆‍
## 프로젝트 개요 ### 소프트웨어 마에스트로 14기 - 팀 99℃ 의 프로젝트 - **자리:Bean - 카페 예약 및 매칭 서비스** - 개발 기간 : 2023.6.20 ~ 진행중 - 🗄 [ 기획서](https://lineno2.notion.site/d4f2664412df48b6b9412e57b21bf90a?pvs=4) - 👩‍💻 [ 소개 노션 페이지](https://lineno2.notion.site/99-e3ec59eb3ab64b56a647f53837307cac?pvs=4) ### 카페의 자리를 잡기 위해 시간을 낭비하고 계신가요? - 🔥 걸어서 10분 거리 카페와의 **매칭**을 통해 카페를 찾을 수 있어요 - 📒 **예약**을 통해 카페의 자리를 확보할 수 있어요
## 사용된 기술 스택 및 아키텍처 ### AWS 아키텍처 ![image](https://github.com/SWM-99-degree/.github/assets/84831081/3b9c613d-111b-4c0c-8255-969087cc6cd4) - 배포된 상태가 그렇다는 것이지, 차후 AZ 넓혀서 확장할 예정 ### Backend 아키텍처 ![image](https://github.com/SWM-99-degree/.github/assets/84831081/0d050e8a-d558-4805-b417-8e914260e3fc) ### 활용한 스택 #### 🪃 Backend - Spring Boot - fastAPI - EC2, ELB, SQS, Elasticache, API gateway, Open Search, S3, CloudFront - Redis - MongoDB - ElasticSearch - Komoran - JPA - Github actions - docker - FCM #### 🏈 Frontend - flutter - vue.js - FCM - Oauth2 - kakao API #### 👥 협업 툴 - discord - git issue - notion ## 프로젝트 기능 소개 | 로그인 | | - | | ![](https://hackmd.io/_uploads/HJjUjp4i2.png)| | - **KAKAO**, **GOOGLE**, **APPLE** 의 OAuath2 기능을 이용하여 로그인 기능을 구현하였습니다. | | 매칭 기능 | | - | |![matching](https://hackmd.io/_uploads/BJsA5TEsh.png)| | - 주변에 있는 카페에 **매칭요청**을 보내요!
- 원하는 인원을 기입해서 매칭 요청을 보낼 수 있어요!
- **`RedisSet`** 과 **`FCM`** 을 통해서 매칭을 수락하고 거절할 수 있어요!
- **`SSE`** 를 활용해서 카페에 오는 매칭을 어떠한 조작 없이 실시간으로 받을 수 있어요!
- **`RedisQueue`** 를 지속적으로 오고가는 통신을 일정한 기간을 두고 가져올 수 있어요!
- 카카오맵 API를 가져와 길찾기 기능을 얻을 수 있어요!| | 예약 기능 | | - | | ![image](https://github.com/SWM-99-degree/.github/assets/84831081/908a71f1-6659-4cf7-9a2f-97269bd02556) | | - 원하는 위치, 원하는 조건, 원하는 시간에 **`좌석 예약`** 을 해 보세요!
- **`elasticsearch`** 를 활용하여 검색 속도를 높였어요!
**`MongoDB`** 를 통해서 원하는 조건에 따라 카페를 조회할 수 있어요!
- **`특별한 알고리즘`** 을 통해서 앞뒤로 30분 예약이 되어 있더라도 예약 창을 볼 수 있어요! | | 점주 웹 사이트 | | - | | ![image](https://github.com/SWM-99-degree/.github/assets/84831081/edc6c7a4-eced-4621-9c40-f77879cdc2a4) | | - 점주 웹페이지에 가입할 수 있어요! 이 웹은 자체 로그인만 가능해요.
- **`vue.js`** 를 활용하여 만들었어요!
- 점주 웹을 통해서 당일 예약된 상황을 볼 수 있어요!
- 점주 웹을 통해서 매칭을 거절하거나 수락할 수 있어요!
- 수락 또는 완료를 누를 수 있어요! |
## 기술적 고민 - 🕐 [**`Redis Pub/Sub`**, 어떻게 쓰는거죠?](https://psy-choi.tistory.com/40) - 🎨 [**`Elasticsearch`** 와 **`mongoSearch`** 중 어떤 것이 성능적으로 빠를까?](https://psy-choi.tistory.com/33) - 🔏 [로그인 중 토큰을 탈취 당하지 않으려면 어떻게 해야 할까?]() - 🚶 [**`MongoDB`** 와 **`PostSQL`** 중 어떤 DB를 활용하는 것이 좋을까? ]() - ⚙️ [**`SSE`** 와 **`FCM`** , 무엇을 실시간 통신을 위해 사용해야 할까?](https://psy-choi.tistory.com/47) - ✍️ [MSA를 굳이 활용할 필요가 있었을까? **`fastAPI`** 를 쓴 이유!]() - 🌀 [**`SQS`** 를 통한 전송보장, 어떻게 할까요?](https://psy-choi.tistory.com/44) - 🎫 [**`Issue`** 관리와 **`Commit Message`** 를 어떻게 쓸까?](https://psy-choi.tistory.com/45) - ✍️ [**`CICD`** 구축을 위한 우당탕탕 **`Github actions`** 일기](https://psy-choi.tistory.com/28) - 🎆 [**이미지 업로드 과정 개선**](https://velog.io/@isayaksh/Spring-Pre-signed-URL) - ⚜️ [확장성을 고려한 **디자인 패턴** 적용](https://velog.io/@isayaksh/Design-Pattern-OAuth-%EA%B8%B0%EB%8A%A5%EC%97%90-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%A0%81%EC%9A%A9) - 🤔 [API 호출 방법에 대한 고민](https://velog.io/@isayaksh/Architecture-API-%ED%98%B8%EC%B6%9C%EC%9D%98-%EB%B0%A9%EB%B2%95) - 📒 [HTTP Status Code 204에 대한 개념과 사용 방법](https://velog.io/@isayaksh/CS-Http-Status-code-204%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95)
## ERD ![SWM-jariBean (2)](https://github.com/SWM-99-degree/jariBean/assets/85926257/5dd25374-7443-4c90-8997-a04bf7fa27c5)

### 팀원 소개 |최기성|김상현|이호선| |:---:|:---:|:---:| |![%EC%B5%9C%EA%B8%B0%EC%84%B1%20%ED%94%84%EB%A1%9C%ED%95%84](https://github.com/SWM-99-degree/.github/assets/84831081/de57e7ef-c40a-4041-8063-a99d50b82e2a?width=50)|![Untitled](https://github.com/SWM-99-degree/.github/assets/84831081/35c44282-1dbb-4cec-b843-c0686b6db237)|![Untitled-2](https://github.com/SWM-99-degree/.github/assets/84831081/6a060570-3ee8-4d14-87b6-d0ba90bbc5eb)| |[@psy-choi](https://github.com/psy-choi)|[@isayaksh](https://github.com/isayaksh)|[@LineNo2](https://github.com/LineNo2)|[@high2092](https://github.com/high2092)|