← 포트폴리오 목록

발레 스튜디오 수업 예약·결제 홈페이지

히어로 영상·사진이 있는 반응형 메인, 수업 시간표에서 시작하는 예약 신청, 네이버페이·카카오페이 결제, 내 예약 조회·변경·취소, 블로그 목록·상세를 하나의 흐름으로 연결하는 맞춤 MVP 프로젝트입니다.

프로젝트 납품 요약

아래 프로젝트 개요와 핵심 기능에서 구현 화면을 확인할 수 있습니다.

서비스 타입Web
업종플랫폼
기술 스택
ReactTypeScriptTailwind CSSNode.jsExpressPostgreSQLPrisma네이버페이·카카오페이 결제 API알림톡·문자 발송 API
주요 기능
  • 오늘의 수업 홈
  • 수업 시간표·예약 신청
  • 네이버페이·카카오페이 결제
  • 블로그 목록·상세

프로젝트 개요

범위: 개발, 디자인, 기획

히어로 영상·사진이 있는 반응형 메인, 수업 시간표에서 시작하는 예약 신청, 네이버페이·카카오페이 결제, 내 예약 조회·변경·취소, 블로그 목록·상세를 하나의 흐름으로 연결하는 맞춤 MVP 프로젝트입니다. React + Node.js + PostgreSQL 기반으로 설계했습니다.

작업 범위

  • 오늘의 수업 홈: 첫 화면에서 연습실 사진·영상 위에 오늘 남은 수업 시간표와 잔여 좌석을 보여 주고, 수업 예약 버튼 한 개로 예약 흐름에 들어갑니다
  • 수업 시간표·예약 신청: 요일별 수업을 고르고 시간대·수강생 정보를 입력해 예약을 신청합니다. 정원이 찬 수업은 대기 신청으로 바뀝니다
  • 네이버페이·카카오페이 결제: 예약 확정 단계에서 결제 수단을 고르고 결제 요청, 승인 결과, 실패 안내까지 한 화면 흐름으로 처리합니다
  • 블로그 목록·상세: 학원 소식과 수업 이야기를 카드 목록으로 보고, 글을 눌러 본문과 관련 수업 예약 링크를 확인합니다

주요 업무

  • 오늘의 수업 홈 화면: 히어로 영상·사진 영역, 오늘 시간표 카드, 반응형 레이아웃
  • 수업 시간표·예약 신청 화면: 수업·시간대 선택, 예약 정보 입력, 정원 검사, 예약 상태 관리
  • 네이버페이·카카오페이 결제 화면: PG 표준 API 결제 요청·승인·취소, 결제 결과 웹훅 수신
  • 블로그 목록·상세 화면: 게시글 목록 조회, 상세 조회, 카테고리 필터
발레 스튜디오 수업 예약·결제 홈페이지
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

히어로 영상은 클라이언트 제공 촬영본에 따라 용량이 달라 모바일에서는 사진으로 대체하는 구조를 함께 제안할 계획입니다

결제 가맹 계약과 문자 발신번호 등록은 발주사 명의 절차가 필요해 착수 초기에 일정을 맞출 계획입니다

카카오 T 주차 연동은 공개 API 여부가 불확실해 이번 범위에서 제외하고 별도 검토 의견을 제안할 계획입니다

기존 관리자 페이지 소스가 제공되는 전제이며

코드 구조에 따라 연동 방식을 확정합니다

구현 내용

핵심 기능 상세

핵심 기능 1

오늘의 수업 홈

첫 화면에서 연습실 사진·영상 위에 오늘 남은 수업 시간표와 잔여 좌석을 보여 주고, 수업 예약 버튼 한 개로 예약 흐름에 들어갑니다. 히어로 영상·사진 영역, 오늘 시간표 카드, 반응형 레이아웃.

  • 반응형 히어로 영역에 영상과 대체 사진을 함께 두어 모바일 데이터 환경에서는 사진으로 대체하는 구조를 설계
  • 오늘 수업 목록을 수업 테이블 조회 API로 불러오고 잔여 좌석을 실시간으로 표시하는 구조를 구현
  • 이미지는 크기별 파일을 두고 srcset으로 내려 주는 방식을 적용

연습실 영상과 오늘 수업 시간표를 한 화면에 올려 첫 방문자가 바로 예약으로 이어지게 구성합니다.

오늘의 수업 홈
오늘의 수업 홈 실제 화면
핵심 기능 2

수업 시간표·예약 신청

