← 포트폴리오 목록

프리미엄 욕실용품 전문몰

단품 욕실용품 전문몰을 솔루션 빌더 없이 자체 구축 방식으로 직접 구현하는 프로젝트입니다.

프로젝트 납품 요약

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

서비스 타입Web
업종이커머스
기술 스택
React 18TypeScriptTailwind CSSNode.jsExpressPostgreSQLPrismaSocket.io포트원 결제 연동
주요 기능
  • 메인 홈
  • 상품 상세
  • 장바구니·결제
  • 상품 관리

프로젝트 개요

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

단품 욕실용품 전문몰을 솔루션 빌더 없이 자체 구축 방식으로 직접 구현하는 프로젝트입니다. 히어로 영상과 리뷰·SNS 슬라이더를 갖춘 메인 화면, 사용법 콘텐츠를 담은 상품 상세, 포트원 PG 연동 결제, 발주사가 직접 상품을 관리하는 어드민을 React + Node.js 기반으로 설계합니다.

작업 범위

  • 메인 홈: 첫 진입 시 제품 소개 영상이 자동 재생되는 히어로, 상단 내비게이션, 고객 리뷰·인스타그램 피드 슬라이더, 우측 하단 고정 실시간 상담 위젯을 한 화면에 구성합니다
  • 상품 상세: 제품 정보·사양·이미지 갤러리와 함께, 발주사가 직접 업로드한 사용 방법 콘텐츠(영상·이미지)를 렌더링하는 상세 페이지를 구현합니다
  • 장바구니·결제: 장바구니 담기부터 주문 정보 입력, 포트원 연동 온라인 결제까지의 흐름을 구현합니다
  • 상품 관리: 발주사가 직접 상품 정보·이미지·사용법 콘텐츠를 추가·수정·삭제하는 관리자 CRUD 화면을 구현합니다

주요 업무

  • 메인 홈 화면: React 컴포넌트 기반 히어로/네비/캐러셀 조합, 상품 카드 그리드는 다품목 확장을 염두에 둔 반응형 그리드 시스템으로 설계합니다
  • 상품 상세 화면: 이미지 갤러리 컴포넌트는 썸네일 동기 스크롤과 핀치 줌을 지원하고, 사용법 콘텐츠 블록은 CMS 형태의 어드민 입력값을 그대로 렌더링하는 구조로 설계합니다
  • 장바구니·결제 화면: 장바구니 상태는 클라이언트 로컬 스토리지와 서버 세션을 동기화하고, 결제는 포트원 SDK 연동 후 서버 측 결제 검증(webhook)으로 이중 확인하는 구조로 설계합니다
  • 상품 관리 화면: 단일 상품 기준 CRUD로 시작하되, 상품 테이블을 카테고리·옵션 확장을 고려한 정규화 스키마로 설계해 이후 다품목 전환 시 마이그레이션 부담을 최소화합니다
프리미엄 욕실용품 전문몰
요구사항 정의

프로젝트 핵심 과제

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

단일 상품에서 다품목으로 확장 가능한 유연한 상품 스키마 설계가 필요하며

카테고리·옵션 구조를 미리 정규화해야 함

PG 결제 승인 실패나 네트워크 타임아웃 시 주문 상태 불일치를 방지하는 트랜잭션 설계

실시간 채팅 위젯과 히어로 영상이 동시에 로딩될 때 초기 렌더링 지연 리스크

코드 스플리팅으로 대응할 계획

발주사가 직접 상품·콘텐츠를 업로드하는 어드민 환경에서 잘못된 입력값으로 인한 렌더링 오류를 방지하는 유효성 검증 계층 설계

구현 내용

핵심 기능 상세

핵심 기능 1

메인 홈

첫 진입 시 제품 소개 영상이 자동 재생되는 히어로, 상단 내비게이션, 고객 리뷰·인스타그램 피드 슬라이더, 우측 하단 고정 실시간 상담 위젯을 한 화면에 구성합니다.

  • Intersection Observer로 히어로 영상 뷰포트 진입 시점에만 재생을 트리거해 초기 로딩 부하를 분리하는 구조를 설계합니다
  • Swiper 기반 리뷰·SNS 캐러셀을 구현하고 터치 스와이프와 자동 슬라이드 전환을 함께 적용합니다
  • Socket.io로 실시간 양방향 채팅 채널을 구현하고, 페이지 전환 간에도 세션이 유지되는 플로팅 위젯 상태 관리를 설계합니다

히어로 영상·리뷰 슬라이더·실시간 상담 위젯을 하나의 홈 화면에서 독립된 컴포넌트로 조합하는 구조를 설계하여, 각 요소가 서로의 렌더링을 막지 않도록 구현합니다.

메인 홈
메인 홈 실제 화면
핵심 기능 2

상품 상세

