증명사진2.jpg

유 동 우

디자인과 기술의 조화를 실현하는 프론트엔드 개발자 유동우 입니다.

GitHub. https://github.com/devwoodie
Blog. https://www.devwoodie.com

Frontend Next React TypeScript JavaScript Git Slack

👋 Introduce


협업을 통해 최선의 결과물을 도출해 내는 것을 좋아하며 맡은 일에 후회 없도록 마무리하는 것에 뿌듯함을 느낍니다. 현재 개발 트렌드를 배우기 위해 개발 콘퍼런스에 끊임없이 참여하여 개발자로서 새로운 것을 배우는 욕심과 그에 맞게 성장하고자 하는 목표를 갖고 있습니다.

🧑‍💻 Career


[ 잇올 ]

2025.02 ~

AI 기술을 접목해서 학습 관리 서비스를 진행하는 에듀 테크 기업

<aside> 📄

잇올 어드민 - 합격증 검수/통계 (진행 중) 2025.11 ~

수집한 합격증의 분류 상태 점검 및 통계 데이터 시각화 기능 FE 개발

  1. 서버 상태 관리 및 데이터 동기화 아키텍처 설계
    1. React Query 기반 데이터 관리: useQuery(useCertificateVerificationsStaffDetail)와 useMutation(useCertificateVerificationsStaffMemo) 커스텀 훅을 활용하여 서버 데이터의 조회, 캐싱, 수정 로직을 분리했습니다. 이를 통해 컴포넌트는 UI 렌더링에만 집중하고, 데이터 관리의 복잡성을 대폭 감소시켰습니다.
    2. 데이터 정합성 유지: 메모 저장 또는 검수 결과 확정/수정 시, 뮤테이션의 onSuccess 콜백에서 연관된 쿼리(목록, 상세)의 refetch 함수를 호출하여 화면 간 데이터 불일치 문제를 해결하고 항상 최신 상태를 유지하도록 설계했습니다.
    3. 비동기 로딩 및 에러 처리: 데이터 로딩 상태에 따른 조건부 렌더링을 적용하여 비동기 데이터가 도착하기 전 발생할 수 있는 런타임 에러를 방지했으며, 뮤테이션의 onError 콜백을 통해 API 실패 시 사용자에게 즉각적인 피드백(팝업)을 제공하는 안정적인 로직을 구현했습니다.
  2. 상태 기반 동적 UI 및 비즈니스 로직 구현
    1. 상태에 따른 UI 제어: 검수 상태(verificationStatus) 값(예: PENDING_CONFIRMATION, DUPLICATED)에 따라 UI 컴포넌트의 속성을 동적으로 제어했습니다. 예를 들어, 특정 상태에서는 메모 입력창을 disabled 처리하고, 다른 상태에서는 버튼의 라벨('확정'/'수정')과 색상(variant)을 변경하여 사용자의 오조작을 방지하고 명확한 가이드를 제공했습니다.
    2. 관심사 분리를 통한 상태 관리: 좌측 패널의 선택 ID(selectedId), 필터(statusFilter)와 우측 패널의 검수 결과(results), 메모(staffMemo) 등 지역 상태를 useState로 관리하고, 필요한 상태와 핸들러만 Props로 하위 컴포넌트에 전달하는 단방향 데이터 흐름을 적용하여 컴포넌트 간 의존성을 낮추고 예측 가능한 상태 관리를 구현했습니다.
    3. 컨텍스트 API를 활용한 공통 기능 추상화: usePopup 커스텀 훅을 사용하여 메모 저장 결과 알림, 화면 종료 확인 등 반복적으로 사용되는 팝업 호출 로직을 표준화하고, 컴포넌트 코드의 가독성과 재사용성을 높였습니다.
  3. 사용자 경험(UX) 및 상호작용 최적화
    1. 워크플로우 자동화: useEffect 훅을 사용하여 목록 데이터 로드 시 첫 번째 항목을 자동으로 선택하고, 필터 변경으로 인해 선택된 항목이 목록에서 사라질 경우 유효한 첫 항목으로 재선택하는 로직을 구현하여 사용자의 불필요한 클릭을 최소화했습니다.
    2. 시각적 피드백 강화: 자동 스크롤: useRef와 scrollIntoView를 결합하여 긴 목록에서도 현재 선택된 항목이 항상 화면 중앙에 보이도록 하여 가시성을 확보했습니다.
    3. 실시간 입력 카운터: 메모 입력 시 maxLength와 함께 현재 글자 수를 실시간으로 표시하여 사용자에게 입력 제한에 대한 명확한 피드백을 제공했습니다.
    4. 데이터 손실 방지: 화면 종료 시 저장되지 않은 데이터가 있을 수 있음을 경고하는 확인(Confirm) 팝업을 구현하여, 사용자의 실수로 인한 작업 내용 소실을 방지하고 서비스 신뢰도를 향상시켰습니다.

React.js, TypeScript, Tailwind

</aside>

<aside> 📄

잇올 스파르타 - 합격증 등록 서비스 2025.10

본인인증 후 학생이 직접 합격증을 등록하는 모바일 웹 서비스 FE 개발

Next.js, TypeScript, Tailwind

</aside>

<aside> 📄

잇올 어드민 - 합격증 수집/등록 2025.09 ~ 2025.11

합격증을 수집하고 분류하는 어드민 기능 FE 개발

React.js, TypeScript, Tailwind

</aside>

<aside> 📄

잇올 몰입형 기숙학원 홈페이지 2025.04 ~ 2025.10

Next.js, TypeScript, Tailwind

</aside>

<aside> 📄

6월 평가원 모의고사 2025.03 ~ 2025.04

Next.js, TypeScript

</aside>

[ 유니버스 AI ]

2024.07 ~ 2025.01

얼굴 인식 기술을 기반으로 편리하고 안전한 결제 솔루션을 제공하는 기업

<aside> 📄

UNIVS Studio (유니버스 스튜디오) 2024.11 ~ 2025.01

Cloud API, SDK 통합 다운로드 가능한 서비스 FE 개발

Next.js, TypeScript, Next-Auth, Tanstack-Query, Zustand, Material-ui, crypto-js, dayjs

</aside>

<aside> 📄

UNIVS Guard (유니버스 가드) 2024.07 ~ 2025.01

AI CCTV 얼굴, 몸 분석/매칭하는 서비스 FE 개발

Next.js, TypeScript, Next-ui, Tanstack-Query, recoil, i18next, ol, crypto-js, dayjs, recharts

</aside>