live · service
코치데스크
1인 코치 · 트레이너를 위한 회원 · 세션 · 패키지 관리 도구. 센터 → 관리자 → 회원의 3-tier 조직 모델 위에서 예약 · 실시간 채팅 · 인증샷 · 알림까지 한 화면에 묶어두었습니다.
서비스 소개
코치데스크는 한 명의 코치 / 트레이너 / 작은 센터가 회원과의 일상 운영을 — 예약을 받고, 운동을 진행하고, 인증을 받고, 패키지를 정산하는 — 한 앱 안에서 처리할 수 있게 만드는 도구입니다. 처음엔 코치 1인 ↔ 회원 다수 의 단순한 구조로 시작했지만, 운영해 보니 "센터(소속) → 관리자(코치) → 회원" 의 3-tier 조직 모델이 더 현실에 맞아 v1.0.1 에서 권한 시스템째 다시 짰습니다.
앱은 Flutter + Dio + Socket.IO, 서버는 Express + TypeScript + Prisma + PostgreSQL. 파일(인증샷 등)은 같은 VPS 안의 MinIO 에 저장되고, 푸시는 Firebase FCM, 운영자용 콘솔은 별도의 정적 SPA 로 분리해 모바일 앱 / 모바일 관리자 / 데스크탑 운영자 콘솔이 같은 API 위에 다른 얼굴로 얹혀 있습니다.
- 3-tier 조직 모델센터(소속) → 관리자(코치) → 회원. 역할 기반 권한 시스템 (OrgRole) 으로 화면 / API 접근을 통제합니다.
- 예약 / 스케줄관리자가 운영 시간을 짜고, 회원이 슬롯을 예약. 지연 예약 슬롯 판정 / 취소 슬롯 복원까지.
- 실시간 1:1 채팅Socket.IO 기반 실시간 채팅 + FCM 알림. 회원과의 모든 커뮤니케이션이 한 줄로.
- 운동 인증샷채팅 첨부에 KST 시간 워터마크를 박아 보냅니다 — "언제 찍은 인증인지" 가 사진 안에 박혀 있도록.
- 패키지 관리회원권 잔여 / 사용 내역 / 수동 조정. 코치가 직접 정산하기 좋게.
- 알림 센터예약 / 합류 신청 / 채팅 등 모든 알림을 한 곳에. 뱃지 갱신 정확하게.
- 운영자 콘솔 (정적 SPA)여러 센터를 다루는 운영자용 데스크탑 콘솔. 모바일 admin 모드와 분리된 별도 인증.
- 완전한 자체 호스팅한 대의 VPS 안에서 API · DB · 파일 스토리지 · 콘솔까지 모두 운영.
Architecture
모바일 앱 / 모바일 관리자 / 운영자 콘솔이 같은 API 위에 얹혀 있고, 파일은 같은 VPS 안의 MinIO 가 받습니다.
Behind the scenes
만들면서 가장 인상 깊었던 두 가지 — 조직 모델을 통째로 다시 짠 일, 그리고 한 사람의 불편에서 시작해 PT 마지막 수업까지 끌고 온 일.
-
01
2-tier 로 시작했다가 3-tier 로 다시 짰다
처음엔 단순했습니다 — 코치 한 명, 그 밑에 회원들. 그런데 막상 베타에 풀어보니 현실은 더 다층적이었습니다. "한 센터에 코치가 여럿이고, 그 아래에 회원이 붙는다" 거나, "운영자(센터장)가 별도로 존재한다" 같은 케이스가 자연스럽게 등장했습니다. 그래서 v1.0.1 에서 권한 시스템 자체를 다시 짰습니다 — 센터(Org) → 관리자(코치) → 회원 의 3-tier 모델, 그리고 그 위에 얹는 OrgRole enum 기반 권한 체크. 마이그레이션도 별도 단계로 끊어 안전하게 — 데이터베이스 enum 추가와 코드의 enum 사용을 따로 배포해야 운영 중에도 깨지지 않는다는 걸 한 번 더 확인한 작업이었습니다.
-
02
PT 마지막 수업에 가까스로 완성됐다
출발은 사적이었습니다 — 제가 PT 를 받던 트레이너가 매번 다음 수업이 언제인지, 패키지가 얼마나 남았는지를 헷갈려했고, 카톡으로 매번 물어보는 게 양쪽 모두에게 부담이었습니다. "이거 한 화면에 정리하면 되는 거 아닌가?" 가 시작이었습니다. 막상 만들어보니 디테일이 끝없이 쌓였습니다 — 예약 / 취소 슬롯 복원 / 지연 예약 판정 / 패키지 차감 시점 / 인증샷 시간 표기 / 권한 분리 / 알림 정확도 … 가벼운 도구로 시작했는데 운영용 SaaS 에 가까워졌고, 그러다 보니 일정도 자꾸 밀렸습니다. 결국 베타 테스트 대상이었던 그 트레이너의 PT 마지막 수업에 와서야 핵심 기능이 다 들어맞았고, 바로 그 시점에 App Store 심사를 넣었습니다. "한 사람의 진짜 불편"에서 시작한 도구가 — 어쩌면 다른 코치들에게도 닿을 수 있을지 — 이제 심사 결과를 기다리는 중입니다.
Screenshots
카드를 누르면 큰 이미지로 볼 수 있습니다.
More
지나온 버전과 앞으로 들어갈 항목을 별도 페이지에서 확인할 수 있습니다.