스터디 카페 앱 제작 #3

lshdf·2026년 7월 15일

스터디카페 앱

목록 보기
3/5

2편에서는 3층/4층 좌석권과 M층 시간권을 다르게 처리했던 예약 구조에 대해 정리해봤습니다. 이번에는 관리자 페이지를 만들면서 겪었던 부분을 적어보려고 합니다.

처음에는 관리자 페이지를 단순하게 생각했습니다. 사용자가 예약을 신청하면 관리자가 그 예약을 보고 승인하거나 거절하면 된다고 생각했습니다. 그래서 처음에는 예약 목록, 승인 버튼, 거절 버튼 정도만 만들어봤습니다.
그런데 실제 운영을 생각해보니까 예약 목록만으로는 부족했습니다. 직원 입장에서는 “예약이 들어왔는지”보다 “지금 어떤 자리가 사용 중인지”, “누가 언제까지 쓰는지”, “결제가 확인됐는지”, “이 예약이 매출에 들어가도 되는지”를 바로 확인하는 게 더 중요했습니다.

그래서 먼저 실시간 좌석 모니터를 만들어봤습니다. 좌석마다 비어 있음, 사용 중, 승인 대기 상태를 표시하게 했습니다. 기존에는 직원이 직접 층을 올라가서 자리를 확인해야 했는데, 이제는 관리자 화면에서 바로 볼 수 있게 만들고 싶었습니다.

처음에는 좌석 상태만 표시하면 될 줄 알았습니다. 그런데 막상 써보니까 좌석을 클릭했을 때 그 자리를 누가 쓰고 있는지, 언제까지 이용하는지, 어떤 이용권인지까지 보여줘야 했습니다. 그래서 좌석 클릭 시 예약자 정보와 이용 기간을 확인할 수 있게 수정했습니다.

회원 관리도 추가해봤습니다. 처음에는 사용자가 직접 가입하고 예약하면 된다고 생각했는데, 실제 운영에서는 관리자가 직접 회원을 등록하거나 정보를 수정해야 하는 경우도 있었습니다. 그래서 관리자 페이지에서 회원 등록, 비밀번호 변경, 전화번호 수정, 회원별 예약 조회 기능을 넣었습니다.

이용권 관리도 생각보다 중요했습니다. 예약을 잘못 넣었거나 현장에서 이용권을 바꾸는 경우가 있을 수 있어서, 관리자가 1일권, 7일권, 30일권 같은 이용 기간을 수정할 수 있게 했습니다. 처음에는 단순히 날짜만 바꾸면 된다고 생각했는데, 기간이 바뀌면 다른 예약과 겹칠 수도 있어서 다시 중복 검사를 넣어야 했습니다.

매출 관리도 수기 업무를 줄이기 위해 넣었습니다. 기존에는 돈 관리도 따로 수기로 정리하고 있었기 때문에, 예약 데이터를 기준으로 매출을 계산해보려고 했습니다. 그런데 여기서도 문제가 있었습니다. 예약 데이터가 있다고 해서 전부 매출로 보면 안 됐습니다. 취소된 예약, 거절된 예약, 테스트 예약까지 합산되면 실제 매출과 맞지 않았습니다.

그래서 예약 상태별로 매출 반영 여부를 나누고, 테스트 예약은 매출에서 제외할 수 있게 만들었습니다. 처음에는 단순히 전체 예약 금액을 더하는 방식으로 해봤는데, 실제 운영 데이터로 쓰려면 예외 처리가 훨씬 중요하다는 걸 느꼈습니다.

환불 처리도 나중에 추가했습니다. 이용자가 중간에 취소하면 사용한 날짜, 이용권 종류, 무료 음료 사용 여부 같은 걸 고려해야 했습니다. 처음에는 환불을 수기로 계산해도 되지 않을까 생각했는데, 관리자 페이지에서 바로 계산하고 기록할 수 있어야 나중에 헷갈리지 않을 것 같았습니다. 그래서 환불 금액과 사유를 남길 수 있게 정리했습니다.

관리자 권한도 분리해봤습니다. 처음에는 관리자 계정 하나로 모든 기능을 쓰게 했는데, 실제로는 직원이 할 수 있는 일과 사장님만 해야 하는 일이 달랐습니다. 예를 들어 예약 확인이나 좌석 관리는 직원도 할 수 있지만, 민감한 초기화나 중요한 운영 기록 삭제는 사장님 권한으로 제한하는 게 맞다고 생각했습니다. 그래서 admin과 owner 권한을 나눴습니다.

만들면서 느낀 점은 관리자 페이지는 단순히 기능을 많이 넣는다고 좋은 게 아니라는 점이었습니다. 운영자가 실수하지 않게 만드는 게 더 중요했습니다. 잘못된 예약을 승인하지 않게 하고, 매출이 중복으로 잡히지 않게 하고, 좌석 상태가 실제 운영과 다르게 보이지 않게 계속 수정해야 했습니다.

처음에는 예약 승인용 화면으로 시작했지만, 만들다 보니 관리자 페이지는 카페 운영의 중심이 됐습니다. 좌석 확인, 예약 승인, 회원 관리, 이용권 수정, 매출 정리, 환불 처리까지 기존에 수기로 하던 업무를 한 화면 안으로 옮기는 작업이었습니다.

다음 글에서는 운영 품질을 높이기 위해 추가했던 기능들을 정리해보려고 합니다. 결제 증빙 업로드, 알림, 채팅, PWA, 모바일 브라우저 대응, 보안 패치 같은 부분을 다뤄보겠습니다.

profile
red teaming 하고싶어요

0개의 댓글