케어매치 - 보호사&간병인 중개 플랫폼 웹앱
간병 매칭·결제·정산·분쟁·서류 검증까지 운영 전 영역을 웹·모바일·관리자로 통합한 풀스택 실행형 플랫폼입니다.
개요 이 프로젝트는 단순한 매칭 사이트가 아니라 간병 서비스의 전체 운영 흐름을 아우르는 실행형 플랫폼입니다.
보호자는 환자 정보를 등록하고 간병 요청을 올려 지원자 중 원하는 간병인을 선택·결제·리뷰할 수 있으며, 간병인은 서류 등록·지원·계약·정산·교육까지 일관된 흐름으로 관리할 수 있습니다. 관리자는 사용자·서류·매칭·결제·분쟁·알림을 통합 패널에서 감독·운영할 수 있습니다.
주요 기능
보호자(Guardian) 기능
- 회원가입 / 카카오·네이버 간편 로그인
- 환자 등록 및 관리 (질환·병력·이동성·약물 등)
- 간병 요청 등록 (1:1/가족 간병, 24시간/시간제, 병원/자택/시설)
- 지원자 목록 확인 및 간병인 선택
- 결제 (토스페이먼츠 연동 — 카드/무통장/직접결제, 포인트·프로모션 적용)
- 계약서 PDF 열람, 간병일지 열람
- 간병 연장 요청 (기존 간병인 or 신규 공고)
- 분쟁 접수, 보험서류 신청
- 리뷰 작성 (별점·코멘트·재고용 의사)
- 환불 요청 (2단계 플로우)
- 알림 수신 (푸시 + 앱 내)
간병인(Caregiver) 기능
- 회원가입 + 자격증/신분증/범죄이력 조회서 업로드
- 관리자 승인 대기 → 활동 개시
- 간병 요청 탐색 및 지원 (보호자 제시가 수락 / 제안가 제시)
- 계약 확인, 간병일지 작성 (사진 포함)
- 체크인/체크아웃 기록
- 수익·정산 조회, 협회비 납부 관리
- 교육 수강
- 뱃지(우수 간병사) 시스템
- 알림 수신
관리자(Admin) 기능
- 대시보드 (오늘 요청/매칭, 월 수익, 대기 건수, 분쟁 건수)
- 간병인 관리 (승인/거절/블랙리스트/패널티/메모)
- 서류 검증 (자격증·신분증·범죄이력 조회서 각각 승인)
- 환자 관리 (등록·수정·삭제, 결제 이력)
- 간병 일감(요청) 관리 (상태 흐름 정렬, 다중 필터, 지원자 추적)
- 매칭/계약 관리 (강제 취소·완료, 긴급 재매칭, 중간정산)
- 결제/정산 관리 (환불 2단계 승인, 추가비, 정산 일괄 지급)
- 분쟁 처리
- 신고 관리 (UGC 모더레이션, iOS 심사 대응)
- 보험서류 신청 관리
- 협회비 월별 관리
- 교육 과정 CRUD
- 프로모션 / 플랫폼 설정 (수수료율·추천 포인트·임계값)
- 통계 + CSV 내보내기
- 알림 템플릿 카탈로그 (변수 사전·미리보기)
- 개별/전체 푸시 발송
- 관리자 전용 알림 (가입 대기·서류 검증·자동 정지·결제 만료)
시스템 특징
-
다중 클라이언트 통합
- 반응형 웹 (보호자·간병인 공용 대시보드)
- 관리자 전용 SPA
- 네이티브 앱 2종 (보호자용·간병인용) — 결제·푸시만 네이티브, UI는 웹뷰 공유
-
템플릿 기반 알림 시스템
- DB에 저장된 NotificationTemplate(key/title/body/type/enabled)
- {{variable}} 플레이스홀더 치환 엔진
- 비활성화 플래그로 즉시 발송 차단
- 관리자 UI에서 변수 사전·실시간 미리보기 제공
- sendFromTemplate / sendToAdmins 헬퍼로 호출부 통일
-
인드라이브(InDrive) 방식 매칭
- 보호자 제시 일당 + 간병인 역제안 구조
- 지원 시 "제시가 수락" 또는 "제안 일당 제시" 선택
- 보호자가 최종 선택
-
에스크로 결제 흐름
- 토스페이먼츠 연동
- 결제 → ESCROW 보관 → 간병 완료 → 정산
- PENDING 5분 초과 시 cron으로 자동 만료
- 부분 환불 / 환불 요청 2단계 승인
-
안정성 장치
- 같은 보호자·환자로 OPEN/MATCHED 중복 요청 차단 (DB 유니크 인덱스 + 10초 프론트 락)
- 활성 계약 중복 방지 (partial unique index)
- 동시 결제 시도 10초 내 PENDING 중복 차단
- 노쇼 누적 시 간병인 자동 활동 정지 (cron)
-
운영 자동화
- 간병 종료 3일 전 / 1일 전 자동 리마인더
- 매일 완료 계약 자동 정산
- 매월 월별 통계 자동 생성
- 우수 간병사 뱃지 자동 부여
- 관리자 자동 알림 (가입 신청·서류 업로드·자동 정지·결제 만료)
기술 스택
Backend
- Node.js / Express
- TypeScript
- Prisma ORM
- PostgreSQL
- Redis (세션/레이트리미트)
- JWT 이중 토큰 (access 7d + refresh 30d)
- bcryptjs (비밀번호 해시)
- Firebase Admin SDK (FCM 푸시)
- node-cron (스케줄러)
- Jest + Supertest (테스트 54종)
Frontend (Web / Admin)
- Next.js (App Router)
- React 19
- TypeScript
- Tailwind CSS
- Axios / Fetch
Mobile (두 개의 독립 앱)
- React Native (Expo prebuild 기반)
- WebView 래퍼 아키텍처
- Firebase Messaging (네이티브 푸시)
- 결제 intent 파싱 (토스/카카오페이 WebView 유지)
Integration
- 토스페이먼츠 SDK
- 카카오/네이버 소셜 로그인
- PDF 생성 (계약서·간병일지)
- CSV 내보내기
- 이미지 업로드 (multipart, 정적 서빙)
Architecture
- 모놀리식 모노레포 (backend / web / admin / app-patient / app-caregiver)
- 중앙 스키마 (Prisma) → 전 레이어 단일 소스
- Role 기반 인증 (GUARDIAN / CAREGIVER / ADMIN / HOSPITAL)
- 관리자 라우트는 basePath 분리 (/admin)
- 정적 자원은 리버스 프록시에서 분기
프로젝트 구조 carematch/
├── backend/ # Express + Prisma API 서버
│ ├── prisma/
│ │ ├── schema.prisma # 단일 DB 모델
│ │ └── migrations/
│ ├── src
│ │ ├── routes/ # 도메인별 라우트
│ │ ├── controllers/ # 비즈니스 로직
│ │ ├── services/ # 매칭·결제·알림·크론
│ │ ├── middlewares/ # auth / rate-limit / upload / error
│ │ └── utils/
│ └── tests/ # unit + integration
├── web/ # 보호자·간병인 웹 대시보드 (Next.js)
├── admin/ # 관리자 패널 (Next.js, basePath=/admin)
├── app-patient/ # 보호자 모바일 앱 (Expo)
└── app-caregiver/ # 간병인 모바일 앱 (Expo)
동작 흐름
보호자 핵심 흐름
- 회원가입 → 환자 등록
- 간병 요청 작성 (유형·기간·지역·일당)
- 매칭 엔진이 후보 간병인에게 푸시
- 간병인 지원 → 보호자에게 알림
- 보호자가 지원자 중 선택 → 계약 생성
- 토스페이먼츠 결제 → ESCROW
- 간병 진행 (체크인/일지/사진)
- 종료 → 정산 → 리뷰
간병인 핵심 흐름
- 회원가입 + 서류 업로드
- 관리자 승인 대기 → 알림 수신
- 요청 탐색 → 지원
- 수락 시 계약 확인 → 간병 수행
- 종료 → 익일 자동 정산
- 수익 확인 / 협회비 납부
관리자 핵심 흐름
- 대시보드에서 대기 건 확인
- 서류 검증 (자격증·신분증·범죄이력 개별 승인)
- 분쟁·신고·환불·추가비 승인
- 월별 통계·정산·프로모션 운영
목적 본 플랫폼의 목적은 다음과 같습니다:
- 간병 서비스의 양측 정보 비대칭 해소
- 결제·정산의 신뢰성 확보 (에스크로 + 자동 만료)
- 서류 검증 자동화 및 관리자 감사 추적
- 운영 업무의 알림 주도 자동화
- 다중 플랫폼(웹/모바일) 단일 데이터 소스 유지
결론 본 프로젝트는 단순한 매칭 앱이 아니라 간병 서비스의 요청·매칭·결제·정산·분쟁·서류 검증까지 운영 전 영역을 체계화한 풀스택 실행형 플랫폼입니다.