볼닥
볼링 레슨·커뮤니티·커머스 통합 플랫폼 개발
사용자는 볼링 센터·코치·지공사 정보를 탐색하고 레슨 수강권 결제, 채팅 상담, 점수 기록·랭킹 확인, 쇼핑몰 주문을 이용할 수 있습니다. 파트너는 모바일 앱에서 프로필과 상품 정보를 관리하고, 관리자는 웹 콘솔에서 회원, 센터, 레슨, 주문, 결제, 신고, 콘텐츠 심사, 백업, 로그를 통합 관리하도록 설계되었습니다.
- 기간
- 2023
- 분류
- 모바일 앱, 관리자
- 서비스 주소
- bowldoc.co.kr(새 창)


React Native 모바일 앱, React Admin 운영 콘솔, Express 기반 API 서버로 구성된 볼링 서비스 플랫폼입니다. 사용자와 파트너가 레슨, 센터, 장비, 대회, 채팅, 결제 기능을 하나의 앱에서 이용할 수 있도록 구성했으며, MongoDB 중심의 도메인 모델과 Firestore 채팅, Redis 큐, S3 파일 저장소, 외부 결제·배송·스코어 API 연동을 통해 운영 기능까지 연결했습니다.
서비스 화면
볼링 전문가와 센터 탐색
사용자는 코치, 지공사, 볼링센터 정보를 위치와 카테고리 기준으로 탐색하고 프로필, 사진, 후기, 상품 정보를 비교해 상담과 예약 흐름으로 이동할 수 있습니다.
수강권 결제와 이용 증명 관리
레슨, 체험, 지공 서비스 결제 후 수강권 상태를 서버에서 관리하고 예약·정산에 필요한 증명 데이터를 생성해 사용자와 파트너 운영 흐름을 연결했습니다.
파트너 상담 채팅
Firestore 채팅방에 메시지를 저장하고 응답 시간, 타이핑 상태, 읽지 않은 알림을 관리해 사용자 문의와 파트너 응대를 모바일에서 이어갈 수 있게 했습니다.
스코어 기록과 랭킹 분석
제휴 스코어 API에서 게임 기록을 수집하고 일자별 점수와 평균, 게임 수를 집계해 개인 기록 확인과 기간별 랭킹 비교에 활용할 수 있게 구성했습니다.
장비 쇼핑몰 주문 관리
상품 선택, 주소 입력, 카드 결제, 배송 추적, 취소·반품 요청을 하나의 주문 상태 흐름으로 처리해 구매 이후 알림과 리뷰 요청까지 자동 연결했습니다.
파트너 프로필과 상품 운영
파트너는 모바일 앱에서 센터, 레슨, 지공 상품, 사진, 영업시간, 정산 정보를 직접 관리해 운영 변경 사항을 사용자 화면에 빠르게 반영할 수 있습니다.
관리자
운영 리소스 통합 관리
회원, 센터, 코치, 지공사, 레슨, 대회, 배너, 공지, FAQ를 React Admin 리소스로 분리해 운영자가 목록 조회와 편집, 심사를 일관된 화면에서 처리합니다.
결제·주문·정산 처리
수강권, 멤버십, 쇼핑몰 결제 내역과 주문 상태, 환불, 정산 준비·완료 처리를 관리자 화면과 서버 상태 전이 로직으로 함께 관리합니다.
신고·콘텐츠 심사와 운영 알림
신고, 갤러리 심사, 후기, 채팅방, 알림 템플릿, 로그, 백업 메뉴를 구성해 운영 이슈를 확인하고 사용자에게 필요한 메시지를 푸시·SMS로 발송할 수 있습니다.
스코어와 제휴 센터 관리
제휴 볼링센터, 게임 기록, 일간 점수, 랭킹 데이터를 관리자 리소스로 제공해 외부 스코어 연동 결과를 검수하고 서비스 통계 운영에 활용했습니다.
앱 화면






