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에 의존하므로 다중 백엔드 인스턴스나 대규모 수평 확장 전에는 구조를 확인해야 합니다.
이미지 분석
80
Stars
10
Forks
+204
Trending
0
조회수
80 watchers6 open issuesMIT License
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.