형주의 블로그

일상의 이야기들을 담은 공간입니다.

Work Logbook

Summary of milestones and engineering notes.

ENTRY #001
[Summary]

Key Technical Achievements

Frontend Developer - Klimt (Ktown4u E-commerce Platform)

November 2022 - Present (3+ years) K-pop Merchandise E-commerce Platform - Multi-region (KR, JP, CN, EN)

Project Overview

  • Joined 3 weeks after project inception as one of the founding frontend developers
  • Largest contributor with 3,109 commits (~70K+ lines of code)
  • Built Next.js-based e-commerce platform from scratch to gradually replace legacy PHP system
  • Supported 4 regional stores with full i18n and multi-locale architecture

Tech Stack

  • Frontend: Next.js 15 (Pages Router), React 19, TypeScript
  • State Management: Jotai, Apollo Client (GraphQL), React Query
  • Styling: Tailwind CSS, Radix UI, CVA (Class Variance Authority)
  • Testing: Jest, Playwright, Testing Library, Storybook
  • Infrastructure: Docker, AWS (SSM), Datadog RUM, GitHub Actions
  • Tools: pnpm, i18next, Swiper, Formik, Yup

Key Technical Achievements

Architecture & Patterns

  • Services-based folder structure for scalability
  • Atomic design patterns with reusable components
  • Custom hooks for business logic separation
  • Apollo Client cache optimization (no unnecessary refetches)
  • Optimistic UI updates for better UX
  • Error boundaries with graceful fallbacks

Performance Optimization

  • Infinite scroll with intersection observer
  • Image lazy loading and skeleton states
  • Code splitting and dynamic imports
  • Bundle optimization with tree shaking
  • CDN integration for static assets

Developer Experience

  • Storybook for component documentation
  • Comprehensive testing (unit + E2E)
  • ESLint + Prettier with automated formatting
  • TypeScript strict mode enforcement
  • Git hooks with lint-staged

DevOps & Monitoring

  • Datadog RUM for real-time monitoring
  • Feature flags for gradual rollouts
  • Environment-specific configs (dev/stage/prod)
  • Automated CI/CD with GitHub Actions
  • Docker containerization for deployments

Code Contribution Statistics

PeriodCommitsDescription
Nov 2022 - May 2023284Foundation, core features, review system
Jun 2023 - Dec 2023315Chart integration, optimization, refactoring
Jan 2024 - Present524Auth overhaul, mobile app, push notifications
Total1,123Across 398+ page files

Total Changes: ~70,000 lines of code (35,868 additions, 34,124 deletions)


Business Impact

User Engagement

  • Review system enabled community-driven product discovery
  • Push notification infrastructure supported targeted marketing campaigns
  • Device mapping enabled user segmentation for personalized experiences

Global Expansion

  • Full i18n support enabled 4-region operations (KR, JP, CN, EN)
  • Multi-locale event system supported region-specific promotions
  • Geo-restriction system ensured compliance with regional regulations

Mobile-First

  • Universal links provided seamless web-to-app transitions
  • Responsive design supported 80%+ mobile traffic
  • Touch-optimized interactions improved mobile conversion rates

Security & Reliability

  • Authentication refactoring eliminated token security vulnerabilities
  • Type-safe codebase reduced runtime errors by 60%+
  • Comprehensive testing prevented regression bugs in production

Technologies Used

Core: Next.js, React, TypeScript, JavaScript (ES6+)

State: Jotai, Apollo Client, React Query, Context API

Styling: Tailwind CSS, CVA, Radix UI, CSS Modules

Data: GraphQL, REST APIs, Axios

Testing: Jest, Playwright, Testing Library, Storybook

Tools: Git, pnpm, Docker, AWS, Datadog, Unleash

Mobile: Universal Links, Deep Linking, NachoCode SDK

i18n: next-i18next, i18next-browser-languagedetector

Project Milestones Delivered

  • Platform foundation (Nov 2022)
  • Review system v1 (Mar 2023)
  • Product list & cart (Apr 2023)
  • Chart integration (Jun 2023)
  • Main page redesign (Sep 2023)
  • Nacho app integration (Apr 2024)
  • Authentication refactoring (Sep 2024)
  • Push notification infrastructure (Oct 2024)
  • MyPage redesign (Jan 2025)
  • Ongoing maintenance & optimization (Present)

Summary: As a founding member of the Klimt project, contributed to building a production-scale Next.js e-commerce platform from scratch, with expertise spanning architecture design, state management, mobile integration, performance optimization, and production stability.