제품 정보·사양·이미지 갤러리와 함께, 발주사가 직접 업로드한 사용 방법 콘텐츠(영상·이미지)를 렌더링하는 상세 페이지를 구현합니다.

  • 이미지 갤러리 컴포넌트에 썸네일-메인 이미지 동기 스크롤과 모바일 핀치 줌 제스처를 적용합니다
  • 사용법 콘텐츠(영상·이미지·텍스트 혼합)를 어드민에서 입력한 블록 데이터 그대로 렌더링하는 동적 콘텐츠 조립 구조를 설계합니다
  • 제품 사양 정보를 구조화된 스펙 테이블 컴포넌트로 재사용 가능하게 설계합니다

발주사가 어드민에서 직접 입력한 사용법 콘텐츠를 프론트엔드가 스키마 기반으로 조립·렌더링하는 구조를 구현하여, 콘텐츠 변경 시 코드 수정 없이 즉시 반영되도록 설계합니다.

상품 상세
상품 상세 실제 화면
핵심 기능 3

장바구니·결제

장바구니 담기부터 주문 정보 입력, 포트원 연동 온라인 결제까지의 흐름을 구현합니다.

  • 장바구니 상태를 Zustand로 관리하고 로컬 스토리지 영속화 + 서버 세션 동기화 로직을 설계합니다
  • 포트원 결제 SDK 연동 후 결제 승인 webhook을 서버에서 재검증하는 이중 확인 구조를 구현합니다
  • 결제 실패·타임아웃 시 주문 상태를 pending으로 유지하고 재시도 큐에 등록하는 흐름을 설계합니다

포트원 결제 SDK와 서버 측 webhook 검증을 결합한 이중 확인 구조를 구현하여, 클라이언트 응답만으로 결제 완료를 확정하지 않는 안전한 결제 플로우를 설계합니다.

장바구니·결제
장바구니·결제 실제 화면
핵심 기능 4

상품 관리

발주사가 직접 상품 정보·이미지·사용법 콘텐츠를 추가·수정·삭제하는 관리자 CRUD 화면을 구현합니다.

  • React Hook Form + Zod로 상품 등록/수정 폼의 클라이언트·서버 이중 유효성 검증을 구현합니다
  • 이미지 업로드는 Multer로 서버에 수신 후 리사이징하여 저장하는 파이프라인을 설계합니다
  • 상품 테이블을 카테고리/옵션 확장을 고려한 정규화된 PostgreSQL 스키마로 설계합니다

단일 상품 CRUD이지만 카테고리·옵션 테이블을 분리한 정규화 스키마로 설계하여, 이후 다품목 확장 시 스키마 변경 없이 데이터만 추가되는 구조를 구현합니다.

상품 관리
상품 관리 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

요구사항 분석 및 상품·주문 DB 스키마 설계 · 2026.09

메인·상세·장바구니·어드민 화면 요구사항 정리, 카테고리/옵션 확장을 고려한 PostgreSQL 스키마 설계

STEP 2

백엔드 API 및 포트원 결제 연동 개발 · 2026.09

Express 기반 상품·주문 CRUD API, 포트원 결제 승인·webhook 검증 로직 구현

STEP 3

프론트엔드 UI 및 반응형 퍼블리싱 · 2026.09

React 기반 메인·상세·장바구니·어드민 화면 구현, PC/태블릿/모바일 반응형 레이아웃 적용

STEP 4

통합 테스트 및 배포 준비 · 2026.09

결제·주문 플로우 통합 테스트, 크로스 브라우저 검증 및 배포 환경 설정

개발 결과

실시간 상담 위젯 아키텍처 설계Socket.io 기반 양방향 채팅 채널 구현, 페이지 전환 시에도 세션이 유지되는 플로팅 위젯 상태 관리 설계
PG 결제 트랜잭션 무결성 설계포트원 API 연동 후 결제 승인 webhook을 서버에서 재검증하는 이중 확인 구조 구현, 실패 건 재시도 큐 설계
확장 가능한 상품 스키마 설계단일 상품에서 다품목 확장을 고려한 정규화 스키마 설계, 옵션/재고 테이블 분리 구조 구축
리뷰·SNS 콘텐츠 슬라이더 구현Swiper 기반 반응형 캐러셀 구현, 리뷰·인스타그램 피드 데이터를 통합 렌더링하는 컴포넌트 설계

기술적 주안점

  • 히어로 영상·리뷰 슬라이더·실시간 상담 위젯을 하나의 홈 화면에서 독립된 컴포넌트로 조합하는 구조를 설계하여, 각 요소가 서로의 렌더링을 막지 않도록 구현합니다
  • 발주사가 어드민에서 직접 입력한 사용법 콘텐츠를 프론트엔드가 스키마 기반으로 조립·렌더링하는 구조를 구현하여, 콘텐츠 변경 시 코드 수정 없이 즉시 반영되도록 설계합니다
  • 포트원 결제 SDK와 서버 측 webhook 검증을 결합한 이중 확인 구조를 구현하여, 클라이언트 응답만으로 결제 완료를 확정하지 않는 안전한 결제 플로우를 설계합니다

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

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

프로젝트 문의