프로젝트 배경
1) 예상 리스크 및 대응 계획 - 수강생·선생님·관리자 3역할의 RLS 정책과 API 미들웨어를 단일 JWT 클레임으로 통합 설계하는 인증 아키텍처 - 슬롯 선택부터 Zoom 미팅 생성·알림톡 발송까지 외부 API 3종이 연계된 예약 트랜잭션의 실패 복구 전략 - 포트원 결제창 금액 위변조 방지를 위한 서버 사이드 이중 검증 및 원자적 수강권 업데이트 구조 - FullCalendar.js 슬롯 렌더링
프로젝트 성과
Supabase RLS로 역할별 DB 접근 격리
auth.jwt() 기반 커스텀 클레임을 활용한 Row Level Security 정책을 설계하여 수강생·선생님·관리자 데이터를 DB 레이어에서 완전 격리합니다.
포트원 V2 이중 검증 결제 보안 구조
merchant_uid 기반 서버 사이드 금액 재검증 로직과 트랜잭션 원자 처리를 결합하여 결제 위변조 및 이중 충전을 원천 차단하는 구조를 구현합니다.
Zoom Server-to-Server OAuth 미팅 자동화
예약 확정 이벤트에서 Zoom API를 서버 사이드로 호출해 미팅 URL을 자동 생성, 수강생이 별도 Zoom 계정 없이 원클릭 수업 입장이 가능한 플로우를 설계합니다.
알림톡 비동기 발송 및 재시도 큐 설계
이벤트 에미터 기반 발송 분리와 node-cron 재시도 큐를 도입하여 핵심 트랜잭션 성공률에 영향을 주지 않는 안정적인 알림 인프라를 구축합니다.
3역할 통합 예약 캘린더 실시간 동기화
Supabase Realtime 채널로 수강생·선생님 캘린더를 동기화하여 슬롯 이중 예약 충돌 없이 최신 예약 상태를 항상 반영하는 UX를 설계합니다.
핵심 기능
진행 단계
역할 기반 인증 및 Supabase RLS 정책 설계
2026.05
Supabase Auth custom claims(role), Row Level Security 3역할 정책 설계, 카카오 소셜 로그인 OAuth 콜백 처리 및 역할 온보딩 플로우 구현
프로젝트 상세
1) 포트폴리오 소개 수강생·선생님·관리자 3역할 기반 1:1 화상영어 플랫폼의 핵심 MVP를 React 18 + Node.js + Supabase(PostgreSQL) 스택으로 설계·구현합니다. 수업 예약 캘린더, 포트원/KG이니시스 결제 연동, Zoom API 수업 입장, 카카오톡 알림톡 자동 발송까지 핵심 수익 플로우를 단일 플랫폼 내에서 완결하는 구조를 목표로 합니다. 2) 작업 범위 - 역할