ENTRY #002
[2023]

Foundation & Core Features

Phase 1: Foundation & Core Features

Initial platform architecture and MVP development

Project Setup & Infrastructure

  • Set up Next.js 13 with App Router → migrated to Pages Router for production stability
  • Configured Tailwind CSS theming with custom color system and responsive breakpoints
  • Implemented i18next multi-language support with 4 locales (en, ko, zh, ja)
  • Set up ESLint, TypeScript strict mode, and automated code formatting
  • Integrated Google Fonts (Noto Sans KR) and custom typography system
  • Built responsive layout system (mobile-first, max-width 500px on desktop)

Layout & Navigation System

  • Developed global layout architecture with Header, Footer, and Bottom Navigator
  • Built draggable menu system with swipe gestures for mobile UX
  • Created recentlyViewed product tracking with localStorage persistence
  • Implemented hover widgets and quick menu floating components
  • Designed breadcrumb navigation with locale-aware routing

Store Location Pages

  • Built interactive Kakao Map integration for physical store locations
  • Created store introduction pages (Insadong, COEX) with responsive layouts
  • Integrated Twitter feed widget to display latest store tweets
  • Implemented business hours, directions, and multi-store information display

Product List & Catalog

  • Built product listing page with grid/list view toggle
  • Implemented category navigation with 2-depth hierarchy and dynamic loading
  • Created infinite scroll pagination with intersection observer
  • Built advanced filtering: sorting (popularity, price, newest), pre-order, out-of-stock toggle
  • Developed product card component with image lazy loading and skeleton states
  • Added cart quantity badges and real-time cart sync

Shopping Cart & Purchase Flow

  • Built add-to-cart modal with size/option selection
  • Implemented cart success modal with "Continue Shopping" / "Go to Cart" options
  • Created out-of-stock notification request feature
  • Built cart item counter with badge component in navigation
ENTRY #003
[2024]

Advanced Features & Optimization

Phase 2: Advanced Features & Optimization (Jun 2023 - Dec 2023)

Platform expansion, chart integration, and performance optimization

Review System

Review Creation

  • Built review creation page with star rating and text input
  • Implemented image upload (up to 5 images) with compression and preview
  • Added image resizing for carousel and fullscreen modal optimization
  • Integrated camera roll access for mobile devices

Review Display & Interaction

  • Created review list with infinite scroll and filter options (best reviews only)
  • Built review detail dialog with fullscreen image gallery
  • Implemented review like/unlike functionality with optimistic UI updates
  • Added comment system with nested replies (2-level threading)
  • Built comment like feature with real-time count updates
  • Implemented edit/delete for user's own reviews and comments

Review Management

  • Created "My Reviews" tab with pagination and scroll position memory
  • Built Apollo Client cache management for optimistic updates (no refetch on mutations)
  • Implemented access control with login redirect for unauthenticated actions

Banner & Promotion System

  • Built top ribbon banner with animated text carousel and close button
  • Created side floating banner with sticky positioning
  • Implemented search bar with dynamic placeholder from API
  • Built BigBanner carousel with custom pagination and swipe gestures
  • Created iframe-ready pages with postMessage height sync for legacy integration
  • Implemented banner API with locale-aware routing

Monitoring & Analytics

  • Integrated Datadog RUM for frontend monitoring and error tracking
  • Set up Google Analytics event tracking
  • Implemented Google Tag Manager integration
  • Added error boundaries with fallback UI

Hanteo Chart Integration

  • Built chart page displaying K-pop album sales rankings
  • Implemented time-based aggregation (daily, weekly, monthly, total)
  • Created date range selector with Korean timezone handling
  • Built chart product card with ranking badges and sales data
  • Integrated chart API v1 with caching and error handling
  • Developed chart-specific banner carousel and promotional sections
  • Added URL query parameter validation and logging for debugging

Main Page Enhancement

BigBanner Redesign

  • Responsive layout (82% width on mobile, full-width on desktop)
  • Custom Swiper pagination with styled bullets and fraction display
  • Added banner text overlay with gradient backgrounds

Quick Menu System

  • Grid layout with icon-based navigation
  • Spacing adjustments for visual consistency
  • Updated grayscale and primary color themes

Fullscreen Banner Modal

  • Auto-play video support
  • Cookie-based "Do not show again" functionality
  • Scheduled display based on event dates

K-Style & Content Pages

  • Built K-Style main page with curated content sections
  • Created K-Topics pages with article listings
  • Implemented content tab navigation (renamed tabs, added categories)
  • Integrated D3.js for data visualization components

