Skip to content
@sku-plate

skuplate

🍕 SKUPLATE

skuplate

프로젝트 기간 : 2023. 09. 27 ~ 2023. 11. 21

"망고플레이터"의 서비스 종료를 앞두고, 이를 대체하는 대학가 맛집 공유 웹앱 프로젝트입니다.



멋쟁이사자처럼 대학 동아리 11기 - SKUPLATE 팀


김태환 [FrontEnd & BackEnd]

김유진 [FrontEnd]



SKUPLATE Repository



SKUPLATE Main Page 화면

SKUPLATE_WEB_VIEW        SKUPLATE_APP_VIEW



주요 기능

  • 회원 관리

    카카오 기반 OAuth를 활용하여 회원 관리

  • 식당 관리

    식당 태그 / 카테고리 별 목록 조회

    식당 상세 조회(메뉴, 카카오맵, 식당 연락처 등)

    식당 정보 관리

    식당 스크랩하여 마이페이지에서 조회하기

    식당 리뷰 등록하기



개발 환경

개발 도구

Language

BackEnd

FrontEnd

Database

Deployment

Others



시스템 아키텍처

SKUPLATE_SYSTEM_ARCHITECTURE



데이터 구조 및 스키마 설계

해당 프로젝트에서는 MongoDB를 사용하여 데이터를 저장하고, Mongoose를 통해 데이터 모델을 정의했습니다.

User 스키마

필드명 타입 설명 필수 여부 기본값
name String 사용자 이름 없음
profileImage String 프로필 이미지 경로 default.jpg
email String 사용자 이메일 없음
bookmarkedRestaurants ObjectId[] 즐겨찾기한 식당 목록 (Restaurant 참조) 없음
active Boolean 활성 상태 여부 (비활성 사용자는 제외) true

가상 필드 (Virtual Field)

  • bookmarks: bookmarkedRestaurants 필드와 Restaurant 컬렉션의 관계를 참조합니다.

미들웨어

  • 쿼리 미들웨어: 모든 find 쿼리에서 activefalse인 사용자는 자동으로 제외됩니다.
userSchema.pre(/^find/, function (next) {
  this.find({ active: { $ne: false } });
  next();
});

Restaurant 스키마

필드명 타입 설명 필수 여부 기본값
name String 식당 이름 없음
typeOfFood String 식당 카테고리 없음
address String 주소 없음
menu Array 메뉴 목록 (name, price 필드 포함) 없음
images String[] 식당 이미지 경로 배열 없음
tags String[] 식당 태그 없음
active Boolean 활성 상태 여부 true

가상 필드 (Virtual Field)

  • reviews: RestaurantReview 컬렉션의 관계를 참조합니다.

Review 스키마

필드명 타입 설명 필수 여부 기본값
restaurant ObjectId 리뷰 대상 식당 (Restaurant 참조) 없음
user ObjectId 리뷰 작성자 (User 참조) 없음
content String 리뷰 내용 없음
rating Number 평점 없음
createdAt Date 리뷰 작성 시간 현재 시간 (Date.now)

미들웨어

  • 쿼리 미들웨어: find 쿼리 실행 시 user 필드의 name만 자동으로 포함되도록 설정됩니다.
reviewSchema.pre(/^find/, function (next) {
  this.populate({
    path: 'user',
    select: 'name',
  });
  next();
});

컬렉션 간 관계

  1. User ↔ Restaurant

    • 사용자는 즐겨찾기한 식당 목록을 관리 (bookmarkedRestaurants)합니다.
    • bookmarks 가상 필드를 통해 Restaurant와의 관계를 참조합니다.
  2. Restaurant ↔ Review

    • 식당은 리뷰 목록 (reviews)을 가집니다.
    • reviews 가상 필드를 통해 Review와의 관계를 참조합니다.
  3. Review ↔ User

    • 리뷰 작성자는 user 필드를 통해 User를 참조합니다.

Popular repositories Loading

  1. .github .github Public

    1

  2. sku-plate-react sku-plate-react Public

    서경 플레이트

    JavaScript

  3. sku-plate-express sku-plate-express Public

    JavaScript

Repositories

Showing 3 of 3 repositories

Top languages

Loading…

Most used topics

Loading…