본문으로 건너뛰기

트렌딩 - GitHub 인기 레포 & HuggingFace 모델

karanshukla/openresto

TypeScript0 / 0

Docker Compose로 배포하는 다점포 레스토랑 예약 관리 시스템

TL;DR

OpenResto는 레스토랑·바·카페가 직접 운영할 수 있는 독립 실행형 셀프호스팅 예약 관리 시스템입니다. ASP.NET Core 10, SQLite, Entity Framework Core 백엔드와 React Native Expo Router 프론트엔드가 Docker Compose 안에서 웹·모바일 예약과 관리자 기능을 제공합니다. 고객은 계정 없이 시간대와 테이블을 선택하고 5분 보류 후 BookingRef로 예약을 조회하며, 관리자는 여러 지점·좌석 섹션·브랜딩·예약 일시중지를 한 대시보드에서 처리합니다. 단일 서버, Pi, NAS처럼 외부 서비스와 관리형 데이터베이스를 피하려는 소규모 운영에는 적합하지만, 인메모리 테이블 보류 구조는 다중 인스턴스 확장 전에 확인해야 합니다.

핵심 포인트

  • OpenResto는 특정 프레임워크의 부가 기능이 아닌 독립 실행형 셀프호스팅 레스토랑 예약 관리 시스템입니다. ASP.NET Core 10 백엔드와 React Native Expo Router 프론트엔드가 웹·모바일 예약 흐름을 함께 구성합니다. Docker Compose 한 번으로 배포할 수 있어 외부 SaaS 의존성을 줄이려는 운영자에게 적합합니다.
  • 고객이 시간대를 고르면 특정 테이블을 5분 동안 ConcurrentDictionary에 원자적으로 보류하고, 예약 시 holdId를 검증해 중복 선점을 막습니다. 모든 시간은 UTC로 저장하지만 레스토랑의 IANA timezone을 기준으로 영업시간과 슬롯을 계산합니다. 다점포 운영, 섹션별 좌석 관리, 예약 일시중지까지 한 인스턴스에서 처리할 수 있습니다.
  • 관리자는 예약 상태와 고객 정보를 대시보드에서 관리하고, 앱 이름·색상·아이콘·PWA 아이콘을 데이터베이스 기반으로 바꿀 수 있습니다. MailKit SMTP를 통한 이메일과 암호화된 HttpOnly 쿠키를 사용하며 고객 계정 없이 BookingRef로 예약을 조회합니다. SQLite, 자동 EF Core 마이그레이션, GDPR용 예약 하드 삭제가 포함되어 소규모 매장의 직접 운영에 초점을 둡니다.
  • 운영 환경은 .NET 10 SDK와 Node.js 20+를 사용하며, 사전 빌드된 linux/amd64·linux/arm64 GHCR 이미지 또는 소스 빌드를 선택합니다. 프론트엔드 Jest 테스트, Playwright E2E, 모든 Push마다 실행되는 OWASP ZAP API 스캔과 EF Core 마이그레이션 안전성 검사가 제공됩니다. 다만 테이블 보류가 인메모리 ConcurrentDictionary에 의존하므로 다중 백엔드 인스턴스나 대규모 수평 확장 전에는 구조를 확인해야 합니다.

이미지 분석

레스토랑 브랜드 설정과 고객용 실시간 미리보기를 나란히 배치한 데스크톱 관리 화면입니다.
화면 왼쪽에는 앱 이름, 홈페이지 부제, 기본 색상, Favicon 아이콘을 바꾸는 Brand Identity 폼이 있고 오른쪽에는 Paddy's Pub의 다크 테마 예약 페이지 미리보기가 표시됩니다. README의 데이터베이스 기반 white-label 브랜딩과 BrandContext 적용 흐름이 실제 운영 화면에서 어떻게 연결되는지 확인할 수 있습니다.
예약 수와 점유 현황, 당일 예약을 한 화면에 모은 관리자 대시보드입니다.
상단 카드에서 오늘 예약 19건, 활성 보류 0건, 레스토랑 상태 Paused, 누적 방문객 772명을 확인할 수 있으며 중앙 그래프는 최근 7일 예약량을 날짜별 막대로 나타냅니다. 오른쪽의 New Booking, 전체 예약 조회, 예약 일시중지, 예약 연장, 설정 관리 버튼은 README의 관리자 운영 기능과 직접 연결됩니다.
모바일 예약 화면에서 인기 시간대, 인원, 날짜, 좌석, 고객 정보를 입력하는 흐름입니다.
Lunch·Dinner·All 탭과 30분 단위 시간 선택이 위쪽에 배치되고, 인원·날짜·시간·섹션·테이블·이름·이메일·요청사항을 입력한 뒤 테이블 보류 상태와 만료 시간을 확인할 수 있습니다. 화면에 America/Toronto 시간대와 5분 이내 보류 만료 정보가 함께 표시되어 README의 timezone 처리와 실시간 table hold 개념을 구체화합니다.
Booking Reference와 이메일로 예약을 찾고 캘린더에 추가하는 모바일 조회 화면입니다.
고객은 계정 생성 없이 예약 참조 코드와 이메일을 입력해 예약을 조회하며, 결과 화면에서 Google Calendar, Outlook, ICS 내보내기 선택지를 확인할 수 있습니다. 이는 README가 설명하는 BookingRef 기반 예약 조회와 고객 개인정보를 최소화하는 예약 경험을 시각적으로 뒷받침합니다.

80

Stars

10

Forks

+204

Trending

0

조회수

80 watchers6 open issuesMIT License

관련 토론

아직 관련 토론이 없습니다.

댓글

댓글을 작성하려면 로그인이 필요합니다.