Skip to content

juyeongeun/festival-be

 
 

Repository files navigation

🎉🎪 잇잇(itEat)

전국 축제를 한눈에! 편리하게 즐기는 축제 플랫폼

📄 팀 협업 노션 링크

👥 Festival_BE

👨‍👩‍👧 팀원 구성

김민수
BE 팀원: 김민수
GitHub 프로필
주영은
BE 팀원: 주영은
GitHub 프로필

🌟 프로젝트 소개

전국의 다채로운 축제 정보를 한눈에 볼 수 있는 원스톱 축제 플랫폼입니다.

축제를 즐기고 싶은 사람들이 긴 대기 시간 없이 손쉽게 부스를 예약하고, 효율적으로 축제를 즐길 수 있도록 도와드립니다.

지역 축제의 활성화와 방문객들의 편의성 향상을 위해 개발하였습니다.

이 웹 서비스는 다음과 같은 기능을 제공합니다:

  • 부스 탐색: 먹거리, 체험, 굿즈 등 다양한 부스를 간편하게 검색 가능.
  • 간편 결제: 빠르고 쉬운 예약 및 주문으로 긴 대기 시간을 없앰.
  • 리뷰 및 게시판: 축제 경험을 공유하고 다른 사용자와 소통할 수 있는 커뮤니티 제공.
  • 실시간 알림: 축제 정보, 이벤트, 부스 현황에 대한 알림을 즉시 수신 가능. Festival Companion과 함께 기다림 없는 축제와 다양한 정보를 경험하세요! 🎊

🗓 프로젝트 기간

📅 2024.10.30 ~ 2024.12.22


⚙ 기술 스택

Backend

Database

ETC


🧑‍💻 구현 기능 상세

  • Wishlist CRUD
    • 하나의 부스만 결제될 수 있도록 장바구니에 상점id를 기준으로 여러 부스의 메뉴가 담기는 것을 방지
    • 로그인 한 사용자 중 해당 축제에 참여중인 사용자만 이용 가능하게 확인하는 로직 추가
    • 해당 부스의 메뉴들을 병렬 처리하기 위해 promise.all() 사용
  • Participation CRUD
    • 해당 축제에 참여중인 사용자를 추가하기 위한 로직 구현
  • Pay CRUD
    • 클라이언트에서 결제 완료 후 주문 번호 랜덤 부여
    • 부스 조회하기 편하게 정렬, 페이징, 카테고리 기능 제공
    • 선택적 결제가 가능하도록 promise.all()을 사용하여 결제 여부 수정
  • Comment CRUD
    • 커뮤니티 탭에서 댓글 사용을 위한 CRUD 생성
    • 댓글을 달면 해당 게시글 작성자에게 실시간 알림 발송
    • 댓글 작성자만 댓글을 수정 및 삭제 할 수 있게 권한 체크
  • Booth CRUD
    • 해당 축제에 부스를 등록 권한 요청시 대기하는 로직 생성
    • 관리자가 해당 축제의 상점 조회 시, 카테고리 별로 확인할 수 있게 쿼리 작성
    • 관리자가 권한을 요청한 상점을 확인 후 반려, 승인 부여
    • 사용자에게는 승인된 부스만 조회 가능하게 필터링
  • User CRUD
    • 일반 사용자는 접근성이 편리한 SNS 로그인 도입 (Naver, Kakao, Google)
    • 로그인 시 AccessToken과 RefreshToken 생성하여 권한 부여 → 토큰에는 사용자 기본 정보 포함
    • Token 검증하는 미들웨어 구현
    • 관리자는 공공데이터 API로 추가한 축제가 생성될 때 축제 고유 번호와 지정 PW 지급
    • 관리자가 지급받은 PW 수정하기 위한 endPoint 제공
    • 모든 사용자의 정보와 관련되어 민감한 정보를 빼고 리스폰 전달
  • Socket.io
    • 프론트엔드 url과 연결하여 Socket 통신
    • 댓글, 공지사항 작성시 축제에 참여하는 사용자 및 소유자에게 실시간 알림 발송

