/***atMediquitous**-기간: 2022.11 ~ 현재*-역할: 프론트엔드 개발자*-MAU 100만 일본 커머스 플랫폼 nugu를 개발하고 있습니다.*-참고: 메디쿼터스*-참고: 일본 패션 플랫폼 nugu***/function atMediquitous(): ProfileBuilder {const stack = { fe: { react: [ 'Next.js 16 (app router)', 'tailwindcss', 'Jotai', 'TanStack Query', 'TanStack Virtual', 'Storybook', { testing: ['Vitest', 'testing-library/react'] }, ], svelte: ['SvelteKit', 'Svelte 4'], }, be: { python: { django: ['Django REST Framework'] }, }, vcs: ['git', 'GitHub'],}return this.withStack(stack).().().().().()}
/***buildContentCMS**-프로모션 제작의 개발자 의존과 프리뷰-실서비스 불일치를 줄이기 위해 콘텐츠 CMS 에디터를 구축했습니다.*-다양한 블록 편집, 템플릿 재사용, WYSIWYG 프리뷰, 런타임 반영 구조를 정리해 운영 효율을 높였습니다.*-텍스트 필드 위에 페이지 빌더를 얹은 설계 과정을 아티클로 정리했습니다.**/function buildContentCMS(): ProfileBuilder {return this.addExperience({context: "프로모션 제작 운영",contribution: "CMS 에디터와 WYSIWYG 프리뷰 구축",impact: "개발자 의존과 프리뷰-실서비스 불일치 감소"})}
/***migrateBootstrapToTailwind**-Bootstrap 스타일을 Tailwind CSS v4로 전면 이관했습니다.*-CSS 번들 크기를 413.3 KB → 157.2 KB로 약 62% 감소시켰습니다. (gzip 66.6 KB → 25.0 KB, brotli 49.1 KB → 20.8 KB)*-react-bootstrap 제거로 First Load JS(shared)도 916 KB → 850 KB로 7.2% 줄였습니다.*-이 전환 과정에서 느낀 작업 방식의 변화를 아티클로 정리했습니다.**/function migrateBootstrapToTailwind(): ProfileBuilder {return this.addExperience({context: "Bootstrap 기반 스타일 시스템",contribution: "Tailwind CSS v4로 전면 이관",impact: "CSS 번들 약 62%, First Load JS(shared) 7.2% 감소"})}
/***scalePromotionPlatform**-기획전/프로모션 기능을 확장 가능한 구조로 개편했습니다.*-유형 분기, 예약 노출, 운영 설정 모델 개선으로 요구사항 대응 속도를 높였습니다.**/function scalePromotionPlatform(): ProfileBuilder {return this.addExperience({context: "기획전/프로모션 기능 확장",contribution: "유형 분기, 예약 노출, 운영 설정 모델 개선",impact: "요구사항 대응 속도 향상"})}
/***optimizeMallPerformance**-컴포넌트 분리, 전역/지역 상태 재설계, 가상화 적용으로 렌더링 비용을 줄였습니다.*-번들 0.5MB 감소, 상품 카드 렌더링 요소 최대 95% 감소, CLS 0을 달성했습니다.*-힙 스냅샷 비교로 해제되지 않는 객체를 찾고, 해당 객체를 붙잡고 있던 참조 경로를 추적해 SSR 환경의 TanStack Query gcTime 메모리 누수를 확인했습니다.*-서버 환경에서는 캐시 수명을 즉시 정리하도록 조정해 메모리 증가 추이를 안정화했습니다.*-이미지 품질을 q=100에서 q=85로 조정하고 lazy 로딩 기본값을 적용해 초기 이미지 전송량을 주요 라우트에서 57~95%, LCP를 16~29% 개선했습니다.*-관련 아티클: 원인을 모르는 메모리 누수, 추측 대신 측정부터 시작했다*-관련 아티클: 의심한 적 없던 q=100, 직접 눈으로 확인하기로 했다**/function optimizeMallPerformance(): ProfileBuilder {return this.addExperience({context: "상품 목록 렌더링 성능",contribution: "상태 재설계, 컴포넌트 분리, 가상화 적용",impact: "번들 0.5MB 감소, 렌더링 요소 최대 95% 감소, CLS 0 달성"})}
/***leadStylingTF**-스타일링 서비스 TF에서 프론트엔드 리드 역할을 수행했습니다.*-주니어와 페어 프로그래밍/리뷰를 병행해 예정된 일정에 맞춰 안정적으로 런칭했습니다.**/function leadStylingTF(): ProfileBuilder {return this.addExperience({context: "스타일링 서비스 TF",contribution: "프론트엔드 리드와 페어 프로그래밍/리뷰 수행",impact: "예정 일정에 맞춘 안정적 런칭"})}