Skip to content

Latest commit

 

History

History
207 lines (169 loc) · 11.5 KB

File metadata and controls

207 lines (169 loc) · 11.5 KB

🍽️ 테이블토피아 - 실시간 레스토랑 예약 & 웨이팅 플랫폼

🧭 목차

🚀 프로젝트 소개

일상 속 소소한 즐거움, 외식.

하지만 맛집을 찾고, 예약하고, 웨이팅하는 과정은 여전히 불편함으로 가득합니다.

😵 혹시 이런 경험, 해본 적 있으신가요?

  • 🍽️ "오늘 저녁 뭐 먹지?"
    • 네이버, 인스타그램, 카카오맵을 오가며 맛집을 찾지만, 정작 지금 예약 가능한 곳인지 알 수가 없고...
  • ⏰ "예약 가능한 시간이 언제지? 자리는 어디지?"
    • 전화 예약은 영업시간에만 가능하고, 원하는 자리를 선택할 수 없어 답답하고...
  • 🪑 "결제 직전에 '이미 선택된 좌석입니다'?"
    • 좌석을 고르고, 결제를 클릭하는 순간 뜨는 "이미 선택된 좌석입니다." 한 마디에 처음부터 다시 시작해야 하는 짜증나는 경험...
  • 🚶 "웨이팅 몇 팀이나 남았지?"
    • 내 차례가 언제인지, 얼마나 더 기다려야 하는지 알 수 없어 막연하고...
  • 🔍 "이 식당 분위기는 어때?"
    • 광고성 리뷰와 오래된 정보들 사이에서 진짜 방문 후기를 찾기란 너무 어렵고...

테이블토피아는 이런 불편함을 모두 해결하는 데서 시작했습니다.


🎯 핵심 기능 및 시연

테이블토피아는 사용자 및 사장님 모두에게 최적화된 외식/운영 경험을 제공합니다.

1. 📱 실시간 테이블 현황 확인 (No More '이선좌'!)

default.mp4
  • WebSocket + Redis 기반 실시간 동기화
  • 다른 사용자가 좌석을 홀드하는 즉시 반영됩니다.
  • 보이는 좌석 = 예약 가능한 좌석을 보장합니다.

2. ⚡ 스마트 웨이팅 시스템

default.mp4
  • 대기팀 실시간 반영으로 현재 내 앞에 몇 팀이 있는지 정확하게 확인합니다.
  • 입장 알림 기능을 제공하여 내 차례가 되면 자동으로 알림을 받아 식당 앞에서 줄 설 필요가 없습니다.

3. 🤖 AI 기반 맞춤 추천

default.mp4
  • 취향·상황 기반 음식점 추천
  • OpenAI API 활용으로 사용자에게 가장 적합한 식당을 찾아줍니다.

4. ⭐ 즐겨찾기 및 실제 방문자 리뷰

default.mp4
  • 좋아하는 식당을 즐겨찾기로 저장해둘 수 있습니다.
  • 방문자 인증 기반의 신뢰 가능한 후기만 제공하여 정확한 정보를 얻을 수 있습니다.

5. 📊 통합 매장 관리 시스템 (사장님용)

2.mp4
2.mp4
  • 매장 관리 + 예약 + 웨이팅 + 테이블 관리가 하나의 시스템으로 통합됩니다.
  • 사장님을 위한 올인원 운영 솔루션입니다.

🛠️ 기술 스택

Front-End

HTML5 CSS3 JavaScript React

Back-End

Java Spring Boot Spring Security Apache Tomcat

Database & ORM

MySQL JPA Redis

개발 환경 (Development Environment)

Windows macOS IntelliJ IDEA Gradle Lombok

형상 관리 (Version Control)

Git GitHub Jira

외부 API (External APIs)

Google Maps Toss Payments ChatGPT

인프라 (Infrastructure)

Naver Cloud WebSocket JWT


🏗️ 시스템 아키텍처 및 설계

🗂️ 시스템 구조

image

🔁 CD/CD 자동 배포 파이프라인

image

🗄️ ERD

Tabletopia (1)

🎯 유즈케이스 다이어그램

image

⚡ 트러블 슈팅 및 의사결정

  • 인증 방식 선택 기록 (JWT vs 세션) (Wiki)

    • 문제: User-Service와 Realtime-Service가 분리된 환경에서, 매 요청마다 인증 서버를 거치면 발생하는 네트워크 오버헤드 우려.
    • 해결: JWT 를 도입하고, 각 서비스가 Secret Key를 공유하여 토큰을 독립적으로 검증하는 구조 설계.
    • 결과: 서비스 간 의존성을 줄이고, 별도의 네트워크 통신 없이 서명(Signature) 검증만으로 빠른 인증 처리를 구현.
  • 테이블 선점에 Redis 도입하기 (Wiki)

    • 문제: 다수의 사용자가 동시에 동일 좌석을 선택할 때 발생하는 동시성 이슈와 RDBMS 부하.
    • 해결: Redis를 도입하여 실시간 좌석 선점(Hold) 시스템 구축.
    • 결과: 인메모리의 빠른 속도와 싱글 스레드 기반의 원자성을 활용해 데이터 무결성 보장 및 DB 부하 최소화.
  • 네이버 클라우드 배포 및 트러블 슈팅 (Wiki)

    • 배경: 국내 사용자에게 최적화된 네트워크 속도와 초기 인프라 비용 효율성을 고려하여 Naver Cloud Platform 채택.
    • 구현: Docker & Docker Compose를 활용하여 Spring Boot(App), MySQL(DB), Redis(Cache), React(Web) 컨테이너를 통합 관리하는 환경 구축.
    • 트러블 슈팅: 배포 과정에서 발생한 한글 인코딩 깨짐, CORS 포트 매핑 문제, Nginx 라우팅 오류 등을 해결하고 문서화하여 운영 안정성 확보.

🏃 ZEROFIVE 팀


이세형
로그인/회원가입
결제 연동



김예진
테이블 예약
Docker 배포 & NCP 인프라


김지민
챗봇
관리자 페이지


서예닮
웨이팅
마이페이지


성유진
웨이팅
메인/상세 페이지