Skip to content

beyond09-DBDBDeep/Ureca

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

URECA

| Your Recommended CAfe

🌱 TEAM

😺전기범    🐕조제훈    🐢방동호    🦎최해관    🐈이효진

기술 스택

Ubuntu linux mariadb

협업 툴

git github notion discord

전체 프로젝트 일정

프로젝트 일정 : 2024년 07월 01일 ~ 2024년 07월 09일(WBS)

목차


1. 프로젝트 개요

1.1 프로젝트 소개

Untitled (4) Untitled (5)

처음 가는 카페에서 어떤 음료를 마실지 고민하시는 모든 분들!

✔️ 유레카에서 여러 음료의 조합 정보를 서로 공유하며 꿀팁을 얻어가세요!

✔️ 분산되어 있는 카페 정보들을 한 눈에 볼 수 있습니다.

✔️ 가게 별 베스트 메뉴는 다르죠! 서로의 추천으로 메뉴 별 맛집을 찾아가세요.


1.2 프로젝트 배경

국내 카페 산업 현황

<그림 1> “한국 커피 전문점 매장 추이

국내의 커피 전문점 수는 2023년 기준으로 약 10만 개에 이르며, 카페 창업이 늘어남에 따라 브랜드 간 경쟁이 치열해지고 있다.

카페는 프랜차이즈와 개인 카페로 나뉘는데, 프랜차이즈에는 스타벅스, 커피빈, 메가 커피 등 큰 규모의 카페이고, 개인 카페는 주로 주거 지역이나 핫플레이스 근처의 골목에 위치한 개인 카페이다.

개인 카페의 경쟁력 부족

<그림 2> 카페 1회 방문 시 평균 지출 금액

개인 카페는 프랜차이즈 카페와의 가격 경쟁에서 우위를 점하기 어려운데, 이는 프랜차이즈가 큰 규모의 이점을 이용해 원재료 비용을 절감하고 가격을 낮출 수 있기 때문이다.

반면 개인 카페는 규모가 작기 때문에 커피 가격을 낮추는데 한계가 있다. 실제로, 평균 지출 금액을 비교해보면, 대형 프랜차이즈 카페의 가격이 더 경쟁력 있다는 것을 알 수 있다.

경쟁력 확보 방안과 본 프로젝트의 목표

<그림 3> 개인 카페를 선호하는 이유

따라서, 개인 카페는 가격 외의 차별화 전략으로 고객들을 찾아오게 해야 한다.

오픈서베이의 설문조사에 따르면, 커피 소비자들이 개인 카페를 선호하는 이유는 다음과 같이 조사되었다. 개인 카페들이 경쟁력을 갖추기 위해서는 특색 있는 인테리어, 맛있는 음료와 디저트 같은 조건을 만족해야 한다는 것이다. 카페에도 쏠림 현상이 강하기 때문에 다른 가게와의 차별화된 메뉴는 매출 상승과 직결된다.

다만, 모든 조건을 만족한다고 하더라도 경쟁에서 무조건 살아남을 수 있는 것은 아니다.

결국 매출을 올리기 위해서는 홍보가 필수적인 부분이며, 개인 카페는 프랜차이즈 카페에 비해 홍보수단이 많지 않은 실정이다. 따라서 본 프로젝트는 홍보가 어려운 개인 카페의 홍보를 도와주고, 사용자로 하여금 다양한 선택지를 가질 수 있게 하는 것을 목표로 한다.


2. 국내외 유사 서비스와 차별성

2.1 관련 서비스

