Загружаем каталог…
Загружаем каталог…
안녕하세요! 최근 PT샵에 다니면서 매장 데스크에서 흥미로운 장면을 목격했습니다. 트레이너 선생님들이 수업이 끝날 때마다 두꺼운 수기 장부를 꺼내 회원의 남은 횟수를 차감하고, 카카오톡으로 다음 예약 일정을 조율한 뒤, 이를 다시 엑셀 시간표에 일일이 옮겨 적고 계시더군요. 최근 스트레칭샵에 다니면서 데스크에서 아주 흥미로운 광경을 목격했습니다. 트레이너 선생님들이 수업이 끝날 때마다 두꺼운 수기 장부를 꺼내 남은 횟수를 차감하고, 카카오톡으로 다음 예약 일정을 조율한 뒤, 이를 다시 엑셀 시간표에 일일이 옮겨 적고 계시더군요. "만약 예약 시간이 겹치거나 당일 노쇼(No-show)가 발생하면 이 복잡한 의존성을 엑셀로 다 커버할 수 있을까?" "특히 1호점, 2호점 등 여러 지점을 운영하는 곳이라면 스케줄과 매출 관리가 얼마나 복잡할까?" 이러한 현장의 비효율을 해결하기 위해, 저는 오프라인 1:1 샵(PT, 스트레칭, 필라테스 등)의 사장님, 팀장님, 트레이너, 회원이 모두 스마트폰으로 간편하게 사용할 수 있는 크로스 플랫폼(Android & iOS) 예약/근무 관리 앱 을 직접 설계하고 개발해 보기로 했습니다. 웹이 아닌 '모바일 앱'을 선택한 이유 이러한 사내 관리 시스템(어드민)은 보통 PC 웹 브라우저용으로 제작됩니다. 하지만 실제 현장의 업무 환경을 분석해 본 결과, 모바일 앱이 필수적이라는 결론을 내렸습니다. 극대화된 이동성 : 트레이너와 팀장님은 PC 앞이 아니라 매트 위나 운동 기구 옆에서 업무를 봅니다. 주머니 속 스마트폰으로 즉시 다음 스케줄을 확인하고 수업 일지를 작성해야 합니다. 즉각적인 푸시 알림 (Push Notification) : 카카오톡 메시지를 일일이 보낼 필요 없이, '예약 1시간 전 알림', '당일 취소로 인한 횟수 차감 안내', '팀장님의 휴무 승인 알림' 등을 스마트폰 푸시 알림으로 즉각 전달할 수 있습니다. 핵심 기능 및 권한 분리 (RBAC) 정보보안을 전공하며 시스템을 설계할 때 가장 중요하게 생각하는 부분은 '권한에 따른 데이터 접근 제어(Access Control)'입니다. 단일 엑셀 파일이나 구글 스프레드시트로 샵을 관리하면, 트레이너가 샵의 전체 매출을 보거나 다른 직원의 민감한 스케줄까지 열람하게 되는 프라이버시/보안 문제가 발생합니다. 특히 이 서비스는 '다수의 지점(Branch)'을 운영하는 환경까지 고려하여, 역할을 4단계로 엄격하게 분리했습니다. 회원 (Member) 내 남은 수강권 횟수 및 유효기간 실시간 조회 원하는 트레이너의 예약 가능한 시간표 조회 및 캘린더 직접 예약/취소 트레이너 (Trainer) 나의 주간/월간 근무 스케줄(예약 현황) 확인 담당 회원의 수업 일지 및 특이사항(체형, 부상 이력 등) 메모 작성 본인 소속 지점의 타 트레이너 스케줄 조회 가능 (타 지점의 데이터나 매출 정보 등은 열람 불가) 팀장 (Manager) 지점 관리자: 본인이 담당하는 지점(단일 또는 다지점)의 전체 트레이너 스케줄 관리 신규 회원 등록 및 수강권(횟수) 부여, 담당 지점 현황 모니터링 (타 지점의 매출 정보, 스케줄표 확인 가능) 관리자/사장 (Admin) 전체 지점 등록 및 팀장/트레이너 계정 발급 모든 지점의 예약 및 매출 현황 대시보드 조회 기술 스택 선정 빠른 속도로 안드로이드와 iOS 앱을 동시에 배포하면서도, 다지점 관리가 가능한 튼튼한 비즈니스 로직을 구현하기 위해 다음과 같은 스택을 선정했습니다. Frontend (App): React Native (Expo) 웹 프론트엔드(React) 개발 경험을 살려, 하나의 코드베이스로 양대 마켓 앱을 동시 개발합니다. Backend (API): Node.js + Express 가볍고 빠른 API 서버를 구축합니다. Database: MySQL (RDBMS) 예약 시간 중복 방지, 횟수 차감은 물론 '지점 - 팀장 - 트레이너 - 회원'으로 이어지는 복잡한 관계형 데이터 트랜잭션을 무결성 있게 관리하기 위해 채택했습니다. Security: JWT (JSON Web Token) 기반 인가(Authorization) 유저의 Role과 소속 지점 ID를 페이로드에 담아, 트레이너가 타 지점 매출을 보려 하거나 회원이 남의 예약의 취소하는 등의 비정상적인 접근을 서버 단에서 원천 차단합니다. 다음 편 예고 비즈니스 요구사항과 전체적인 뼈대 기획이 완료되었습니다! 보통 이다음엔 곧바로 복잡한 DB 테이블(ERD)을 짜러 백엔드로 넘어가곤 하지만... 눈에 보이는 화면(UI) 없이 머릿속으로만 데이터를 상상하면 나중에 꼭 필요한 필드가 빠져서 DB를 갈아엎게 되더라고요. 😅 우리 앱은 권한(회원, 트레이너, 팀장, 사장님)이 4개나 되는 만큼, 각자가 앱을 켰을 때 보게 될 화면과 필요한 정보가 완전히 다릅니다. 이 4인 4색의 화면을 먼저 스케치해두면, 나중에 DB와 API를 설계하기가 훨씬 명확하고 수월해지겠죠? 그래서 다음 [2편]에서는 백엔드로 넘어가기 전, 사용자 역할별 맞춤형 화면(UI/UX) 기획과 React Native(Expo) 프로젝트 뼈대 세팅을 진행해 보겠습니다. 현업 개발자처럼 와이어프레임을 짜고, 권한에 따라 탭 네비게이션(Tab Navigation)을 분기하는 과정! 기대해 주세요! -👋
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
💪 PT샵 예약 앱 개발기 #1. 엑셀과 수기 장부로 고통받는 사장님 구출하기. 안녕하세요! 최근 PT샵에 다니면서 매장 데스크에서 흥미로운 장면을 목격했습니다. 트레이너 선생님들이 수업이 끝날 때마다 두꺼운 수기 장부를 꺼내 회원의 남은 횟수를 차감하고, 카카오톡으로 다음 예약 일정을 조율한 뒤, 이를 다시 엑셀 시간표에 일일이 옮겨 적고 계시더군요. 최근 스트레칭샵에 다니면서 데스크에서 아주 흥미로운 광경을 목격했습니다. 트레이너 선생님들이 수업이 끝날 때마다 두꺼운 수기 장부를 꺼내 남은 횟수를 차감하고, 카카오톡으로 다음 예약 일정을 조율한 뒤, 이를 다시 엑셀 시간표에 일일이 옮겨 적고 계시더군요. "만약 예약 시간이 겹치거나 당일 노쇼(No-show)가 발생하면 이 복잡한 의존성을 엑셀로 다…
Открыть источник