← 포트폴리오 목록

공간 대여 예약 플랫폼

다지점 공간 대여 서비스의 탐색부터 실시간 예약·결제·환불·알림까지 이어지는 고객 예약 플로우를 React + Node.js 기반 풀스택 구조로 설계·구현합니다.

슬롯 동시성 제어 구조 구현PostgreSQL 행 단위 잠금과 트랜잭션 격리 수준을 조정해 동일 슬롯 동시 예약 충돌을 차단하는 구조를 설계합니다
룸별 동적 요금 계산 엔진 설계인원·시간·룸유형 3축 요금 매트릭스를 구현하고, 초과 인원 요금을 자동 산출하는 계산 로직을 설계합니다
환불 규정 자동 판정 로직 구현취소 시점 기준 전액·차등 환불 규칙을 코드화해 예약 상태별 환불 금액을 자동 산출하는 구조를 구현합니다
서비스 타입Web
업종데이터 분석
기술 스택
ReactTypeScriptTailwind CSSNode.jsExpressPostgreSQLPrismaTossPayments카카오 알림톡 API
주요 기능
  • 지점·공간 탐색
  • 실시간 예약 캘린더
  • 결제·환불 자동화
  • 예약 알림 자동 발송
Overview

프로젝트 개요

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

다지점 공간 대여 서비스의 탐색부터 실시간 예약·결제·환불·알림까지 이어지는 고객 예약 플로우를 React + Node.js 기반 풀스택 구조로 설계·구현합니다. 슬롯 잠금과 트랜잭션 격리로 동시 예약 충돌을 방지하고, PG 결제와 카카오 알림톡·SMS 폴백 발송을 하나의 흐름으로 연결합니다.

작업 범위

  • 지점·공간 탐색: 이용자가 지역별로 나뉜 여러 지점의 공간 목록을 카드 그리드로 살펴보고, 인원수·시간대 필터로 원하는 공간을 빠르게 좁혀볼 수 있습니다
  • 실시간 예약 캘린더: 이용자가 날짜·시간을 다중 선택해 원하는 슬롯을 예약하면, 기본 인원 초과 시 추가 요금이 자동으로 계산되어 즉시 확정됩니다
  • 결제·환불 자동화: 이용자가 신용카드 또는 무통장 입금으로 결제하며, 예약 취소 시 환불 규정에 따라 환불 금액이 자동으로 판정됩니다
  • 예약 알림 자동 발송: 예약이 확정되면 카카오 알림톡으로 우선 발송하고, 발송에 실패하면 자동으로 SMS로 재발송해 안내 누락을 방지합니다

주요 업무

  • 지점·공간 탐색 화면: 지점별 공간 목록을 검색 세그먼트 + 필터 chips 조합으로 제공하며, 목록 데이터를 캐싱해 재방문 시 즉시 렌더링합니다
  • 실시간 예약 캘린더 화면: 캘린더 컴포넌트에서 슬롯 단위 잠금 상태를 실시간 반영하고, 동시 예약 충돌을 데이터베이스 트랜잭션으로 차단합니다
  • 결제·환불 자동화 화면: 국내 PG 연동 결제와 부분 취소·환불 처리를 연결하고, 취소 시점 기준으로 환불 규정을 자동 계산해 정합성을 보장합니다
  • 예약 알림 자동 발송 화면: 지점별 알림 템플릿 2단 구조를 두어 알림톡 발송 실패 시 SMS 채널로 자동 폴백하는 큐 구조를 구현합니다
공간 대여 예약 플랫폼
요구사항 정의

프로젝트 핵심 과제

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

다중 슬롯 동시 선택 시 슬롯 간 시간 중첩을 검증하는 예약 캘린더 로직 설계가 필요합니다

동일 슬롯에 대한 동시 예약 요청을 트랜잭션 격리 수준으로 제어하는 동시성 설계가 필요합니다

룸별로 상이한 요금 정책(인원별·시간대별)을 하나의 계산 엔진으로 통합하는 구조 설계가 필요합니다

카카오 알림톡과 SMS 두 채널의 발송 실패를 구분해 처리하는 폴백 아키텍처 설계가 필요합니다

구현 내용

핵심 기능 상세

핵심 기능 1

지점·공간 탐색

이용자가 지역별로 나뉜 여러 지점의 공간 목록을 카드 그리드로 살펴보고, 인원수·시간대 필터로 원하는 공간을 빠르게 좁혀볼 수 있습니다.

  • Tailwind CSS 반응형 브레이크포인트 기준으로 PC·모바일 단일 소스에서 카드 그리드 컬럼 수를 2~4열로 전환하는 구조를 구현합니다
  • React Query staleTime을 지점·공간 목록에 적용해 재조회 없이 즉시 렌더링하는 캐싱 전략을 설계합니다
  • PostgreSQL 복합 인덱스(지점ID·이용 가능일)로 필터 조회 쿼리 구조를 최적화합니다

검색 세그먼트와 필터 chips를 조합한 탐색 UI를 구현하고, 반응형 단일 소스 구조로 PC·모바일 그리드 전환을 설계합니다.

지점·공간 탐색
지점·공간 탐색 실제 화면
핵심 기능 2