배달의 민족, 요기요, 쿠팡
  • 오더(픽업 및 매장 주문) - 음식 카테고리 별 상품
  • 주문내역, 나의 찜(매장)
  • 전자영수증
  • 계정 정보 / 개인정보 관리
  • 결제 수단 관리
  • 배달 서비스
  • 고객지원
  • 스타벅스
  • 오더(픽업 및 매장 주문) - 음료/푸드/상품
  • 나만의 메뉴(= 즐겨찾기(+ 커스텀 옵션))
  • 홀케이크 예약
  • 장바구니
  • 히스토리(주문 내역 조회)
  • 별 히스토리(= 스탬프)
  • 전자영수증
  • 계정 정보 / 개인정보 관리
  • 결제 수단 관리
  • 숍(온라인 스토어 : 굿즈 관련)
  • 스타벅스 모바일 카드 선물 및 모바일 상품권 선물
  • 배달 서비스
  • 고객지원
  • 메가커피
  • 멤버쉽(스탬프, 쿠폰, 외부 멤버쉽)
  • 주문
  • 새소식(이벤트, 공지사항)
  • 약관 및 정책(이용약관)
  • 투썸
  • 마이페이지
  • 메뉴소개
  • 매장찾기
  • 투썸하트(=스탬프)
  • 쿠폰함
  • 이벤트
  • 투썸오더(주문 기능)
  • 홀케이크24
  • 주문내역
  • 스탬프(이벤트용)
  • 선물하기
  • 기프트카드(투썸카드)
  • 마이카드(내 투썸카드 등록 및 결제, 관리)
  • 공지사항
  • 고객의 소리
  • 제휴카드 (할인 가능 카드)
  • 이용약관
  • 가맹정보 및 창업 설명회
  • 빽다방
  • 스탬프
  • 마이쿠폰
  • 기프트샵(빽다방 상품권 및 기프티콘)
  • 오더(픽업 오더 및 배달 오더
  • 이벤트
  • 매장찾기
  • 전자영수증
  • 공지사항
  • 이용안내
  • 마이페이지
  • 패스오더
  • 원거리 주문, 결제 가능(매장 리스트로 주문, 지도로 주문)
  • 테이블 주문, 결제 가능(앉은 테이블에 부착된 QR코드와 NFC인식으로 주문, 결제 가능)
  • 맞춤형 광고 제공
  • 매출 분석(월별 판매 분석, 결제 수단, 매출 요약)
  • 쿠폰함
  • 포인트 / 스탬프
  • 적립 마켓
  • 선물하기
  • 자주가요(자주가는 매장 등록)

  • 2.2 차별성

    기능\서비스 “유레카(URECA)” 스타벅스 메가커피 배달의 민족
    즐겨찾기 저장 O O X △(매장만 찜)
    리뷰 O △(기업 자체 설문) X O
    카페 홍보 O(위치 기반 노출) △(자사 홍보) △(자사 홍보) O(일정 요금 지불 후 상단 노출)
    각 메뉴의 리뷰 공유 O X X O
    다양한 매장 입점 O X X O

    3. 프로젝트 설계

    3.1 FLOW CHARTS

    image


    3.2 프로젝트 요구사항

    일반 회원
    요구사항 ID 요구사항명 요구사항 내용 중요도 (상/중/하) 난이도(상/중/하)
    REQ-001 회원 가입 사용자는 카페 관리 사이트에 회원 또는 사업자로 가입할 수 있어야 함
    REQ-002 회원 탈퇴 사용자는 원한다면 언제든지 탈퇴할 수 있어야 함
    REQ-003 로그인 등록된 회원은 아이디(이메일)와 비밀번호를 사용해 로그인할 수 있어야 함
    REQ-004 로그아웃 회원은 언제든지 로그아웃할 수 있어야 함
    REQ-005 비밀번호 변경 회원은 비밀번호를 변경할 수 있어야 함
    REQ-006 아이디 찾기 아이디를 분실한 경우 이름과 전화번호로 찾을 수 있어야 함
    REQ-007 비밀번호 찾기 비밀번호를 분실한 경우 아이디, 이름, 전화번호로 찾을 수 있어야 함
    REQ-008 개인 정보 수정 사용자는 언제든지 개인 정보를 수정할 수 있어야 함
    REQ-009 매장 조회 사용자는 다양한 조건으로 매장을 검색할 수 있어야 함
    REQ-010 메뉴 조회 사용자는 다양한 조건으로 메뉴를 검색할 수 있어야 함
    REQ-011 리뷰 조회 사용자는 메뉴마다 리뷰를 조회할 수 있어야 함
    REQ-012 옵션 조회 사용자는 메뉴를 선택한 후 옵션을 확인할 수 있어야 함
    REQ-013 리뷰 작성 사용자는 즐겨찾기 된 조합에 대해 카페에 별점 및 리뷰를 작성할 수 있어야 함
    REQ-014 리뷰 수정 사용자는 본인이 작성한 리뷰를 수정할 수 있어야함
    REQ-015 리뷰 삭제 사용자는 본인이 작성한 리뷰를 삭제할 수 있어야함
    REQ-016 즐겨찾기 등록 사용자는 본인의 메뉴 조합으로 즐겨찾기를 등록할 수 있어야 함
    REQ-017 즐겨찾기 수정 사용자는 즐겨찾기에 등록한 정보를 수정할 수 있어야 함
    REQ-018 즐겨찾기 삭제 사용자는 즐겨찾기에 등록한 조합을 삭제할 수 있어야 함
    REQ-019 매장 찜 등록, 삭제 회원 사용자는 찜해두고 싶은 매장을 등록, 삭제할 수 있어야 함
    REQ-020 로그인 내역 기록 사용자가 회원 로그인을 시도하면 그 내역이 기록되어야 함
    사업자
    요구사항 ID 요구사항명 요구사항 내용 중요도 (상/중/하) 난이도(상/중/하)
    REQ-021 매장 등록 문의 사업자인 사용자는 본인 매장에 대한 정보를 신청할 수 있어야 함
    REQ-022 매장 삭제 문의 폐업 시 언제든지 매장 정보를 삭제할 수 있어야 함
    REQ-023 메뉴 등록 사업자인 사용자 본인은 언제든지 메뉴를 등록할 수 있어야 함
    REQ-024 메뉴 수정 사업자인 사용자 본인은 언제든지 메뉴를 수정할 수 있어야 함
    REQ-025 메뉴 삭제 사업자인 사용자 본인은 언제든지 메뉴를 삭제할 수 있어야 함
    REQ-026 오픈 여부 사업자인 사용자 본인은 오픈 여부에 대해 언제든지 수정할 수 있어야 함
    REQ-027 옵션 등록 사업자인 사용자 본인은 언제든지 메뉴 옵션을 등록할 수 있어야 함
    REQ-028 옵션 수정 사업자인 사용자 본인은 언제든지 옵션을 수정할 수 있어야 함
    REQ-029 옵션 삭제 사업자인 사용자 본인은 언제든지 옵션을 삭제할 수 있어야 함
    REQ-030 카테고리 등록 사업자인 사용자 본인은 언제든지 메뉴 별 카테고리를 등록할 수 있어야 함
    REQ-031 코멘트 등록 사업자인 사용자 본인은 언제든지 회원이 남긴 리뷰에 코멘트를 등록할 수 있어야 함
    REQ-032 코멘트 수정 사업자인 사용자는 본인이 남긴 코멘트를 수정할 수 있어야 함
    REQ-033 코멘트 삭제 사업자인 사용자는 본인이 남긴 코멘트를 삭제할 수 있어야 함
    관리자
    요구사항 ID 요구사항명 요구사항 내용 중요도 (상/중/하) 난이도 (상/중/하)
    REQ-034 회원 관리 관리자는 회원이나 사업자를 수정, 삭제할 수 있어야 함
    REQ-035 블랙리스트 관리 관리자는 회원이나 사업자를 블랙리스트 등록 및 삭제할 수 있어야 함
    REQ-036 매장 관리 관리자는 등록된 매장 정보를 수정 및 삭제할 수 있어야 함
    REQ-037 휴면 계정 관리 회원을 휴면 계정 상태로 변경하거나 휴면 해제를 할 수 있어야 함

    요구사항 명세서 바로가기


    3.3 주요기능

    1) 일반 회원

    • 매장 검색
    • 즐겨찾기
    • 리뷰

    2) 사업자

    • 매장 관리
    • 메뉴 관리(등록, 수정, 삭제)
    • 리뷰에 대한 코멘트

    3) 관리자

    • 회원 관리
    • 매장 관리

    3.4 데이터베이스 모델링

    (1) 개념 모델

    image

    (2) 논리 모델

    image

    (3) 물리 모델

    image


    4. 프로젝트 수행 결과

    4.1 테스트 케이스 문서

    테스트 케이스 문서 바로가기


    4.2 테스트 결과

    회원
    1. 회원가입

    2. 로그인 성공

    3. 로그인 실패

    4. 아이디 찾기

    5. 비밀번호 찾기

    6. 비밀번호 수정

    7. 매장 조회

    8. 메뉴 조회

    9. 옵션 조회

    10. 즐겨찾기 추가

    11. 즐겨찾기 수정

    12. 즐겨찾기 삭제

    13. 리뷰 추가, 수정

    14. 리뷰 삭제, 내 리뷰 조회

    15. 메뉴에 대한 리뷰 카운트

    16. 메뉴별 리뷰 조회

    17. 카페 찜 추가 및 삭제


    사업자
    1. 사업자 회원 등록

    2. 카페 등록

    3. 내 매장 조회

    4. 카페 정보 수정

    5. 카테고리 등록

    6. 메뉴 등록

    7. 메뉴 수정

    8. 옵션 등록

    9. 옵션 수정

    10. 메뉴, 옵션 판매 유무 수정(삭제)

    11. 메뉴판 등록

    12. 코멘트 등록

    13. 코멘트 수정

    14. 코멘트 삭제


    관리자
    1. 블랙리스트 회원 관리

    2. 휴면 계정 관리

    3. 탈퇴 회원 관리

    4. 매장 관리


    5. 프로젝트 수행 체계

    5.1 팀원 인적사항

    이름 전공 희망직무 MBTI Email
    전기범 소프트웨어학부 웹 풀스택 개발자 INFJ [email protected]
    조제훈 컴퓨터공학부 백엔드 개발자 ESFJ [email protected]
    최해관 불교학부/융합소프트웨어 PM / 백엔드 개발자 ENTJ [email protected]
    이효진 국어국문학과/컴퓨터공학과 데이터 보안 / 백엔드 개발자 INFJ [email protected]
    방동호 모바일시스템공학과 백엔드 개발자 INFP [email protected]

    5.2 프로젝트 수행 방법

    image

    Ubuntu Linux를 이용하여 DB 서버를 Master-Slave 형태로 Replication하였고,

    권한 설정을 통해 Slave는 SELECT만 처리하게 하고, 나머지 쿼리는 Master가 처리하게 하여 서버의 부하를 줄였다.


    5.2.1 Ubuntu 리눅스에 mariadb 서버 구축

    Virtual Box / Ubuntu Linux 실행하여 Replication 서버 구축

    -Master(INSERT, UPDATE, DELETE)
    -Slave(SELECT)

    master 환경 설정 단계

    1. master mariaDB 설정 파일 수정
    • 1.1 주석 처리 된 log_bin, expire_logs_days, max_binlog_size 항목 주석 제거
    • bind-adress = 0.0.0.0 으로 수정
    • Write and Quit
    1. mariaDB 재 시작
    2. slave에서 접속 할 계정 권한 설정
    3. master의 status에서 file과 position 정보 조회

    slave 환경 설정 단계

    1. slave mariaDB 설정 파일 수정
    • 아래로 스크롤하여 [mysqld] 하단에 server-id = n , relay_log = mysql-relay-bin, log_slave_updates = 1 , read_only = 1 를 작성 n 은 상황에 따라 변경
    1. mariaDB 재 시작
    2. slave 멈추기
    3. change master to master_host = ‘master IP주소’, master_port = 3306, master_user = ‘master’, master_password = ‘master’, master_log_file = ‘master의 file’, master_log_pos=’master 의 position’;작성
    4. slave 시작
    5. show slave status \G;로 slave 상태 확인

    slave에서 INSERT 이벤트 방지를 위한 설정

    • slave 서버의 read-only 옵션 적용 관련
    -- slave 서버에서 slave의 root계정으로 root를 제외한 계정의 user 유저 권한 삭제
    update mysql.user set super_priv='N' where user <> 'root';
    flush privileges;
    
    -- HeidiSQL에 slave가 접속중이라면 HeidiSQL에서 접속 해제 후 다시 접속 

    Master & Slave

    READ ONLY

    구축된 Server 정보

    구축된 서버 정보

    master_Ureca

    • HOST IP: 192.168.0.20
    • Port: 3306

    slave_Ureca(Replication)

    • HOST IP: 192.168.0.41
    • Port: 3306

    6. 팀 회고

    😺전기범

    조제훈 : 기본적인 개념에 대해서 잘 알고 계셔서 프로젝트를 진행하는데 팀원들에게도 많은 도움을 주셨고, 이끌어 가주신 팀원 중 한 분입니다. 흐름에 대해 여러 번 고민하고 최선책을 찾아 응용하는 자세가 좋았습니다. 개선이 필요한 점에 대해 미리 공유해주시기만 한다면 더욱 팀 프로젝트를 진행하는데 팀원 간 소통에 도움이 될 수 있을 것 같습니다!

    최해관 : 프로젝트의 전체적인 흐름을 잡을 수 있도록 기본 개념을 바탕으로 항상 상세히 설명해주셨습니다. 하나의 기능에 대해 상세히 분석하고 충돌되는 부분을 조언해주셔서 감사했습니다.

    이효진 : 알고 있는 게 많아서 의견도 많이 내시고 주도적이신 모습 너무 좋았습니다. 프로젝트에 있어서나 공부에 있어서 많은 도움을 주셔서 감사합니다.

    방동호 : 아이디어를 가장 많이 내셨지만, 제가 그 아이디어들을 모두 제대로 이해하지 못해서 계속 여쭤봐도 짜증 내지 않고, 어떻게 하면 더 확실하게 알려줄지 고민하며 여러 예시를 들어가며 설명해주셔서 감사했습니다.

    🐕조제훈

    전기범 : 논리적, 물리적 모델링이 중간에 변경될 때마다 바로바로 수정해 주셔서 감사합니다. 고생 많으셨습니다.

    최해관 : 아이디어 뱅크 역할을 너무 잘 해내셨고, 변경사항 수정 같은 번거로운 작업을 항상 도맡아 해주셨습니다. 모두가 집에 간 뒤에도 남아서 구현할 기능의 바탕을 미리 만들어주셔서 감사합니다.

    이효진 : 프로젝트에 있어서 항상 주도적이고 조원들에게도 친절한 모습 너무 좋았습니다. 모르는 부분에 대해 항상 친절하게 알려주셔서 너무 감사했습니다!

    방동호 : 조가 된 첫 날부터 편하게 질문을 계속 해도 친절하게 이해가 될 때까지 답해주셔서, 덕분에 수업 과정 또는 프로젝트 진행 과정에서 가끔 따라가지 못했던 부분들을 도와주셔서 감사합니다.

    🦎최해관

    전기범 : 프로젝트 중에 아이디어를 낼 때마다 긍정적으로 반응해주셔서 힘이 났습니다. 감사합니다.

    조제훈 : 이전에 직접 경험했던 것을 함께 이야기하며 프로젝트를 하며 잘 나아갈 수 있게 정보 공유를 해주셨고, 팀원 간 소통에 경청하고 의견도 많이 내주셨습니다. 해결책에 대해서도 논의할 때도 도움을 많이 주셨습니다!

    이효진 : 5조의 긍정맨이십니다! 항상 적극적인 자세와 조의 밝은 분위기를 책임 지시는 모습 감사했습니다.

    방동호 : 먼저, 제 짝꿍이라 그런지 다른 분들보다는 더 많이 오래 지낸 느낌이 없지 않아 있네요. 그래서 다른 분들보다 감사한 점이 더 많아요. 특히 제가 수업 시간에 이해가 안 되는 부분들을 하브루타 시간뿐만 아니라 쉬는 시간 중간중간에 해결해 주시고, 혹시 모르는 게 있더라도 같이 찾아봐 주셔서 수업을 따라가는 데 있어 너무나 편안했습니다. 정말 감사했습니다.

    🐈이효진

    전기범 : 맡은 부분이 난이도가 있었음에도 포기하지 않고 끝까지 해결하려는 모습을 보며 저도 많은 자극을 받았습니다. 감사합니다.

    조제훈 : 프로젝트 진행 사항을 우선적으로 확실히 깨닫기 위해 2번, 3번 다시 보고 이해하면서 생긴 궁금증을 이야기하시면서 미처 놓쳤던 부분에 대해 캐치해주신다든지 함께 하려고 노력하시는 모습이 좋았습니다. 자신감을 더욱 가지셔도 좋을거 같고 더 많은 질문하는 것도 좋을 것 같습니다!

    최해관 : 모두의 이야기를 잘 경청해주시고 이야기 중간마다 문제점을 확실히 파악해주시는 모습이 본받고 싶었습니다. 감사합니다.

    방동호 : 프로젝트 진행 과정에서 팀원들 모두의 이야기를 들어주시고, 중간중간에 모두가 놓친 부분을 캐치하시는 모습을 보며 가끔씩 '우와~!' 했습니다. 그런 부분을 보며 많이 배워갑니다.

    🐢방동호

    전기범 : 질문에 관해 설명을 해드리면서 저도 개념을 다시 한번 공부해 볼 수 있었습니다. 감사합니다.

    조제훈 : 개념부터 차근차근 반복 학습하는게 정말 보기 좋았고, 궁금한걸 알려고 부끄러워하는 것이 아닌 질문도 많이 하시고 노력하시는 모습도 좋았습니다. 팀플하는 동안 의견도 열심히 내주시고 뭐 하나 허투루 넘기지 않으려는 자세가 좋았습니다!

    최해관 : 이해 안가는 부분에 대해 저와 이야기를 많이 나누었는데 그 과정에서 제가 잘못 알고 있던 것도 바로잡으며 많은 공부가 되었습니다. 프로젝트를 진행하다보면 전체 흐름과 맞지 않게 진행이 될 때가 있는데 그 때마다 중요한 문제점을 간파하고 의견을 내주셔서 바른 길로 갈 수 있었습니다. 감사합니다.

    이효진 : 항상 배우려는 자세와 궁금한 것엔 적극적으로 물어보시는 것을 보고 많이 배울 수 있었습니다. 계속 물어보시면서 좋은 의견 내주시면서 많은 도움이 되었어요. 감사합니다.


    7. 참고 문헌

    Releases

    No releases published

    Packages