예약 앱 만드는 방법: 시간 슬롯, 가용성, 알림, 보증금
예약 앱을 만들려면 네 가지가 함께 작동해야 합니다. 예약할 수 있는 대상의 목록(서비스, 방, 직원), 각 대상이 언제 가능한지에 대한 규칙, 실제로 비어 있는 슬롯만 제안하는 예약 흐름, 그리고 사업자가 들어온 예약을 관리하는 비공개 화면입니다. AI 앱 빌더는 짧은 설명만으로 몇 분 안에 작동하는 첫 버전을 만들 수 있습니다. 진짜 작업은 규칙을 정하는 것입니다. 슬롯 길이, 버퍼 시간, 취소 정책, 시간대를 정하고, 중복 예약이 불가능한지 테스트해야 합니다.
먼저 "예약"이 무엇인지 정하기
예약 앱은 겉보기에는 비슷하지만 내부는 많이 다릅니다. 먼저 다음을 답해 보세요.
- 무엇을 예약하나요? 서비스(머리 자르기), 사람(과외 선생님), 자원(회의실, 코트, 밴), 또는 세션의 자리(정원 12명인 요가 수업)입니다.
- 시간이 얼마나 걸리나요? 서비스마다 고정되어 있나요, 아니면 고객이 고르나요?
- 누가 제공하나요? 한 사람인가요, 각자 근무 시간이 있는 여러 직원인가요, 아니면 아무도 없나요(방 같은 경우)?
- 예약 후에는 무슨 일이 일어나나요? 즉시 확정되나요, 아니면 사업자가 승인하는 요청인가요?
- 돈이 관련되나요? 무료인가요, 현장 결제인가요, 선결제 보증금인가요, 전액 선결제인가요?
"시간을 요청하면 사업자가 이메일로 확정"은 "보증금이 있는 직원 세 명의 일정에 대한 즉시 예약"보다 훨씬 만들기 쉽습니다. 둘 다 유효하니, 첫 버전에 실제로 필요한 쪽을 고르세요.
앱에 필요한 것
데이터
| 테이블 | 주요 필드 |
|---|---|
| 서비스 | 이름, 소요 시간, 가격, 뒤쪽 버퍼, 활성 여부 |
| 직원 또는 자원 | 이름, 제공하는 서비스 |
| 가용성 | 직원별 주간 근무 시간, 그리고 예외(휴일, 일회성 휴무) |
| 예약 | 서비스, 직원, 시작 시간, 종료 시간, 고객 정보, 상태(대기, 확정, 취소), 결제 상태 |
| 고객 | 이름, 이메일, 전화번호, 메모. 처음에는 선택 사항이며 예약 안에 함께 둘 수도 있음 |
시작 시간뿐 아니라 모든 예약에 종료 시간을 저장하면 겹침 확인이 훨씬 간단해집니다.
페이지
- 공개 페이지: 서비스 목록, 슬롯 선택기, 예약 양식, 예약 확인 페이지, 취소 또는 일정 변경 링크.
- 비공개 페이지(사업자 또는 직원용): 오늘의 일정, 다가오는 예약, 시간 차단 기능, 서비스와 근무 시간 설정.
권한
고객은 빈 슬롯이나 예약된 슬롯만 보아야 하며, 다른 고객의 이름은 절대 보여서는 안 됩니다. 직원은 자기 일정만 볼 수 있고, 사업자는 모든 것을 볼 수 있을 수도 있습니다. 이 점을 적어 두세요. 로그인과 역할이 필요한지 여기서 결정됩니다. 앱에 로그인을 추가하는 방법 가이드에서 옵션을 다룹니다.
어려운 부분과 해결 방법
중복 예약
고전적인 버그입니다. 두 사람이 페이지를 열고 둘 다 10:00이 비어 있는 것을 보고, 둘 다 예약합니다. 해결책은 예약을 저장하는 순간 서버에서 다시 확인하고, 그사이 겹치는 것이 있으면 거부하는 것입니다. 이를 명시적으로 요청하세요.
예약을 저장할 때 같은 직원에 대해 요청된 시간(버퍼 포함)과 겹치는 확정 또는 대기 중인 예약이 없는지 서버에서 다시 확인해 줘. 겹치는 예약이 있으면 거부하고 "방금 그 시간이 예약되었습니다. 다른 시간을 선택해 주세요."를 보여 줘.
그다음 두 개의 브라우저 창으로 테스트하세요.
시간대
모든 시간은 UTC로 저장하고, 표시할 때 변환하세요. 예약 페이지가 누구의 시간대를 보여 줄지 정하세요. 대면 서비스는 보통 사업자의 시간대를, 온라인 통화는 고객의 시간대를 씁니다. 그리고 페이지에 그것을 표시하세요. 서머타임 전환 시점을 걸친 예약도 테스트하세요.
버퍼, 사전 고지, 제한
미리 정해 둘 가치가 있는 흔한 규칙은 다음과 같습니다. 예약 사이의 버퍼, 최소 사전 고지("2시간 전까지만 예약 가능"), 얼마나 먼 미래까지 예약할 수 있는지, 하루 최대 예약 수입니다. 각각은 프롬프트의 한 문장이며, 빼 두면 AI가 기본값을 대신 골라 버립니다.
취소와 노쇼
계정이 없어도 고객이 취소할 수 있도록, 모든 예약 확인에 고유 토큰이 담긴 취소 링크를 넣으세요. 취소 가능 기간과 보증금 환불 여부를 정하고, 결제 전에 그 정책을 보여 주세요.
알림
알림 이메일이나 문자는 일정에 따라 실행되는 무언가가 필요합니다("15분마다 실행해서 24시간 뒤에 시작하는 예약의 알림을 보내 줘"). 빌더와 호스팅이 예약 작업을 어떻게 처리하는지 확인하세요. 지원하지 않는다면, 앱의 엔드포인트를 호출하는 외부 스케줄러를 쓰거나, 캘린더 초대를 첨부한 예약 확인 이메일을 보내 고객의 캘린더가 알림을 주도록 하세요. 이메일 제공업체 측 설정은 앱에서 이메일 보내는 방법을 참고하세요.
보증금과 결제
Stripe를 사용할 때의 일반적인 패턴은 다음과 같습니다.
- 고객이 슬롯을 고르면, 앱은 짧은 시간(예: 15분) 동안 슬롯을 잡아 두는 대기 예약을 만듭니다.
- 앱은 고객을 보증금 결제를 위한 Stripe Checkout으로 보냅니다.
- 결제가 성공하면 Stripe가 웹훅으로 앱에 알리고, 예약은 확정이 됩니다.
- 제시간에 결제되지 않으면 대기 중인 예약은 만료되고 슬롯이 다시 열립니다.
Stripe의 기본 요금은 성공한 카드 결제마다 비율 수수료와 고정 수수료가 붙으며, 월 요금은 없습니다(2026년 9월 기준). 요율은 국가마다 다르니 여러분의 국가는 Stripe 요금 페이지에서 확인하세요. 모든 것이 작동할 때까지는 테스트 모드와 테스트 카드를 사용하세요. 단계별 안내는 앱에 결제를 추가하는 방법 가이드에 있습니다.
작동하는 첫 프롬프트
Northside Barbers를 위한 예약 앱을 만들어 줘. 서비스: 헤어컷(30분, $25), 수염 다듬기(15분, $12), 헤어컷 + 수염(45분, $32). 바버는 Sam과 Ali 두 명이며, 각각 화요일부터 토요일까지 9:00–18:00에 근무해. 고객은 서비스를 고르고, 바버 또는 "아무 바버"를 고른 다음, 앞으로 14일 동안의 빈 15분 단위 시작 시간만 보고, 이름, 전화번호, 이메일을 입력해. 예약은 데이터베이스에 저장하고, 각 예약 뒤에는 10분 버퍼를 두며, 중복 예약을 막기 위해 저장할 때 가용성을 다시 확인해 줘. 취소 링크가 있는 예약 확인 페이지를 보여 줘. 사업자에게는 오늘과 다가오는 예약을 보여 주는 비공개 페이지가 있고, 예약을 취소할 수 있으며, 시간을 차단할 수 있어야 해. 시간은 매장의 현지 시간대를 따르고. 깔끔하고 모바일 우선 디자인으로 해 줘.
이 프롬프트에는 서비스, 직원, 근무 시간, 규칙, 사업자 화면이 모두 적혀 있습니다. 이것이 없으면 AI가 추측해야 하는 부분입니다.
빌드 단계
- 핵심 예약 흐름을 먼저. 서비스 → 슬롯 → 양식 → 저장된 예약 → 확인. 휴대폰에서 이것이 작동하기 전에는 다른 것은 하지 마세요.
- 사업자 화면. 오늘 목록, 다가오는 목록, 취소, 시간 차단.
- 사업자 페이지 보호. 실제 데이터를 넣기 전에 로그인을 추가하세요.
- 규칙. 버퍼, 사전 고지 기간, 예약 가능 기간, 휴일.
- 이메일. 캘린더 초대와 취소 링크가 포함된 예약 확인.
- 보증금이 필요하다면, 먼저 Stripe 테스트 모드에서.
- 경계 사례 테스트. 두 창에서 같은 슬롯 예약, 자정을 넘는 예약, 서머타임 날짜, 취소된 예약이 슬롯을 다시 여는지 확인.
- 게시한 뒤, 링크를 공유하기 전에 직접 실제 예약을 한 번 해 보세요.
흔한 실수
- 브라우저에서만 가용성 확인하기. 맞아 보이지만 여전히 중복 예약이 생깁니다.
- 시간대 없이 현지 시간 저장하기. 시계가 바뀌기 전까지는 잘 작동합니다.
- 공개 캘린더에 고객 이름 표시하기. 빈 시간인지 예약된 시간인지만 보여 주세요.
- 첫날부터 직원 일정, 적립 포인트, SMS 만들기. 핵심 흐름을 먼저 출시하고, 고객이 실제로 요청하는 것을 나중에 추가하세요.
- 사업자가 시간을 차단할 방법이 없음. 첫 병가 날에 노쇼가 생깁니다.
Calendly(또는 유사 도구)가 더 나은 경우
한 사람이 통화를 위해 가용 시간을 공유하는 경우라면, 일정 도구를 이기기 어렵습니다. 2026년 9월 기준 Calendly의 무료 요금제는 이벤트 유형 하나, 캘린더 연결 하나, 맞춤 설정 가능한 예약 페이지가 있는 1:1 일정 잡기를 제공하며, 유료 요금제는 이벤트 유형과 팀 기능을 추가합니다. 이런 도구는 기존 캘린더에 바로 연결되는데, 직접 만든 앱은 그렇게 동작하도록 따로 만들어야 합니다.
그런 도구가 지원하지 않는 규칙, 여러 예약 자원, 전체 브랜드 적용, 고객이나 주문, 멤버십 같은 다른 데이터와 연결된 예약이 필요하거나, 다른 사람에게 팔 예약 제품을 만들고 있다면 직접 만드세요.
Mythex로 만들기
Mythex에서는 채팅으로 예약 앱을 설명하면, 라이브 미리보기에서 앱을 만들고, 예약을 저장해야 할 때 Postgres 데이터베이스를 추가합니다. 문서의 예약 페이지 사용 사례는 예약 요청 양식과 관리자 목록으로 시작한 뒤 나머지를 추가하는 방식을 제안합니다. 무엇이 기본으로 들어 있고 무엇을 직접 연결해야 하는지 정확히 알아두세요. Mythex에는 기본 제공 캘린더 동기화, SMS 알림, 보증금 상품이 없습니다. 이메일은 직접 고른 제공업체를 통해 보내고, 보증금은 프로젝트 비밀 값으로 저장한 Stripe 키로 처리합니다(Stripe 레시피). 중복 예약과 시간대 규칙은 위에서 설명한 것처럼 직접 명시하고 테스트해야 합니다.
/test 명령을 쓰면 에이전트가 미리보기에서 예약 흐름을 직접 클릭해 보고 무엇이 깨지는지 보고합니다. 시작 프롬프트가 필요하다면 이발소 예약 웹사이트 또는 미팅 예약 도구 템플릿을 살펴보거나, 전체 앱 템플릿을 둘러보세요.
자주 묻는 질문
예약 앱에는 어떤 기능이 필요한가요?
최소한 소요 시간이 있는 서비스 목록, 빈 시간 슬롯만 보여 주는 방법, 예약 양식, 예약 확인, 그리고 사업자가 예약을 보고 관리할 수 있는 비공개 페이지가 필요합니다. 알림, 보증금, 직원 일정은 그다음에 추가하세요.
중복 예약은 어떻게 막나요?
페이지를 불러올 때만 확인하지 말고, 예약을 저장하는 순간 서버에서 가용성을 다시 확인하세요. 그사이 슬롯이 이미 찼다면 예약을 거부합니다. 두 개의 브라우저 창에서 같은 슬롯을 예약해 보면서 테스트하세요.
직접 만든 예약 앱도 보증금을 받을 수 있나요?
네, 가능합니다. 일반적인 방법은 고객을 보증금 결제를 위한 Stripe Checkout 페이지로 보내고, 결제가 성공했을 때만 예약을 확정하는 것입니다. 여러분 자신의 Stripe 계정과 키가 필요합니다.
예약 앱을 직접 만들어야 하나요, 아니면 Calendly를 써야 하나요?
한 사람이 가용 시간을 공유하고 흐름에 특별한 요구가 없다면, Calendly 같은 일정 도구가 더 빠르고 운영 비용도 저렴합니다. 자신만의 규칙이 필요하거나, 여러 자원을 다뤄야 하거나, 전체 화면에 브랜드를 적용해야 하거나, 예약을 여러분이 보관하는 다른 데이터와 연결해야 할 때 직접 만드세요.