사용한 기술
- React Native
- React
- React Admin
- TypeScript
- Express
- MongoDB
- Mongoose
- Firebase Firestore
- Firebase Cloud Messaging
- Redis
- Bee Queue
- AWS S3
- Serverless Framework
- Node Schedule
- PM2
- PortOne
- KCP
- INNOPAY
- Zustand
- Axios
- React Navigation
화면
- React Native 0.74 기반 모바일 앱으로 일반 사용자와 파트너 탭 내비게이션을 분리해 역할별 주요 화면을 제공
- React Navigation 기반 홈, 관심 목록, 스코어 랭킹, 채팅, 마이페이지, 파트너 관리 화면 전환 구조 구성
- Zustand와 AsyncStorage 기반 로그인 상태, 사용자 역할, 위치 정보 등 앱 지속 상태 관리
- Axios Cache Interceptor 기반 반복 API 조회 캐싱과 토큰 갱신 인터셉터로 모바일 응답성과 인증 유지 개선
- React Native Firebase Analytics, Messaging, Dynamic Links, Firestore를 활용한 분석, 푸시, 딥링크, 채팅 연동
- React Hook Form과 Yup 기반 입력 검증, 이미지·영상 업로드, 지도, 결제 WebView, 동영상 재생 UI 구성
- React Admin 4와 Material UI 기반 관리자 웹 콘솔을 구성하고 리소스별 목록, 편집, 생성, 심사 화면 제공
서버 · 데이터
- Express REST API를 도메인별 컨트롤러로 분리하여 회원, 센터, 코치, 지공사, 레슨, 결제, 채팅, 쇼핑몰, 스코어 기능을 관리
- JWT 액세스 토큰과 Redis 기반 휴대폰 인증 코드, HttpOnly refresh token 쿠키를 함께 사용해 로그인 유지와 재발급 처리
- 역할 기반 authorize 미들웨어로 관리자, 관찰자, 사용자, 파트너 권한을 구분하고 관리자 콘솔 접근을 제한
- Mongoose 모델 기반으로 User, Trainer, Driller, Center, Lesson, Certificate, Payment, MallOrder, Gallery, PickGame 등 핵심 스키마 구성
- Firestore 하위 컬렉션에 채팅 메시지를 저장하고 응답 시간, 타이핑 상태, 읽지 않은 알림을 서버 작업과 함께 관리
- Bee Queue와 Redis를 사용해 푸시 알림, 채팅 상태 해제, 수강권 경고, 주문 확정, 리뷰 요청 등 비동기 작업 분리
- 외부 스코어 API OAuth 토큰 발급 후 제휴 센터, 회원 등록 여부, 게임 점수 데이터를 조회해 앱 내 점수 기록과 랭킹으로 가공
- 결제 성공 웹훅과 카드 빌링 API를 분리해 수강권, 멤버십, 쇼핑몰 상품 결제 후 도메인 상태를 갱신
인프라
- AWS S3 업로드 버킷과 정적 동기화 버킷을 분리하고 CORS를 설정해 앱·관리자에서 이미지, PDF, APK, 정적 파일을 활용
- Serverless Framework와 serverless-s3-sync로 공개 자산 배포 자동화를 구성
- Firebase Hosting 기반 관리자 콘솔 배포 스크립트와 Firebase Admin SDK 기반 서버 푸시·Firestore 접근 구조
- PM2 기반 Node.js API 서버 운영 스크립트와 TypeScript 빌드 후 배포 흐름 구성
- MongoDB Atlas, MySQL, Redis, Firebase를 목적별로 분리해 서비스 데이터, 외부 검색, 큐, 채팅 데이터를 처리
- Winston Daily Rotate File과 Morgan을 활용한 API 로그 관리 및 관리자 로그 조회 리소스 구성
- Node Schedule 기반 주기 작업으로 배송 추적 갱신, 주문 자동 종료, 통계 집계, 멤버십·수강권 상태 점검, 데이터베이스 백업 수행