예약 포털 (Vue3 + Firebase) - 서비스 오픈까지

1. 내 주변 포털 - Vue3 + Vuetify 3 + Firebase

그랜파 개발자 2025. 5. 29. 12:57

Firebase Hosting으로 실제 웹 서비스 오픈까지 진행합니다.

서비스 오픈까지 개발을 진행하면서 계속 수정, 변경될 것입니다.

 

내 주변의 여러 상점이 함께 사용하는 '내 주변 포털'을 개발합니다.

'내 주변 포털'은 내 주변의 여러 상점에 예약을 하거나,

또는 온라인으로 테이크 아웃 주문할 수 있는 포털 웹 페이지입니다.

 

Vue, Vuetify, Firebase를 활용해 개발합니다.

이 조합은 빠른 개발, 실시간 기능, 확장성에 매우 적합합니다.

아래는 시스템 아키텍처와 주요 기능을 고려한 설계 및 개발 로드맵입니다.


🔧 기술 스택

  • 프론트엔드: Vue 3 + Vuetify 3 + Vue Router + Pinia (상태관리)
  • 백엔드/DB: Firebase
    • Authentication: 이메일/소셜 로그인
    • Firestore: 예약, 사용자, 업체 정보 저장
    • Cloud Functions (선택): 예약 승인, 알림 등 백엔드 로직
    • Firebase Storage: 프로필 사진, 업체 이미지 등

📌 핵심 기능 정의

1. 사용자 유형

  • 관리자: 전체 포털 관리 (업체 등록 승인, 통계 보기 등)
  • 업체: 예약 시간 슬롯 설정, 예약 관리, 고객 정보 열람
  • 고객: 업체 선택 후 예약 요청, 예약 확인/취소

2. 기능 목록 (업체 중심)

기능 설명
업체 회원가입 업체 정보 등록, 이메일 인증
예약 슬롯 등록 날짜/시간/인원수 등 예약 가능한 시간 설정
예약 확인 및 승인 고객이 신청한 예약을 확인하고 승인/거절 가능
고객 관리 예약한 고객 리스트, 이력 열람
캘린더 뷰 Vuetify Calendar로 예약 현황 시각화
푸시 알림 (선택) 예약 승인/취소 시 사용자에게 알림

🗂️ Firestore 구조 예시

users (고객)
  └─ uid
      └─ name, email, role: 'customer'

vendors (업체)
  └─ vendorId
      └─ name, category, email, timeSlots[], ownerUid, createdAt

bookings
  └─ bookingId
      └─ vendorId, customerUid, date, time, status: 'pending'|'confirmed'|'canceled'

🛠️ 개발 순서 (WBS 예시)

1단계: 프로젝트 세팅

  • Vue 3 + Vuetify 프로젝트 생성 (Vite 기반)
  • Firebase 연동 (auth, firestore, storage)

2단계: 인증 및 역할 분리

  • Firebase Auth 이메일 로그인 구현
  • 로그인 후 사용자 유형 선택 및 role 저장

3단계: 업체 기능 구현

  • 업체 정보 등록 페이지
  • 예약 시간 슬롯 등록 및 수정 UI
  • 예약 확인/승인/취소 기능
  • 캘린더 기반 예약 현황 보기

4단계: 고객 기능 구현

  • 업체 리스트 조회
  • 예약 신청 UI
  • 내 예약 목록 조회/취소 기능

5단계: 관리자 기능 (선택)

  • 전체 업체 및 예약 통계
  • 업체 승인 기능

6단계: 알림 기능 (선택)

  • Firestore 트리거로 예약 승인 시 고객에게 알림 전송

🎨 UI 예시 페이지

  • /login – 로그인/회원가입
  • /dashboard – 사용자 타입에 따라 리디렉션
    • /vendor/home – 업체 대시보드
    • /customer/home – 고객 대시보드
  • /vendor/schedule – 예약 슬롯 설정
  • /vendor/bookings – 예약 관리
  • /customer/vendors – 업체 검색 및 예약
  • /customer/bookings – 내 예약 목록