Values
끝까지 파고들어 원인을 잡습니다.
- •
재현되지 않는 버그일수록 승부욕이 생깁니다. 로그를 뒤지고 커밋을 되짚으며, 근본 원인을 찾을 때까지 놓지 않는 끈기가 저의 무기입니다.
- •
'일단 되니까 넘어가자'를 경계합니다. 임시방편으로 덮은 코드는 미래의 비용이 된다고 생각해, 왜 이 문제가 생겼는지 이해하고 넘어갑니다.
어제의 코드보다 나은 코드를 씁니다.
- •
성장은 멈추면 도태되는 것이라 생각합니다. 새로운 패턴을 학습하고, 예전 코드를 다시 보며 '지금이라면 이렇게 짰을 텐데'를 되새깁니다.
- •
리뷰 피드백과 제 실수를 기록으로 남깁니다. 같은 실수를 반복하지 않도록 배운 것을 체화하는 데 집중합니다.
반복은 자동화하고, 아이디어는 코드로 만듭니다.
- •
좋은 생각도 실행되지 않으면 아이디어로 끝난다고 믿습니다. 머릿속 구상을 직접 동작하는 서비스로 구현하고, 실제 사용자를 모아 세상에 내놓는 과정을 즐깁니다.
- •
같은 작업을 세 번 반복하고 있다면 자동화의 신호라 생각합니다. 손이 많이 가는 작업을 스크립트로 만들어 팀과 저의 시간을 아낍니다.
- •
회의에서 나온 구상을 바로 프로토타입으로 찍어보며, 팀이 눈으로 확인하고 논의할 수 있게 만듭니다.
Experience
경력
팀오투 (TeamO2)
2024.05 — 2024.11
프론트엔드 개발자
·정규직
카모아 — 렌트카 플랫폼
React TypeScript Redux Webpack5 Pug Vanilla JS - ▸ Vanilla JS 레거시 코드를 React로 마이그레이션, 재사용 가능한 컴포넌트 구조 수립
- ▸ 기존 시스템 내 동작 오류 원인 분석 및 수정
CNAI
2022.10 — 2024.05
프론트엔드 개발자
·정규직
식단 관리 앱 / 영양사 관리 웹
Remix React Native TypeScript Jotai Storybook JavaScript - ▸ 영양사 관리 웹을 처음부터 독립적으로 구축 — 프레임워크 선정(Remix), 아키텍처 설계, 전체 구현 및 유지보수까지 단독 진행
- ▸ Android / iOS Code Push 연동으로 UI 변경 사항을 앱 스토어 배포 없이 즉시 반영되도록 자동화
- ▸ 외부 AI 서비스를 자사 AI 기술로 전환, 기존 시스템 구조 분석 및 요구사항 파악
- ▸ 사용자 설문 페이지 및 관리자 페이지 구조 설계·구현·유지보수
- ▸ React Native 기반 크로스 플랫폼 앱을 설계부터 구축, QA 리스트 관리 및 지속 유지보수
- ▸ 저칼로리 맞춤 영양소 분석 및 환자 식사 기록 뷰어 기능 구현
- ▸ 키오스크 공통 템플릿을 구조화해 고객사별 반복 구현 작업을 줄이고 납품 속도를 단축
- ▸ 개발 과정에서 겪은 문제와 해결 방식을 정리한 기술 회고록 작성
필터링 속도 5s → 2.5s 개선
Remix action 함수는 form 내 모든 필드 변경을 일괄 처리합니다. 필터 조건을 hidden input으로 관리하던 구조에서, 조건이 바뀔 때마다 검색 로직이 의도치 않게 중복 실행되는 문제가 있었습니다. sessionStorage에 이전 검색 상태를 캐싱해 중복 실행을 차단하고, 필터링 응답 속도를 5초에서 2.5초로 단축했습니다.
컴포넌트-서버 간 통신 구조 정립
자식 컴포넌트에서 action 없이 Prisma와 직접 통신해야 하는 케이스가 있었습니다. Remix routes에 경량 API 파일을 분리하고 axios로 요청을 라우팅하는 패턴을 정립해, 컴포넌트 구조를 손상시키지 않고 서버 접근 문제를 해결했습니다.
Storybook 기반 컴포넌트 설계 패턴 구축
앱과 관리 웹을 동시에 개발하면서 동일한 UI 요소가 두 플랫폼에 걸쳐 반복 사용되는 상황이 많았습니다. Storybook을 도입해 버튼, 인풋, 카드 등 핵심 컴포넌트를 독립적으로 개발하고 각 상태(기본·비활성·에러 등)를 Story로 정의했습니다. 이를 통해 컴포넌트의 재사용 범위를 명확히 하고, 디자이너·개발자 간 UI 기준을 문서 형태로 공유할 수 있는 환경을 만들었습니다. 개발 중 발생하는 스타일 회귀도 Storybook에서 시각적으로 바로 확인할 수 있어 QA 부담이 줄었습니다.
키오스크 개발
React TypeScript Electron - ▸ 고객사별 키오스크 UI 구현 및 비즈니스 로직 연결
- ▸ 공통 템플릿을 구조화해 고객사마다 반복되던 구현 작업을 줄이고 납품 속도를 단축
- ▸ 고객 시연을 위해 태블릿·모바일 반응형 대응 — 전시·현장에서 실기기로 즉시 시연 가능
- ▸ 한국어·영어 전환 지원으로 외국어 사용 고객사 납품 대응
인터랙티브 트리 구조 키오스크 템플릿 설계
납품마다 유사한 구조를 처음부터 다시 구현하는 비효율을 해소하기 위해 재사용 가능한 공통 템플릿을 설계했습니다. 화면 중앙에는 AI 휴먼 영상이 재생되며 사용자에게 안내 멘트를 제공하고, 사용자가 항목을 누르면 트리 구조로 분기가 생성되어 각 섹션으로 전환되는 방식입니다. 분기 구조는 JSON 설정만으로 노드와 연결 관계를 정의할 수 있도록 설계해, 고객사별 메뉴 구성이 달라지더라도 템플릿 코드 수정 없이 설정만으로 대응할 수 있게 했습니다. 한국어·영어 전환 역시 JSON에 언어별 텍스트를 정의하면 UI 전체에 즉시 반영되는 구조로, 별도 코드 수정 없이 다국어를 지원했습니다.
태블릿·모바일 반응형 대응
키오스크 UI는 고정 해상도 환경을 전제했지만, 고객 시연 현장에서 태블릿이나 스마트폰으로도 동작해야 하는 요구가 있었습니다. 뷰포트 크기에 따라 레이아웃과 터치 인터랙션이 자연스럽게 조정되도록 반응형 처리를 적용해, 별도 기기를 준비하지 않고도 현장에서 실기기 시연이 가능해졌습니다.
야구 팬 플랫폼
jQuery Vanilla JS - ▸ 티켓 사이트 정보와 플랫폼 데이터가 불일치하던 문제 원인 파악 및 수정
- ▸ 회원 티켓 구매 시 포인트가 정상 지급되지 않던 로직 오류 수정
- ▸ 화면 UI 퍼블리싱 및 비즈니스 로직 연결
- ▸ 아이핀·PASS 인증 오류 해결
- ▸ Google Play 정책 위반으로 앱이 스토어에서 내려간 이슈 대응 — 개인정보 처리방침 미비가 원인임을 파악하고 수집 항목 명시, UI 접근성 개선, 데이터 보안 설문지 재작성으로 복구
이벤트 추첨 시스템 재설계
기존 로직은 이전에 당첨된 이력이 있는 사용자를 추첨 대상에서 제외하는 방식이었습니다. 이 때문에 당첨 확률이 구매 이력에 따라 달라지는 공정성 문제가 있었고, 반복 구매 사용자일수록 오히려 불이익을 받는 역설적인 구조였습니다. 모든 티켓 구매자를 동등한 조건으로 포함하는 랜덤 추첨 시스템으로 재설계해 공정성을 확보했습니다.
추첨 명단 엑셀 업로드 자동화
기존에는 추첨 대상 명단을 관리자가 백엔드 시스템에 직접 수작업으로 입력해야 했습니다. 엑셀 파일을 업로드하면 데이터를 파싱해 백엔드 서버에 자동으로 전송하는 기능을 구현해, 명단 등록 과정에서 발생하던 수동 작업과 입력 오류를 줄였습니다. 기존에 하루 이틀씩 소요되던 이벤트 명단 관리 작업이 한 시간 안에 완료될 수 있게 되었고, 야구 플랫폼 관계자로부터 직접 긍정적인 피드백을 받았습니다.
멤버십 회원가입 자동화
기존에는 관리자가 백엔드 시스템에 멤버십 코드를 직접 입력한 뒤 사용자에게 전달하는 수동 방식으로 운영됐습니다. 백엔드에서 코드를 자동 생성·발급하는 로직으로 전환해, 관리자 개입 없이 가입 시 코드가 자동 발송되도록 개선했습니다.
학력
광주소프트웨어 마이스터고등학교
2020.03 — 2023.01
소프트웨어 개발과 · 졸업
Awards
Certifications
Skills
Frontend
State & Tooling
Etc
Projects
개인 포트폴리오 & 기술 블로그
Featured2025 — 현재
Astro SSG로 구축한 개인 포트폴리오 사이트. Matter.js 물리 시뮬레이션 Hero, Web Animations API 헤드라인 사이클링, MDX 기반 블로그, 클라이언트 사이드 페이지네이션을 포함합니다.
Toonify
2025
인스타그램에 연재 중인 인스타툰의 새 에피소드를 자동 감지하고 푸시 알림으로 알려주는 React Native 앱. GitHub Actions 배치로 1시간마다 업데이트를 체크합니다.
CrossStitch
Featured2025
GitHub 커밋 기록으로 20×20 픽셀 아트를 만들고 README 카드로 삽입할 수 있는 웹 서비스. CHALLENGE 모드에서는 실제 커밋 수만큼만 셀을 채울 수 있어 커밋 동기를 자극합니다.
Contact