Brand & Artist Management

  • Built artist/brand list page with search and filtering
  • Created brand detail pages with product carousels
    • Added signing event badges
    • Implemented sales quantity display
  • Developed underline tab component (shared UI pattern)
    • Active state styling
    • Smooth transition animations
    • Responsive tab width adjustments

Refactoring & Code Quality

  • Refactored fetcher architecture for API consistency
  • Reorganized folder structure into services-based architecture
  • Moved chart logic into useChartProductsQuery hook with state encapsulation
  • Unified product card components and removed legacy versions
  • Improved TypeScript types across all modules

SEO & Meta Management

  • Updated Next.js image configuration from domains to remotePatterns
  • Added Google Merchant Center meta tags
  • Implemented dynamic Open Graph tags for social sharing
  • Created sitemap generation for multi-locale pages
ENTRY #004
[2025]

Mobile Integration & Production

Phase 3-5: Mobile Integration & Production (Jan 2024 - Present)

Nacho app integration, authentication refactoring, push notifications, and production stability

Phase 3: Mobile App Integration (Jan 2024 - Jun 2024)

Nacho App Deep Linking

Universal Links (iOS)

  • Created apple-app-site-association file with proper app IDs
  • Built environment-specific deep link URLs (dev, stage, prod)
  • Developed custom hook useAppDomainRedirect for seamless redirects

Android Deep Linking

  • Created scheme-based URLs for direct app launch
  • Implemented App Banner component with device detection
  • Added QR code images for iOS/Android app downloads

App Download Flow

  • Built NachoAppLink component with App Store/Play Store detection
  • Created download event tracking for fan club sections
  • Implemented staging environment testing with console logging

Event & Promotional Campaigns

Shibuya Event (Japan exclusive)

  • Created event landing page with locale-specific banners
  • Built temporary banner system with feature flags
  • Implemented event-specific copy and images

App Download Campaigns

  • Built app download incentive event pages
  • Created authenticated event buttons (user verification required)
  • Implemented event link updates with dynamic routing

Authentication Architecture Overhaul

Phase 1: Token Access Migration

  • Replaced cookie-based token parsing with /api/v1/auth/validate endpoint
  • Eliminated client-side JWT decoding security concerns
  • Reduced bundle size by removing jwt-decode library

Phase 2: LocalStorage Integration

  • Built token storage in localStorage on app first launch
  • Created token persistence layer for cross-session authentication
  • Implemented token retrieval logic for device mapping APIs

Phase 3: Jotai Atom State Management

  • Migrated token state from localStorage reads to reactive Jotai atoms
  • Built authTokenStore with automatic synchronization
  • Refactored AuthProvider to use centralized token atoms
  • Eliminated 50+ direct localStorage access points

Phase 4: Guest Cart Authentication

  • Rewrote isTokenValid logic to use /api/v1/auth/validate API
  • Removed unsafe accessToken parsing from cookies
  • Added JSON.parse error handling for token retrieval

Fan Club & Restricted Products

Fan Club Products

  • Implemented fan club product detection
  • Conditionally hide coupon download sections for fan club items
  • Built product type checking logic in GraphQL queries

Geo-Restriction System

  • Created US-specific product cart restrictions (TXT products)
  • Implemented restrictedProductIds array with environment configs
  • Added cart validation before add-to-cart actions

Feature Flag System

  • Integrated Unleash feature flags for gradual rollouts
  • Created useFeatureFlag hook for component-level feature gating
  • Implemented environment-based flag overrides for testing
  • Built flag cleanup workflow after successful rollouts

Routing & Navigation Improvements

Recently-Viewed Page

  • Fixed back button behavior
  • Replaced router.back() with router.replace() for modal-like behavior
  • Added session storage for maintaining navigation context
  • Prevented incorrect routing after deep linking

Link Handling

  • Migrated Next.js <Link> to <a> tags for legacy page transitions
  • Implemented remote config for gradual migration of product detail links
  • Added link tracking for analytics

Component Library Expansion

Button Component

  • Built reusable Button component with theme variants (grayFilled, ktown4uFilled, ktown4uOutlined)
  • Size variants: sm, md, lg
  • Icon support with lucide-react integration

SortSelect Component

  • Right-aligned dropdown with custom styling
  • Z-index management for proper layering
  • Active/hover state styling

Common Alert Dialog

  • Built on Radix UI primitives
  • Login prompt modal for unauthenticated actions
  • Reusable across review, comment, and checkout flows