실시간 예약 캘린더

이용자가 날짜·시간을 다중 선택해 원하는 슬롯을 예약하면, 기본 인원 초과 시 추가 요금이 자동으로 계산되어 즉시 확정됩니다.

  • PostgreSQL 트랜잭션과 행 단위 잠금(SELECT... FOR UPDATE)으로 동일 슬롯 동시 예약 충돌을 차단하는 구조를 설계합니다
  • 다중 시간 슬롯 선택 시 인원×시간×단가 기준 요금 자동 계산 로직을 룸별 요금 정책 테이블과 연동해 구현합니다
  • 예약 확정 전 슬롯을 임시 점유 상태로 표시하는 낙관적 UI 패턴을 적용해 대기 없는 예약 흐름을 구현합니다

슬롯 잠금과 트랜잭션 격리로 동시 예약 충돌을 방지하고, 룸별 요금 매트릭스 기반 자동 계산 엔진을 구현합니다.

실시간 예약 캘린더
실시간 예약 캘린더 실제 화면
핵심 기능 3

결제·환불 자동화

이용자가 신용카드 또는 무통장 입금으로 결제하며, 예약 취소 시 환불 규정에 따라 환불 금액이 자동으로 판정됩니다.

  • TossPayments 결제창 연동 및 결제 승인·취소 웹훅 처리 구조를 구현합니다
  • 취소 시점과 이용 시작 시각의 차이를 계산해 전액·차등 환불 금액을 자동 판정하는 규정 엔진을 설계합니다
  • 결제·환불 트랜잭션 로그 테이블을 별도로 두어 결제 금액과 환불 금액의 데이터 정합성을 상시 검증하는 구조를 구현합니다

결제·취소·환불 전 과정을 하나의 트랜잭션 흐름으로 연결하고, 시점 기반 환불 규정 자동 판정 로직을 구현합니다.

결제·환불 자동화
결제·환불 자동화 실제 화면
핵심 기능 4

예약 알림 자동 발송

예약이 확정되면 카카오 알림톡으로 우선 발송하고, 발송에 실패하면 자동으로 SMS로 재발송해 안내 누락을 방지합니다.

  • Bull Queue 기반 알림 발송 큐를 구현해 알림톡 발송 실패 시 자동으로 SMS 채널로 재시도하는 폴백 구조를 설계합니다
  • 지점별 알림 템플릿을 2단 구조(알림톡 우선·SMS 대체)로 관리하는 템플릿 매핑 테이블을 구현합니다
  • 발송 이력을 상태값(성공·재시도·실패)으로 기록해 관리자 화면에서 발송 결과를 추적하는 구조를 구현합니다

카카오 알림톡과 SMS를 하나의 발송 큐로 통합하고, 실패 감지 시 채널을 자동 전환하는 폴백 구조를 구현합니다.

예약 알림 자동 발송
예약 알림 자동 발송 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

예약 도메인 분석 및 ERD 설계 · 2026.09

지점·룸·슬롯·요금 정책 데이터 모델을 분석하고 PostgreSQL 테이블 18~22개를 설계합니다

STEP 2

예약 엔진 및 결제 API 개발 · 2026.09

슬롯 잠금·요금 자동계산·PG 결제 연동 API를 Express 기반으로 구현합니다

STEP 3

탐색·예약 화면 UI 개발 · 2026.09

검색 그리드·캘린더·결제 화면을 React 기반 반응형 단일 소스로 구현합니다

STEP 4

알림 연동 및 통합 테스트 · 2026.09

카카오 알림톡·SMS 폴백 큐를 연동하고 예약 흐름 전반의 통합 테스트를 진행합니다

프로젝트 성과

주요 성과

슬롯 동시성 제어 구조 구현PostgreSQL 행 단위 잠금과 트랜잭션 격리 수준을 조정해 동일 슬롯 동시 예약 충돌을 차단하는 구조를 설계합니다
룸별 동적 요금 계산 엔진 설계인원·시간·룸유형 3축 요금 매트릭스를 구현하고, 초과 인원 요금을 자동 산출하는 계산 로직을 설계합니다
환불 규정 자동 판정 로직 구현취소 시점 기준 전액·차등 환불 규칙을 코드화해 예약 상태별 환불 금액을 자동 산출하는 구조를 구현합니다
다채널 알림 폴백 큐 구축Bull Queue로 알림톡 우선 발송과 SMS 자동 폴백을 통합 관리하는 발송 큐 아키텍처를 구축합니다
Highlights

기술적 주안점

  • 검색 세그먼트와 필터 chips를 조합한 탐색 UI를 구현하고, 반응형 단일 소스 구조로 PC·모바일 그리드 전환을 설계합니다
  • 슬롯 잠금과 트랜잭션 격리로 동시 예약 충돌을 방지하고, 룸별 요금 매트릭스 기반 자동 계산 엔진을 구현합니다
  • 결제·취소·환불 전 과정을 하나의 트랜잭션 흐름으로 연결하고, 시점 기반 환불 규정 자동 판정 로직을 구현합니다

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

FIRSTPIP이 개발 범위와 로드맵을 함께 정리해드립니다

무료 상담 시작하기