Skip to content

위치 기반 추천 기능으로 맛집을 찾아 맛있는 점심식사도 하고 평점도 매겨보세요.

License

Notifications You must be signed in to change notification settings

INgandle/matjum

Repository files navigation

맛점: 위치 기반 맛집 추천 서비스

위치 기반 추천 기능으로 맛집을 찾아 맛있는 점심식사도 하고 평점도 매겨보세요.

개요

공공 데이터 API를 활용하여 서울 및 경기 지역의 음식점 정보를 제공하고, 사용자의 위치 정보를 기반으로 맛집을 추천하는 서비스입니다. 사용자는 맛집에 대한 상세정보를 확인하고, 맛집에 대한 리뷰를 작성할 수 있습니다.

  • 사용자는 회원가입 및 로그인을 통해 서비스를 이용할 수 있습니다.
  • 사용자는 위치 정보를 기반으로 주위 맛집을 추천받을 수 있습니다.
  • 다양한 필터링 기능을 통해 맛집을 검색할 수 있습니다. (거리순, 평점순)
  • 해당하는 맛집에 대한 상세 정보를 확인할 수 있습니다.
  • 맛집에 대한 리뷰를 작성할 수 있습니다.

기술 스택

Stack Version
Runtime v20.x.x
Language v5.1.x
Framework v10.x.x
Database PostgreSQL v16.4.x, PostGIS 3.4.x, TypeORM v0.3.x
Environment npm v10.2.x
Test Jest v29.5.x
etc N/A

설치 및 실행

npm run docker:prod

API 명세서

도메인 기능명 HTTP Method URL 인증 담당자
member 회원 가입 POST /api/members/sign-up X 주소미
member 로그인 POST /api/members/sign-in X 주소미
member 새 토큰 발급 PATCH /api/members/auth/refresh O 주소미
member 사용자 정보 조회 GET /api/members/:id O 오다은
member 사용자 정보 수정 PATCH /api/members/:id/settings O 오다은
restaurant 맛집 목록 조회 GET /api/restaurants O 김도연
restaurant 맛집 상세 조회 GET /api/restaurants/:id O 김도연
restaurant 맛집 리뷰 생성 POST /api/restaurants/:id/reviews O 오다은

API 상세 문서

API에 대한 자세한 정보와 명세는 아래 링크를 통해 확인할 수 있습니다. 각 엔드포인트에 대한 설명과 예시가 포함되어 있습니다.

Notion

데이터 파이프라인

담당자: 김지수

  • 공공 데이터 API를 활용하여 서울 및 경기 지역의 음식점 정보를 수집하고, 데이터베이스에 저장합니다.
  • 일정한 주기로 데이터를 업데이트하여 최신 정보를 제공합니다.
flow chart
graph TD;
  B1[insertData] --> B2[processingRawXML];
  B2 --> B3[readMultipleFiles]
  B3 --> C4[dataFormatting];

  C1[updateData] --> C2[getRecentUpdate];
  C2 --> C3[fetchData];
  C3 --> C4;

  C4 --> D1[DataSourceManager];

Loading

프로젝트 관리

프로젝트 팀 노션 링크

설계와 구현 과정에 대한 자세한 내용은 아래 프로젝트 노션 링크를 통해 확인할 수 있습니다.

Notion

팀 규칙 &코드 컨벤션

코드의 일관성을 유지하기 위해 특정 코드 컨벤션과 팀 규칙을 따르고 있습니다. 자세한 내용은 아래 노션 링크를 통해 확인할 수 있습니다.

Notion

커밋 메시지 컨벤션

# (gitmoji) <타입> : <제목><이슈번호>

##### 제목은 이슈 번호와 함께 최대 50 글자까지 한 줄로 입력 ############## -> |

# 본문은 위에 작성
######## 본문은 한 줄에 최대 72 글자까지만 입력 ########################### -> |

# --- COMMIT END ---
# <타입> 리스트
#   ✨(:sparkles:) feat    : 기능 (새로운 기능)
#   🐛(:bug:) fix     : 버그 (버그 수정)
#   ♻(:recycle:) refactor : 리팩토링
#   💄(:lipstick:) style   : 스타일 (코드 형식, 세미콜론 추가: 비즈니스 로직에 변경 없음)
#   📝(:memo:) docs    : 문서 (문서 추가, 수정, 삭제)
#   ✅(:white_check_mark:) test    : 테스트 (테스트 코드 추가, 수정, 삭제: 비즈니스 로직에 변경 없음)
#   🔨(:hammer:) chore   : 기타 변경사항 (빌드 스크립트 수정 등)
# ------------------
#     제목은 명령문으로
#     제목 끝에 마침표(.) 금지
#     제목과 본문을 한 줄 띄워 분리하기
#     본문은 "어떻게" 보다 "무엇을", "왜"를 설명한다.
#     본문은 한 줄을 작성하고 . 마침표를 찍어서 분리한다.
# ------------------

브랜치 전략

브랜치 유형 브랜치 이름 설명 사용법
Main Branch main 제품으로 출시될 수 있는 브랜치 사용자에게 배포 가능한 상태만을 관리하며, 배포(release) 이력을 관리합니다.
Develop Branch dev 다음 출시 버전을 개발하는 브랜치 모든 기능이 추가되고 버그가 수정된 후, dev 브랜치를 main으로 병합합니다.
Feature Branch feature/* 새로운 기능 개발 및 버그 수정이 필요할 때마다 dev 브랜치로부터 분기됩니다. 개발이 완료되면 dev 브랜치로 merge 하여 다른 사람들과 공유합니다.

예시

  • Feature 브랜치 명명 규칙: feature/기능요약 (예: feature/login-api)


디렉토리 구조

프로젝트 디렉토리 구조
.
├── Dockerfiles # 도커 이미지 빌드를 위한 파일
│   ├── db
│   └── server
├── data-pipeline # 데이터 파이프라인
│   ├── data # xml files
│   └── src
│       ├── common # 공통적으로 쓰이는 함수, constants.
│       ├── entities # entity (restaurant만 있습니다)
│       ├── insert # 초기 데이터 insert 함수
│       ├── types # type 정의
│       └── update # api 요청하여 db update하는 함수
├── init.sql # postgis extension 추가 script
├── src # API server
│   ├── auth # 인증 모듈
│   │   ├── decorators
│   │   ├── guards
│   │   └── strategies
│   ├── config # 환경변수 설정
│   │   ├── cache
│   │   └── database
│   ├── database # seeding files
│   │   ├── factory
│   │   └── seeds
│   ├── entities
│   ├── members # 사용자 관련 API
│   │   └── dto
│   └── restaurants # 맛집 관련 API
│       └── dto
└── test

30 directories

Author

김도연
@kimdoyeonn
김지수
@jis-kim
오다은
@ooheunda
주소미
@joosomi
맛집 목록 조회
맛집 상세 조회
맛집 데이터 파이프라인
Docker 환경 구성
사용자 정보 업데이트
맛집 리뷰 생성
회원 가입
로그인
인증 토큰 갱신

About

위치 기반 추천 기능으로 맛집을 찾아 맛있는 점심식사도 하고 평점도 매겨보세요.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published