/feed-me-baby

사용자 위치 기반 맛집 추천 서비스

Primary LanguageTypeScript

feed-me-baby

Feed Me Baby 🍣

메뉴 고르는 게 가장 힘든 당신에게! 👀

우리 서비스는 공공데이터를 활용하여, 더 나은 다양한 음식 경험을 제공하고자 노력합니다.
Feed Me Baby는 사용자 위치에 맞게 맛집 및 메뉴를 추천하며, 또한 지역 음식점 목록을 자동으로 업데이트 하고 이를 활용합니다.


목차 📋


개요

본 서비스는 사용자가 관심 있는 지역 및 음식 카테고리에 따라 맞춤형 맛집 정보를 한눈에 볼 수 있도록 해주는 어플리케이션입니다.

이 서비스는 방문자 수, 리뷰 평점, 인기 메뉴 등의 필터링 옵션을 제공함으로써 사용자가 보다 세밀한 기준으로 맛집을 탐색하고 결정할 수 있도록 지원합니다. 이를 통해 사용자는 자신의 취향과 요구에 부합하는 최적의 식당을 효율적으로 찾아내는 경험을 할 수 있습니다.

또한, 본 서비스는 점심추천서비스를 통해, 주변 맛집을 사용자에게 제공합니다. 이와 같이 직관적이고 종합적인 맛집 검색 기능을 제공하여 사용자의 음식 탐색과 선택 과정을 간소화하고, 식도락에 관한 풍부한 정보를 신속하게 제공하는 것이 본 서비스의 핵심 목적입니다.


사용 기술


언어 및 프레임워크

NestJS TypeScript


데이터 베이스

PostgreSQL


문서화

Swagger


프로젝트 진행 및 이슈 관리

Notion


모델링

feed-ma-baby-ERD

맛집 목록 확장성 및 검증

  • 맛집 목록 가져오기

    1. 공간 데이터베이스를 사용하는 대신 '위도', '경도' 컬럼에서 해당하는 범위의 데이터를 가져옵니다. 범위 쿼리

    2. 배열 메서드 filter를 이용해서 해당 범위보다 긴 값들을 제외하고 반환 했습니다. Array.prototype.filter

  • 확장성 있는 JSON 반환 타입

    1. 맛집의 데이터는 이름, 위치, 평점 등이 필요합니다.
    2. 우선은 가시적인 데이터를 볼 수 있게 GeoJson 포맷에 맞춰서 JSON으로 반환합니다.
    3. GeoJson 포맷으로 GeoJsonResponse, GetRestaurantsDto를 사용하고 추후 클라이언트 포맷에 맞춰 반환 타입을 변경, 교체할 수 있게 만들었습니다.
  • 위도, 경도 범위로 Custom Validation

    1. 쿼리 파라미터에서 위도, 경도로 위치 값을 숫자 받습니다.
    2. 현재 공공데이터가 경기도 범위인 것을 확인하여 경기도 범위 내의 사용자 위치 값만 받도록 validation을 변경했습니다.
    • 경기도 최남단 위도: 약 36.0도
    • 경기도 최북단 위도: 약 38.0도
    • 경기도 최서단 경도: 약 126.0도
    • 경기도 최동단 경도: 약 128.0도

Did You Know

API Endpoint

API Endpoint Method Feature
restaurant-guide GET 맛집 목록 조회

API Reference

Swagger 이미지

스크린샷 2023-11-08 오후 8 39 47 스크린샷 2023-11-08 오후 8 40 06 스크린샷 2023-11-08 오후 8 40 22 스크린샷 2023-11-08 오후 8 40 32 스크린샷 2023-11-08 오후 8 40 49 스크린샷 2023-11-08 오후 8 41 02


파일 구조

파일 구조 보기
src
├── restaurant
│   ├── controller
│   ├── service
│   ├── entity
│   ├── repository
│   ├── dto
│   ├── scheduler
│   └── test
├── restaurant-guide
│   ├── controller
│   ├── service
│   ├── repository
│   ├── dto
│   └── test
├── review
│   ├── controller
│   ├── service
│   ├── entity
│   ├── repository
│   ├── dto
│   ├── decorator
│   ├── entitiy
│   ├── repository
│   └── test
├── user
│   ├── controller
│   ├── service
│   ├── entity
│   ├── repository
│   ├── dto
│   ├── decorator
│   └── test
├── auth
│   ├── controller
│   ├── service
│   ├── guard
│   ├── dto
│   ├── decorator
│   └── test
├── common
│   ├── env-validation
│   ├── exception-filter
│   ├── logger
│   └── response-entity
└── migration

팀원


GitHub
추연규 고미종 이명석 이상운 송호준


참고자료

Unit Test
Library