요일별 수업을 고르고 시간대·수강생 정보를 입력해 예약을 신청합니다. 정원이 찬 수업은 대기 신청으로 바뀝니다. 수업·시간대 선택, 예약 정보 입력, 정원 검사, 예약 상태 관리.

  • 수업·회차·예약 테이블을 정규화하고 좌석 수 검사를 트랜잭션으로 묶어 중복 예약을 막는 구조 설계
  • 예약 상태(신청·결제대기·확정·취소)를 상태 전이 표로 관리하는 서버 로직 구현
  • Prisma 마이그레이션으로 수업 스키마를 버전 관리하는 구성 적용

정원 검사와 예약 저장을 한 트랜잭션으로 처리해 같은 좌석에 두 건이 들어오지 않는 구조를 구현합니다.

수업 시간표·예약 신청
수업 시간표·예약 신청 실제 화면
핵심 기능 3

네이버페이·카카오페이 결제

예약 확정 단계에서 결제 수단을 고르고 결제 요청, 승인 결과, 실패 안내까지 한 화면 흐름으로 처리합니다. PG 표준 API 결제 요청·승인·취소, 결제 결과 웹훅 수신.

  • 네이버페이·카카오페이 결제 승인 API를 결제 어댑터로 감싸 수단별 차이를 서버 한 곳에 모으는 구조 설계
  • 결제 결과 웹훅의 서명을 검증하고 중복 수신을 멱등 키로 걸러 주문 상태를 한 번만 바꾸는 로직 구현
  • 승인 직전 금액을 서버 기준으로 다시 계산해 화면 조작 값과 대조하는 검증 적용

결제 수단이 달라도 승인·취소·웹훅이 같은 주문 상태 전이로 모이는 결제 계층을 구현합니다.

네이버페이·카카오페이 결제
네이버페이·카카오페이 결제 실제 화면
핵심 기능 4

블로그 목록·상세

학원 소식과 수업 이야기를 카드 목록으로 보고, 글을 눌러 본문과 관련 수업 예약 링크를 확인합니다. 게시글 목록 조회, 상세 조회, 카테고리 필터.

  • 게시글·카테고리 테이블과 페이지 단위 조회 API 설계
  • 본문을 마크다운으로 저장하고 서버에서 안전하게 변환해 내려 주는 구조 구현
  • 글 상세 주소에 슬러그를 쓰는 라우팅 구성

목록과 상세가 같은 게시글 API를 공유하고 관련 수업 링크로 예약에 이어지는 구조를 구현합니다.

블로그 목록·상세
블로그 목록·상세 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

수업·예약·결제 데이터 모델 설계 · 2026.11

수업·회차·예약·결제 ERD 설계, Prisma 스키마와 마이그레이션 정의

STEP 2

예약·정원 검사 API 구현 · 2026.11

좌석 검사 트랜잭션과 예약 상태 전이, 변경·취소 API 구현

STEP 3

결제 어댑터와 웹훅 연동 · 2026.11

네이버페이·카카오페이 승인·취소 어댑터와 웹훅 서명 검증 구현

STEP 4

홈·블로그 화면과 반응형 마무리 · 2026.11

히어로 영역, 시간표, 블로그 목록·상세 화면과 모바일 레이아웃 구현

개발 결과

정원 검사 트랜잭션 설계좌석 검사와 예약 저장을 한 트랜잭션으로 묶어 중복 예약을 막는 구조 설계
결제 어댑터 구조 구현네이버페이·카카오페이 승인·취소를 같은 주문 상태 전이로 모으는 결제 계층 구현
환불 규칙 계산 로직 구축취소 기한별 환불 규칙표를 서버 설정으로 두고 금액을 계산하는 로직 구축
반응형 홈·블로그 화면 구현히어로 영역과 시간표, 블로그 목록·상세를 모바일과 PC에서 같은 API로 구현

기술적 주안점

  • 연습실 영상과 오늘 수업 시간표를 한 화면에 올려 첫 방문자가 바로 예약으로 이어지게 구성합니다
  • 정원 검사와 예약 저장을 한 트랜잭션으로 처리해 같은 좌석에 두 건이 들어오지 않는 구조를 구현합니다
  • 결제 수단이 달라도 승인·취소·웹훅이 같은 주문 상태 전이로 모이는 결제 계층을 구현합니다

유사한 프로젝트를 기획하고 계신가요?

필요한 기능과 일정을 알려주시면 개발 범위를 함께 정리하겠습니다.

프로젝트 문의