고객이 말한 기능보다, 고객이 원한 결과를 만듭니다.
실수는 사람이 아니라 구조로 막습니다.
온프레미스로 여러 고객사에 설치하는 AI 통합 플랫폼. 사용자는 기능 단위인 노드를 캔버스에 이어 붙여 AI 업무 흐름(워크플로우)을 만들고, 채팅으로 바로 실행합니다. 워크플로우와 AI 채팅의 FE 설계/개발을 담당하고, 2026년 1분기부터 FE 파트(3명)를 리딩하고 있습니다. 2025.12 v1.0 출시.
스택 React 19 TypeScript React Flow Zustand Zod TanStack Query SSE Vitest
2025.09 ~ 현재
워크플로우는 기능 단위인 노드를 이어 붙여 만들고, 고객사 요구가 들어올 때마다 노드 종류가 늘었습니다. 그런데 노드 하나를 추가하거나 수정하려면 여러 공통 파일을 함께 고쳐야 했고, 한 곳을 빠뜨려도 빌드 에러가 나지 않았습니다. 누락은 메뉴에 노드가 보이지 않거나 설정이 사라지는 식으로, 실행해 봐야 드러났습니다.
2026.01 ~ 현재
워크플로우를 처음 만드는 사용자와 매일 쓰는 사용자 모두 편집기에서 막히지 않도록, 불편한 지점을 짚어 개선안을 제안하고 구현했습니다.
2025.10 ~ 2026.08
질문 하나에 워크플로우가 10~30초 실행되는 동안 실행 계획, 노드 진행, 답변, 참고 문서를 함께 보여줘야 했습니다. 이후 근거 자료, 중단, 테스트 채팅 같은 요구가 계속 더해졌습니다.
📝 SSE 이벤트 프로토콜로 AI 채팅 스트리밍 설계하기 →
2026.06 ~ 2026.08
eXemble은 같은 제품을 여러 고객사 서버에 설치하지만, 고객사마다 계약한 기능이 달라 보여줄 메뉴도 달라야 했습니다. 처음에는 고객사마다 레포나 브랜치를 따로 두고 대응해 같은 수정을 여러 번 반영해야 했고, 어느 고객사에 무엇이 들어갔는지 추적하기 어려웠습니다. 한 레포로 합친 뒤에도 고객사별 차이를 코드와 환경 변수에 적어두는 방식이라, 고객사가 늘거나 메뉴 구성이 바뀔 때마다 코드를 고치고 다시 빌드해야 했습니다.
2025.09 ~ 현재
AI 코딩 도구를 각자 쓰는 데서 멈추지 않고, 팀이 같은 규칙으로 쓰는 환경을 만드는 데 집중했습니다.
📝 QA도, 시간도 없던 팀이 AI Agent로 테스트 자동화를 정착시킨 방법 →
스프린트마다 PO와 범위를 조율하고 팀원의 경험을 고려해 업무를 나눴습니다. 주간 기술 공유 세션에서 각자 만든 기능의 배경과 기술 결정을 나눴고, 코드 리뷰와 기술 공유로 동료 추천을 받아 사내 땡큐 어워즈를 받았습니다.
사내 여러 제품이 쓰는 디자인 시스템의 유지보수와 컴포넌트 개발에 기여하고 있습니다. 한 화면의 요구를 그 화면 안에서 우회하지 않고 다른 제품도 쓸 수 있는 공용 컴포넌트로 만드는 것을 기준으로 삼았고, 지금은 코어를 Radix UI에서 Base UI로 전환하는 작업을 주도하고 있습니다.
출시 일정이 급박한 상황에서 담당 페이지들이 개발 흐름 후반부에 있어, 그대로 두면 일정 안에 출시하기 어려웠습니다. 각 화면에 필요한 정보를 정리해 API 인터페이스를 먼저 설계하고 백엔드에 전달했고, 덕분에 프론트엔드와 백엔드가 병렬로 개발할 수 있었습니다.
상대방이 어디에 있든 실시간으로 송금·수취할 수 있는 글로벌 e-wallet 서비스.
Next.js TypeScript Emotion.js Recoil
새 결제 수단이 추가될 때마다 전용 페이지와 컴포넌트를 새로 만들어야 해서, 협력사가 늘수록 관리할 페이지도 계속 늘었습니다. 결제 수단을 신용카드·계좌이체·대체 결제 수단(APM) 카테고리로 묶어 카테고리별 표준 흐름을 설계하고, 서버 데이터에 따라 화면이 구성되는 구조로 재설계했습니다.
전체 페이지 수 70% 축소, 새 결제 수단은 프론트엔드 코드 수정 없이 추가 가능
결제 수단마다 입력받을 정보가 많아, 카드 선택 → 금액 입력 → 결제 진행처럼 여러 단계로 나뉜 화면이 많았습니다. 단계 사이의 입력값 유지와 단계 이동을 한곳에서 관리하는 useFunnel 커스텀 훅을 만들었고, URL로 중간 단계에 바로 진입하는 것도 막았습니다.
외부 서비스와 계정을 연동하는 기능을 새 API 스펙에 맞춰 다시 만들어야 했는데, 성공·실패 케이스가 많은 데 비해 문서와 히스토리가 없어 코드만으로 동작을 파악해야 했습니다. 기존 기능을 단계별로 실행하고 코드를 분석해, 외부 서비스 창이 닫혀 서류 제출이 누락되는 경우 같은 실패 케이스까지 상태 다이어그램으로 그려 팀 위키에 공유했습니다.
팀원들이 다이어그램을 기준으로 구현·리뷰하면서 예외 처리 코드를 실수로 지우는 일을 막을 수 있게 되어, 이후 복잡한 기능 개발의 팀 표준 절차로 채택
메인 페이지와 마이페이지가 서로 다른 서브도메인에 있는데 인증 정보를 브라우저 스토리지에 저장하고 있어, 두 서비스가 로그인 상태를 공유할 수 없었습니다. 쿠키 기반 인증으로 전환하고 저장 값을 암호화해, 서브도메인 간 로그인을 공유하면서 보안도 강화했습니다. 또 페이지를 이동할 때마다 호출하던 2단계 인증 확인 API는 토큰이 바뀔 때만 갱신하는 전역 상태로 바꿔 없앴습니다.
사용자가 SSO 계정 연동을 요청한 직후 페이지를 벗어나면, 진행 중이던 API 요청이 함께 취소돼 연동이 실패했습니다. fetch의 keepalive 옵션을 적용해, 페이지를 떠나도 요청이 끝까지 전송되어 연동이 완료되는 구조로 바꿨습니다.
국가 선택 화면에서 국기 이미지 260개를 하나씩 요청해 페이지 로딩이 느렸습니다. 국기를 한 파일로 합치는 SVG 스프라이트 기법을 도입하고, 로컬과 S3 환경에서 모두 쓸 수 있는 스프라이트 이미지 생성 스크립트를 만들어 적용했습니다.
이미지 요청 횟수 260회 → 1회
메인 페이지 이미지를 WebP 형식으로 변환하고, 화면 밖 이미지에는 지연 로딩을 적용했습니다. WebP를 지원하지 않는 브라우저에는 picture 태그로 PNG를 대신 보여줘 호환성도 유지했습니다.
모바일 Lighthouse 점수 26 → 72
React 17 · Node 16 환경의 기능 제약을 해소하기 위해 React 18로 업그레이드했습니다. Docker로 Node 20 환경을 먼저 구성한 뒤 버전을 올렸고, React Router · React Query 등 주요 라이브러리의 호환성 문제를 해결했습니다.
파트너사 이용 중 발생한 손실 금액 일부를 환급해 주는 캐시백 서비스.
Node 16 Zustand next-i18next
기존에는 페이지에 들어간 뒤 클라이언트에서 권한을 확인해, 권한이 없는 화면이 잠깐 보였다가 다른 페이지로 이동하는 문제가 있었습니다. Next.js middleware를 도입해 페이지 진입 전에 서버에서 권한을 확인하는 구조로 바꿔, 화면 깜빡임과 동시성 문제를 함께 해결했습니다.
빌드할 때마다 번역 API가 호출되어 서버에 부하를 주고 있었습니다. 번역 데이터 수집 스크립트를 만들어 CI/CD 파이프라인에서만 실행되는 구조로 바꿔, 불필요한 번역 API 호출을 없앴습니다.
PDF로 관리하던 API 문서를 MDX 기반 웹 페이지로 전환했습니다. 정확한 검색어를 몰라도 원하는 문서를 찾을 수 있도록 퍼지 검색을 넣고, 검색 결과 키보드 이동과 전역 단축키(cmd+k), ARIA 속성을 더해 키보드만으로도 쓸 수 있는 문서 검색을 구현했습니다.
TypeScript Next.js App Router fuse.js
마케팅팀이 eDM HTML이 필요할 때마다 개발자가 직접 작성해야 했고, 요청 빈도가 높아 개발 일정에 영향을 주고 있었습니다. 요청을 그때그때 처리하는 대신 비개발자가 콘텐츠를 직접 만들 수 있는 빌더를 제안·개발했습니다. 다단 레이아웃과 이미지·텍스트 블록을 드래그 앤 드롭으로 배치하고, HTML 미리보기와 직접 편집을 함께 지원했습니다.
마케팅팀이 eDM을 자체적으로 제작할 수 있게 되어, 반복 요청에 쓰던 프론트엔드 리소스를 다른 작업에 투입
깃허브 활동으로 나만의 귀여운 펫을 키워보세요. 매일 커밋하고 PR을 올리면서 펫이 성장하고 레벨업하는 재미를 느낄 수 있습니다.
동료의 익명 피드백으로 자신의 성향과 장단점 등을 파악해요. 나의 강점은 살리고, 약점은 보완하기 위한 익명의 피드백 수집 및 통계 서비스.
IT 연합 동아리 넥스터즈 29기 프론트엔드 개발자, 최우수상 수상
글쓰는 또라이(글또) 10기 활동
디프만 14기 인사부 운영진으로 활동, 14기 인원 모집 및 면접 진행, 디프만 14기 웹 페이지 개발 · 10MM팀 팀장 및 프론트엔드 개발자로 활동
'디자이너와 프로그래머가 만났을 때', 16주에 걸쳐 서비스 기획부터 론칭까지 함께 경험하는 성장추구형 커뮤니티에서 프론트엔드 개발자로 활동 · 디프만 13기에서 대상 수상 · 빠른 1차 MVP 배포 후 2차 MVP 배포를 통해 정식 출시 3일 만에 사용자 1300명 달성
충남대학교 교내 웹 동아리원. 2021~2022의 2년간 임원 활동
시니어 개발자 테오가 주최하는 5일 동안의 구글 스프린트 활동
컴퓨터공학과 전공
코드 리뷰·기술 공유로 동료 추천을 받아 수상
IT 연합 동아리 넥스터즈 29기 팀 프로젝트로 최우수상 수상
IT 연합 동아리 Depromeet 14기에서 ”10MM” 프로젝트로 최우수상 수상
”autoWaste” 프로젝트로 JAKA track 2nd winner 수상
IT 연합 동아리 Depromeet 13기에서 ”Na lab” 프로젝트로 대상 수상
”오직 나만을 위한 맛집 검색” PREAT 프로젝트로 대상 수상
“이것도 나고이것도 나야.” METAMON 서비스로 우수상 수상
SCRAP 프로젝트로 참가, 장려상 수상
Next.js 공식문서 페이지 번역, 01-installation 담당 · merged된 PR
ark 공식문서 스타일 버그 수정 · merged된 PR
리액트 공식문서 페이지 번역 · merged된 PR · 리액트 공식 문서 페이지