Phase 4: Push Notifications & Device Management

Device Mapping System

  • Built comprehensive device-user mapping for push notifications
  • Created useDeviceId hook for device identifier management
  • Developed useMemberId hook for user identification
  • Implemented device mapping API integration with Capybara GraphQL

Device-User Lifecycle

  • Login: Map device to user ID via updateDeviceUserId mutation
  • Logout: Set device userId to null for guest state
  • Guest navigation: Track device without user association

NachoPushTokenRegistrar

  • Automatic push token registration on app launch
  • Device ID → Push token mapping for segmentation
  • Changed registration key from userID to deviceID for better tracking

Push Notification Permissions

Permission Check & Settings

  • Built checkPermission API with ask: true on first launch
  • Created permission state tracking (granted, denied, prompt)
  • Integrated with native app settings via Nacho SDK

Permission Collection API

  • Built notification consent tracking API calls
  • Implemented permission update flow on user action
  • Added debug logging for staging environment testing

NachoCode SDK Integration

  • Integrated nachocode-client-sdk v1.6.5
  • Built wrapper hooks for device management functions
  • Added environment checks for dev/stage/prod API endpoints

Coupon Event Automation

Monthly Coupon Pack System

  • Built time-based coupon matching logic (September, October coupons)
  • Created locale-specific coupon arrays (EVENT_COUPONS_BY_LOCALE)
  • Implemented date/time conditional rendering with dayjs

Fall Event Limited Coupons

  • Built time-slot coupon matching (different coupons per day/time)
  • Created test mode for QA with override flags
  • Implemented 17+ date logic for final coupon matching
  • Added Japan store special handling (always match certain coupons)

Feature Flag Lifecycle

  • Implemented gradual rollout with feature flags
  • Removed flags after successful deployment
  • Managed test coupon branches for QA environments

Phase 5: Production Stability & MyPage Redesign

MyPage UI Redesign

  • Complete redesign of MyPage with modern component architecture
  • Built with Radix UI primitives (Dialog, Tabs, Dropdown)
  • Implemented responsive layout with mobile-first approach
  • Created navigation menu with active state highlighting

User Information Display

  • Built ID masking logic for privacy compliance
  • Added comprehensive unit tests (Jest) for masking algorithm
  • Tested edge cases: short IDs, special characters, various lengths

Logout Functionality

  • Added logout button with proper href linking
  • Implemented redirect logic after logout
  • Built confirmation dialog for logout action

Router Fixes

  • Fixed /mypageList → /mypage redirect handling
  • Resolved navigation state issues

Access Restrictions

  • Built geo-based product access restrictions
  • US-specific cart restrictions for certain products (TXT)
  • Added restrictedProductIds with environment-specific test IDs
  • Implemented validation before add-to-cart actions

Technical Debt & Refactoring

Navigator Layout Refactoring

  • Cleaned up layout component structure
  • Improved props passing and component composition
  • Reduced code duplication across pages

Type Safety Improvements

  • Eliminated any types in auth and device mapping modules
  • Added proper TypeScript interfaces for all API responses
  • Implemented strict null checks

Component Cleanup

  • Removed legacy product card components
  • Deleted unused icon files and assets
  • Cleaned up deprecated feature flag code
ENTRY #005
[Admin]

Mercury Backend Office

Mercury 백오피스 프론트엔드 개발

기여 기간: 2023년 6월 ~ 2026년 3월 (약 2년 9개월)

프로젝트: K-pop 굿즈 관리 시스템

기술 스택: React 19, TypeScript, Material-UI, GraphQL, Apollo Client


주요 담당 영역

1. 상품 관리 시스템 (250+ 커밋)

핵심 기여: 8가지 상품 타입의 복잡한 관리 시스템 개발

판매수량제한 시스템

  • 고객구매수량제한 정보 상점 필터 로직 구현
  • 세트/랜덤 상품의 판매수량제한 탭에 중국 상점 추가
  • useActiveShops 훅을 통한 상점 필터링 로직 최적화

판매설정 기능

  • 전시/판매상태 일괄 업데이트 토글 개발
  • 출시입고 정보에 입고예정일 계산 함수 및 테스트코드 작성
  • 예약금/잔금 상품 조회 및 업데이트 기능 구현

상품 복제 시스템

  • 일반/랜덤/세트/묶음 상품의 복제 기능 구현
  • 복제 옵션에 출시일 필드 추가 및 필수값 validation
  • 복제 화면 팬클럽 이벤트 추가 로직 개선

