Skip to content

기획서

Sungdong Jo edited this page Nov 8, 2019 · 15 revisions

BookUs 📒👥

Festa! (이벤트 주최 및 예약 서비스) Clone

아이디어 개요

이벤트를 손쉽게 주최하고, 등록할 수 있는 서비스입니다. 무료 / 유료 티켓을 판매하고 관리할 수 있으며 티켓을 통한 이벤트 참여 관리도 가능합니다.

해당 서비스를 기획한 배경, 필요성

Deview, FEConf 와 같이 인기가 많은 이벤트의 예약은 선착순으로 진행되며 많은 사용자들이 티켓 오픈 시간에 맞춰 접속하기 때문에, 트래픽이 순간적으로 급증하게 됩니다. 이러한 상황에서 매우 짧은 시간동안 많은 트래픽을 감당할 수 있으면서, 정해진 인원만 예약을 받을 수 있는 안정적인 서비스가 필요합니다.

기술적인 도전 과제

  • 과중한 트래픽이 몰려도 정해진 숫자만큼의 사용자만 예약되는 시스템
  • 예약이 필요할 경우에만 서버의 개수가 늘어나는 Scheduled Scaling 시스템
  • 호스트 페이지에서 이벤트의 통계 및 현황 시각화
  • 재사용 가능한 UI Component 개발
  • Storybook + Cypress 를 이용한 Bulletproof 컴포넌트 작성 (test coverage > 80%)

기능 목록

계정

  • OAuth(Google)를 이용해서 로그인을 할 수 있다.
  • 첫 로그인 시, 회원가입을 진행한다.
    • 이름, 전화번호 입력
  • 로그아웃을 할 수 있다.
  • 예약 완료된 이벤트를 조회할 수 있다.

메인

  • 다가오는 이벤트의 티켓을 modal 형식으로 보여준다.
  • 현재 예약 가능한 가장 가까운 이벤트들을 grid 형식으로 보여준다 무한 스크롤이 가능하며, 스크롤을 할 때마다 이벤트들이 추가된다.
  • 각각의 이벤트는 이미지와 제목, 이벤트 날짜, 내용과 가격정보를 보여주며 클릭시 이벤트의 상세정보를 조회할 수 있다.
  • 상단에는 이벤트를 생성할 수 있는 버튼이 있다.

이벤트 조회 (상세)

  • 이벤트에 대한 상세한 내용을 조회할 수 있다.
    • 티켓의 좌석 점유 현황이 실시간으로 새로고침 없이 표시된다. (optional)
    • 이벤트 주최 장소가 (네이버) 지도로 표시된다.
    • 이미지와 이벤트 상세 내용, 제목, 열리는 날짜 등의 입력한 모든 내용을 보여준다.

이벤트 주최 (등록)

  • 이벤트를 등록할 수 있다.
    • 공개여부
    • 대표이미지
    • 제목
    • 날짜 및 시간
    • 장소 / 상세주소(네이버 지도) / 장소설명
    • 내용(에디터)
    • 티켓
      • 이름
      • 설명
      • 가격
      • 수량 / 수량숨김여부
      • 1인당 구매 가능 개수
      • 판매 기간
      • 환불 마감 날짜

이벤트 예약 (구입)

  • 구매할 티켓 내용이 보여진다.
  • 실제 결제는 이루어지지 않음

호스트 조회 (주최자 조회 페이지)

  • 주최자의 정보를 보여준다.
  • 프로필 사진과 테마 이미지, 상세정보와 현재까지 개최했던 이벤트에 대해 보여준다.

내 페이지

  • 우측 상단의 내 이름을 눌렀을 때 접근이 가능하다.
  • 내 티켓, (나의) 호스트, 프로필 상세정보(수정가능), 주최한 이벤트 내용을 보여줌
  • 상단의 탭 형태의 디자인이며 각각을 누를때마다 다른 기능을 보여준다.

주최자 페이지

  • 참석자의 출석을 조회하고 체크할 수 있다.
  • 참석자에게 이메일을 발송할 수 있다. (이건 옵션이 좋을 것 같아요.)
  • 이벤트의 내용(날짜, 제목, 공개여부, 이미지, 주소, 설명)을 수정할 수 있다.
  • 티켓 정보를 수정할 수 있다.(티켓 이름/유형, 설명, 수량, 가격, 수량 숨김 표시)
  • 통계자료 추가
이벤트 시작 이전(이벤트 등록 직후)
  • 사용자가 이벤트를 조회한 시간의 분포 (그래프)
  • 이벤트 알림 설정한 사용자들의 현황 (number) - Service Worker
    • 수요예측 가능(알림 설정한 사람들에 대한 데이터 시각화)
이벤트 시작 이후(티켓판매 시작)
  • 남아있는 티켓의 양 (number) / 총 매출 (number)
  • 시간당 이벤트 티켓 판매 현황 (그래프)
이벤트 종료 이후(티켓판매 종료)
  • 체크인에 대한 시간 분포 (그래프)
  • (optional) 사용자의 추가 정보(연령대, 관심사 등)를 이용한 통계

개발 환경

Language : Typescript (Airbnb style)

Front-end : React, Styled Component, Storybook

Back-end : Node.js, Express

Test : Jest, Cypress, Supertest, nGrinder, Codecov

DevOps : Travis CI → Docker → Kubernetes || ncloud

API Documentation Tool : Swagger

BookUs!

개요
기획서

Tech

실용적인 리액트 테스트 전략
DevOps
Infra Structure
컴포넌트 작성법
Client Sturcture

Documents

데이터베이스 스키마
Yarn workspace 명령어
Docker를 이용한 서버 개발 환경
Linting Tools

Stress Testing Log

테스트 로그

1차 테스트

📝 Agile Process

스프린트 0주차: 기획 단계
스프린트 1주차: 개발 환경 구축
스프린트 2주차: 개발
스프린트 3주차: 개발
스프린트 4주차: 개발
스프린트 5주차: 개발
👉 스프린트 6주차 🔥

👷‍♂️ Technique Writing

🤝 Rules

Clone this wiki locally