🚀 주요 기능

  • 부스 탐색 기능

    • 축제의 다양한 부스를 쉽고 빠르게 탐색
  • 간편 결제 시스템

    • 몇 번의 클릭만으로 먹거리 부스 예약 및 결제가 가능
  • 커뮤니티 소통

    • 리뷰를 남기고 게시판을 통해 분실물 찾기 또는 축제 경험을 공유
  • 실시간 정보 알림

    • 이벤트 소식, 게시글 댓글 알림 등 해당 축제의 정보를 실시간으로 확인

📂 프로젝트 구조

폴더 구조 보기
📦festival-be
 ┣ 📂config
 ┃ ┣ 📜cookieConfig.js
 ┃ ┗ 📜passportConfig.js
 ┣ 📂controllers
 ┃ ┣ 📜boardController.js
 ┃ ┣ 📜boothController.js
 ┃ ┣ 📜commentController.js
 ┃ ┣ 📜festivalController.js
 ┃ ┣ 📜menuController.js
 ┃ ┣ 📜noticeController.js
 ┃ ┣ 📜notificationController.js
 ┃ ┣ 📜participationController.js
 ┃ ┣ 📜payController.js
 ┃ ┣ 📜reviewController.js
 ┃ ┣ 📜userController.js
 ┃ ┗ 📜wishlistController.js
 ┣ 📂middleware
 ┃ ┣ 📂booth
 ┃ ┃ ┗ 📜boothValidation.js
 ┃ ┣ 📂error
 ┃ ┃ ┣ 📜asyncHandler.js
 ┃ ┃ ┗ 📜errorHandler.js
 ┃ ┗ 📂passport
 ┃ ┃ ┗ 📜jwtToken.js
 ┣ 📂prisma
 ┃ ┣ 📂migrations
 ┃ ┃ ┣ 📂20241210120852_review
 ┃ ┃ ┃ ┗ 📜migration.sql
 ┃ ┃ ┗ 📜migration_lock.toml
 ┃ ┣ 📜schema.prisma
 ┃ ┗ 📜seed.js
 ┣ 📂repositorys
 ┃ ┣ 📜boardRepository.js
 ┃ ┣ 📜boothRepository.js
 ┃ ┣ 📜commentRepository.js
 ┃ ┣ 📜festivalRepository.js
 ┃ ┣ 📜menuRepository.js
 ┃ ┣ 📜noticeRepository.js
 ┃ ┣ 📜notificationRepository.js
 ┃ ┣ 📜participationRepository.js
 ┃ ┣ 📜payRepository.js
 ┃ ┣ 📜reviewRepository.js
 ┃ ┣ 📜userRepository.js
 ┃ ┗ 📜wishlistRepository.js
 ┣ 📂router
 ┃ ┣ 📜boardRouter.js
 ┃ ┣ 📜boothRouter.js
 ┃ ┣ 📜commentRouter.js
 ┃ ┣ 📜festivalRouter.js
 ┃ ┣ 📜menuRouter.js
 ┃ ┣ 📜noticeRouter.js
 ┃ ┣ 📜notificationRouter.js
 ┃ ┣ 📜participationRouter.js
 ┃ ┣ 📜payRouter.js
 ┃ ┣ 📜reviewRouter.js
 ┃ ┣ 📜userRouter.js
 ┃ ┗ 📜wishlistRouter.js
 ┣ 📂scheduler
 ┃ ┗ 📜festivalCreate.js
 ┣ 📂services
 ┃ ┣ 📜boardService.js
 ┃ ┣ 📜boothService.js
 ┃ ┣ 📜commentService.js
 ┃ ┣ 📜festivalService.js
 ┃ ┣ 📜menuService.js
 ┃ ┣ 📜noticeService.js
 ┃ ┣ 📜notificationService.js
 ┃ ┣ 📜participationService.js
 ┃ ┣ 📜payService.js
 ┃ ┣ 📜reviewService.js
 ┃ ┣ 📜userService.js
 ┃ ┗ 📜wishlistService.js
 ┣ 📂utils
 ┃ ┣ 📜checkUser.js
 ┃ ┗ 📜prismaClient.js
 ┣ 📜README.md
 ┣ 📜app.js
 ┣ 📜package-lock.json
 ┣ 📜package.json  

🔗 링크

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%