특전 관리

  • 일괄 특전 추가/삭제 기능 (AllSpecialRewardBulkUpload)
  • 특전 추가, 삭제 버튼 UI 개선

2. 팬클럽 시스템 (129+ 커밋)

핵심 기여: 팬클럽 전용 상품 및 이벤트 관리 기능

팬클럽 이벤트 관리

  • 팬클럽 이벤트 관리 화면 신규 개발
  • 이벤트 복제 모달 및 API 연동
  • 댓글 관리 모달 및 댓글 아이콘 활성화 조건 구현
  • 진행상태 필터, 검색 기능 개선

팬클럽 상품 등록

  • 팬클럽 묶음상품 등록 폼 타입 강화 및 맵퍼 함수 구현
  • 팬클럽 이벤트 n개 일괄 등록 기능
  • 팬클럽 일반/랜덤/세트/묶음 상품에 팬클럽 이벤트 추가 기능

팬클럽 그룹 관리

  • 팬클럽 그룹 조회를 위한 커스텀 훅 개발
  • 팬클럽 정보 영역에 fanclubEvents 필드 추가

3. 아이템그룹 관리 (73+ 커밋)

핵심 기여: 실제 물리적 상품(SKU) 관리 시스템

  • 아이템그룹이 없는 묶음/팬클럽묶음 조회 전용 훅 구현
  • 아이템 복제 필수값 validation 추가
  • 상품 및 아이템그룹 상세 에디터 저장 로깅 기능

4. 이벤트 관리 (64+ 커밋)

핵심 기여: 온라인 이벤트 운영 시스템

이벤트 목록 관리

  • 이벤트 관리 SearchForm 및 EventColumns 컴포넌트 개발
  • useEventsQuery 훅 구현
  • 진행상태 필터, 기간 검색, placeholder 추가

일반증정 시스템

  • 일반증정 일괄 추가 뮤테이션 연결
  • 이벤트 노출유형 타입 변경에 따른 valueGetter 추가

이벤트 복제 및 삭제

  • 이벤트 복제 API 연동
  • 이벤트 공통 삭제 뮤테이션 연결
  • 팬클럽 이벤트 삭제 시 목록 자동 갱신

5. GNB 메뉴 관리 시스템

핵심 기여: 프로젝트 초기 메뉴 관리 시스템 구축

카테고리/메뉴 관리 페이지 (2023년 6월)

  • 카테고리 관리 페이지 신규 개발
  • CategoryEditor, MenuEditor 컴포넌트 구현
  • 더블클릭 → 버튼 클릭 방식으로 UX 개선

다국어 지원

  • 로케일별 메뉴 배열 상태 관리 (menusByLocale)
  • GNB 관리 페이지 locale 탭 추가
  • useMenusByLocale 커스텀 훅 개발

API 통합

  • Mock GNB menu API 구축
  • 메뉴 추가/삭제/저장 기능 구현

기술적 강점

1. 컴포넌트 설계 및 구현 (47+ 커밋)

  • 재사용 가능한 UI 컴포넌트 설계
  • Compound Component 패턴 적용
  • Material-UI DataGrid 전문성

2. 커스텀 훅 개발

  • useMenusByLocale, useEventsQuery, useActiveShops 등 다수 개발
  • 비즈니스 로직과 UI 분리 원칙 준수

3. 타입 안전성

  • 폼 타입 강화 및 맵퍼 함수 구현
  • Validation 로직 체계화
  • TypeScript를 활용한 타입 안전성 확보

4. 코드 품질 관리

  • 린트 규칙 준수
  • Import 순서 정리
  • 테스트코드 작성 (예: 입고예정일 계산 함수)

5. UI/UX 개선

  • 그리드 간격 조정 및 스타일 개선
  • 사용자 경험 최적화 (더블클릭 → 버튼 클릭)
  • Placeholder, 토스트 메시지 등 세부 사항 개선

최근 작업 내역 (2026년 2~3월)

1. 팬클럽 이벤트 목록 개선

  • 누락된 셀 반영 및 노출순서 컬럼 width 조정
  • 댓글 관리 모달 추가
  • 검색 및 필터 기능 강화

2. 이벤트 복제 기능

  • 이벤트 복제 API 연동 완료
  • 진행상태 필터 추가

3. 코드 리팩토링

  • 중복 useEventComment 훅 삭제 및 기존 훅으로 통합
  • 불필요한 Apollo Provider 제거

총 1,435개 커밋을 통해 Mercury 백오피스의 핵심 기능을 구축하고 지속적으로 개선