개발 공부 기록하기

포스 애플리케이션 <Cafe POS> 기획 본문

Project

포스 애플리케이션 <Cafe POS> 기획

태영(泰伶) 2023. 9. 13. 22:23

국비지원 학원 수업을 수료한 이후 배운 기술들을 잊어버리기 전에, 작더라도 프로젝트를 혼자 하나 만들어봐야겠다는 생각이 들었다.

어떤 걸 주제로 만들어볼까 고민하다가, 어김없이 간 카페에서 낯선 아르바이트생이 내 주문을 포스기에 입력하는 모습이 새삼스럽게 눈에 들어왔고, '이 포스 프로그램을 따라 만들어보면 어떨까?' 하는 생각이 들었다.

 

내가 아직 개발 초보여서 그런지 UI가 더 익숙하게 다가왔던지라, UI를 통해 필요한 기능을 기획하는 것이 더 편할 것 같았다.

그림을 잘 그리지는 못하지만, 나만 이해할 수 있으면 되니까, 태블릿에다 그림을 그리는 것으로 기획을 시작했다.

 

▲ 메인 화면 기획, 주문 목록 추가하는 모달창 기획

 

▲ 신 메뉴 추가 화면 기획

 

 

이다음부터는 포스 프로그램을 사용하는 사람들에게 어떤 기능이 있는 게 좋을까.. 계속 가지치기하면서 기획을 확장해 나갔다.

 

🤔 샷 추가, 덜 달게 등 기본 레시피를 커스텀하기를 원하는 고객들이 분명히 있을 거야.

      -> 메뉴마다 가능한 옵션 목록들을 관리하고, 메뉴를 주문할 때 그 옵션이 선택됐는지 여부도 관리가 필요하겠다.

에스프레소 카테고리에 있는 메뉴들 전부에 똑같은 옵션 선택지를 주려고 했는데, 가만히 생각해 보니까 기본 메뉴인 아메리카노와 카페라떼에서부터, 우유 옵션이 필요한 게 있고, 아닌 게 있으니까, 옵션은 개별 메뉴마다 설정할 수 있어야겠다.

 

🤔 고객들이 한 가지 메뉴만 주문하지 않는 경우도 있을 거니까

      -> 한 개 주문에 대한 목록 추가가 완료되기 전까지 주문 목록 관리가 필요하겠네.

이 상황에서는 주문하려다가 취소할 수도 있고, 얼마든지 "이거 말고 저걸로 바꿔주세요" 수정도 가능하니까, DB 데이터로 관리하는 대신에, 결제창으로 넘어가기 전까지는 redux 상태관리로 그 목록을 관리하는 게 낫겠다.

 

🤔 보통은 카페와 같은 영세 사업장에서 한 달에 한 번씩은 이번 매출이 얼마나 이루어졌는지 결산 및 통계를 내지 않았던가? 생생정보 같은 TV 프로그램에서 맛집들 소개해줄 때 월 매출 몇 천만 원!! 이러고 나왔던 기억이 나는데..

      -> 그러면 결제 내역도 관리해야겠네. 주문한 내역을 table에 저장하는 건 어떤 시점에 하는 게 좋을까? 일단은 포스기 메인 화면에서 결제 창으로 주문 정보를 넘길 때 저장하면 좋을 것 같은데.

 

왜냐하면

1)  결제 전, 결제 완료, 환불 중, 환불 완료와 같은 기록을 남길 수 있어서

=> 결산할 때 '결제 완료'된 데이터만 고르면 되고,
환불된 내역도 매출에 포함되지는 않지만,
통계 자료를 만들 때 필요할 수 있을 것 같아서 ex, 기 메뉴, 환불 많은 메뉴 등
2)  고객이 환불을 원할 경우, 어떤 데이터가 환불되는 것인지 기록을 남길 수 있어서
3)  결제 방법(현금, 체크카드, 신용카드)을 남길 수 있어서 환불할 경우를 고려했을 때, 결제 방법을 기록해두면 환불 절차를 밟기 수월해질 수 있어서
4)  주문 날짜 및 시각을 기록할 수 있어서 (결제 완료되고 나면, 그 때 결제 시각으로 바꾸면 되니까)
5)  1개의 주문에 대한 총 금액을 기록할 수 있어서
6)  개별 메뉴 또는 옵션에 대해서가 아닌, 총 금액 전체에 할인 쿠폰이 적용되는 경우를 기록할 수 있어서

 

🤔 고객이 주문하는 목록을 추가할 때, 메뉴 블록을 누르기만 하면 화면에서 해당 메뉴가 주문 목록에 추가됐음을 보여주는 게 좋을까? 아니면 그 메뉴에 적용할 옵션을 선택할 수 있는 모달창을 띄워주고 완료버튼을 누를 때에야 주문 목록에 추가해 주는 게 좋을까?

      -> 후자를 생각한 건, 아무래도 우리네 삶을 많이 파고들어버린 모바일 애플리케이션의 사이렌 오더 방식을 떠올린 것 같은데. 이게 웹앱에서도 동일하게 효율적인 방법일까?

 

🤔 각각의 메뉴 정보를 수정할 때는, 화면으로 기획한 신 메뉴 추가 컴포넌트를 재활용하는 게 좋겠는데.

      -> 신 메뉴를 추가할 때는 처음부터 즐겨찾기 목록에 추가되지는 않도록 하기 위해서 모달창에서 그 선택지를 만들지 않겠다고 기획했는데, 메뉴 정보를 수정하면서는 그 선택지를 사용자에게 보여주는 게 좋을까? 즐겨찾기 여부는 메인 화면에서 각 메뉴 블록마다 즐겨찾기 여부를 표시하는 아이콘을 만들어 두고, 그 아이콘을 토글 버튼처럼 사용하려고 했는데.

      -> 메뉴 정보 수정하는 모달창에서 즐겨찾기 선택지를 사용자에게 주는 게 좋을까? 만약 보이지 않게 만든다면 쿼리문을 쓸 때, 이 즐겨찾기 여부를 관리하도록 하는 컬럼의 값은 서버로 어떻게 데이터를 넘겨야 하지? 정보를 수정하는 메뉴마다 즐겨찾기 여부는 항상 다를 텐데.

 

 

가볍게 생각했던 화면 하나에 이토록 많은 기능이 필요할 줄이야🤣

 

전국에 계신 개발자분들 정말 존경스럽습니다...👍👍👍

Comments