본문으로 건너뛰기
sanguk
Projects로 돌아가기

Project

K-Contents IP Market

K-콘텐츠 IP 거래 B2B 플랫폼

저작자와 해외 바이어를 중개하는 B2B IP 거래 플랫폼의 프론트엔드를 담당했습니다. 카테고리별 등록 폼을 Schema Driven Form으로 통합하고, 배너 Swiper CLS와 목록·상세 SSR·배포 파이프라인을 개선했습니다.

형태
B2B 서비스 · Frontend
주요 기술
Next.jsSwiperDockerTypeScript

Outcomes

성과

  • 콘텐츠 목록·상세 SSR로 FCP를 약 2.5초에서 1.5초로 약 40% 개선했습니다.
  • Docker Hub 레지스트리 기반 CI/CD로 EC2 빌드 부하를 줄이고 배포를 2분 이내로 단축했습니다.

Case studies

문제와 근거로 풀어낸 이야기

이력서 불릿을 코드베이스와 맞춰 구체화했습니다. 다이어그램·근거 경로는 각 케이스 아래에 있습니다.

  1. 01

    swiper/react CLS — SSR Placeholder와 isClient 마운트

    JS 로드 전 동일 비율 자리 확보 후 CSR에서만 Swiper 마운트

    swiper/react는 클라이언트 JS가 있어야 슬라이드 DOM·높이가 잡힙니다. SSR에서 빈 영역으로 두거나 하이드레이션 때 갑자기 Swiper를 끼우면 레이아웃이 밀리며 CLS가 납니다.

    BannerSwiper는 useEffect로 isClient를 true로 올린 뒤에만 <Swiper>를 렌더합니다. 그 전에는 max-w-[689px]와 aspect-[12/5] 스켈레톤(또는 고정 width/height 이미지)으로 같은 자리를 미리 채웁니다.

    로딩 중에도 동일 비율 플레이스홀더를 유지해, 데이터 도착·Swiper 마운트 사이 레이아웃 이동을 줄였고 CLS 0.1을 확보했습니다.

    Mermaid 다이어그램 (포트폴리오용 내보내기)
    • `isClient` 게이트로 Swiper를 hydration 이후에만 마운트
    • SSR Placeholder가 배너와 같은 aspect·너비를 예약
    • 이력서 성과의 CLS 0.1과 대응
    • src/widgets/banner/ui/BannerSwiper.tsx
  2. 02

    Schema Driven Form — 10개 카테고리 등록 폼 통합

    FormSchema + 공통 렌더러로 페이지·분기 복제 제거

    콘텐츠 카테고리가 10개이고 등록 단계(기본/판매/홍보)마다 필드가 달라, 페이지를 카테고리마다 두거나 거대 분기를 두면 유지보수가 어렵습니다.

    src/features/submission에서 FormSchema(섹션→필드그룹→필드→아이템)를 카테고리·경로별로 고르고, FormRenderer → SectionRenderer → FieldGroupRenderer → FieldRenderer → ItemRenderer가 type별 입력을 그립니다. buildSchema는 readonlySubmissionStatus를 하위로 전파합니다.

    renderCondition/disableCondition은 useEvaluator가 OR-of-AND로 평가하고, map 섹션은 판매·계약 유형 배열만큼 같은 필드를 반복합니다. useValidator·useTransformer·usePopulator가 같은 스키마로 검증·DTO 변환·초기화를 맞춰, 필드 추가·수정은 스키마 파일 변경으로 끝납니다.

    Mermaid 다이어그램 (포트폴리오용 내보내기)
    • 카테고리×경로로 스키마 선택 (content-info / sales-info / promotion-info)
    • ItemRenderer type 스위치 + 조건 평가 + map 반복 섹션
    • 렌더·검증·변환이 동일 FormSchema를 SSOT로 사용
    • src/features/submission/model/providers/SubmissionProvider.tsx
    • src/features/submission/ui/renderer/*
    • src/features/submission/model/types/schema.ts
  3. 03

    ngrok으로 로컬 HMR 공유 — 디자이너 검수 루프

    배포 대기·자리 이동 없이 실시간 UI 확인

    픽셀 단위 수정 요청이 잦아, 프로덕션 배포를 기다리거나 자리를 옮겨 화면을 보여주거나 캡처만 공유하는 방식이 병목이었습니다.

    로컬 Next.js HMR 개발 서버를 ngrok으로 터널링해 URL을 디자이너에게 전달했습니다. 수정이 저장되는 즉시 디자이너 자리에서 같은 화면을 확인할 수 있어 검수 왕복 시간을 줄였습니다.

    도구 자체보다 협업 프로세스 개선에 가깝지만, 프론트 작업 속도와 디자인 QA 품질에 직접 영향을 준 사례로 남겼습니다.

    • 로컬 HMR + ngrok 터널로 원격 실시간 프리뷰
    • 배포 대기 없는 픽셀 검수 루프
    • 협업 프로세스 (코드 산출물보다 운영 관행)

Next

K-Contents IP Market처럼, 제품 단위로 끝까지 책임집니다

설계·구현·운영까지 한 흐름으로 다루는 풀스택 협업이 필요하면 편하게 문의해 주세요.