Front-End Developer
- 세상과 소통하기를 원하고, 아름다운 것을 사랑하는 개발자 엄문주 입니다.
Contact 🔎
Introduce 🌼
- 세상과 소통하기를 원하고, 아름다운 것을 사랑하는 개발자
- Web, Mobile, Desktop 전반에서 다양한 프로젝트를 수행하며, 특히 React 생태계 전반에 대한 깊은 이해를 바탕으로 문제 해결에 집중해왔습니다. 단순히 화면을 구현하는 것이 아니라, 복잡한 문제를 정의하고 해결하여 비즈니스 임팩트를 만들어내는 과정을 즐깁니다.
- 기획 단계부터 논의에 참여하며, 문제를 발견하고 해결책을 제시하는 것을 좋아합니다. 협업을 통해 더 나은 결과를 만들어내는 경험을 소중히 여기며, “같이”라는 가치를 가장 중요하게 생각합니다.
Work Experience 📑
- 브이디크럭스(2021년 3월 ~ )
- 매장관리 솔루션(POS & KIOSK)를 제공하는 소프트웨어 개발 회사
- 프론트엔드 앱/웹/키오스크 개발
- 요아정 앱(React Native) 리뉴얼 개발 진행중(결제 쿠폰 연동, UI/UX 전면 개선)
- 요아정 키오스크 리뉴얼 개발 진행중(Electron + React + Express)
- 배리어프리 키오스크(Electron + React + C++) 개발 및 배포(NIA 인증 승인, 매장 운영중)
- 페이플러그앱을 React Native와 Java를 이용하여 개발하였습니다.
- Bitbucket & Github CI/CD 구성
- 브이디김대표앱을 React Native를 이용하여 개발하였습니다.
- POS와 KIOSK를 관리할 수 있는 어드민 페이지를 개발하였습니다.
- Electron, React, sqlite3, Express를 이용하여 KIOSK를 개발하였습니다.
- React + PWA 이용하여 웨이팅 서비스를 이용할 수 있는 태블릿향의 웹앱을 개발하였습니다.
- 공통 UI 라이브러리를 개발하였습니다.
- 위티(주) (2020년 12월 ~ 2021년 01월)
- 인공지능 집 찾기 서비스 "집현전"을 운영하고 있는 소프트웨어 개발 회사입니다.
- 프론트엔드 웹 개발
- 서브프로젝트로 진행하고 있는 당구포털 웹사이트의 어드민페이지 제작을 담당하였습니다.
Career Description 📑
- 배리어프리 키오스크(Electron + React + C++)
- 문제 상황:
- 내년부터 배리어프리 키오스크 법제화가 예정되어 있어, 장애인·고령자 등 디지털 소외계층도 쉽게 사용할 수 있는 키오스크를 반드시 개발해야 하는 상황이었습니다. 기존 키오스크는 글자 크기, 조작 편의성, 음성 안내 등에서 접근성을 충족하지 못했습니다.
- 역할 해결:
- React + Electron 기반으로 UI를 개선, 고대비 모드 제공.
- 하드웨어 스펙에 맞춘 방향키 제어: 각 UI 컴포넌트에 포커스를 줄 수 있도록 설계하여, 터치가 어려운 사용자가 방향키로 모든 조작 가능.
- 일부 디바이스에서 음량 제어가 되지 않는 문제 확인 → C++로 DLL을 직접 개발하고, Electron 환경에서는
naffi
를 통해 동적으로 DLL을 호출하여 음성 안내 기능 구현.
- 실제 매장 환경에 맞게 안정성을 검증하고 배포.
- 코멘트
- 모든 디바이스를 대응하려다 보니 React 라이브러리만으로는 한계가 있었습니다. 특히 일부 하드웨어에서는 음량 조절이 불가능했기 때문에, 간단한 코드지만 C++과 Windows Build Tool을 이용해 직접 DLL을 만들어 해결했습니다.
- 요아정앱 개발(ReactNative)
- 문제 상황:
- 요구르트아이스크림정석에서 사용할 모바일오더 새롭게 개발 니즈 발생
- 기존 앱의 UI/UX 노후화로 사용자 경험 저하, 재주문율 저조.
- 역할/해결: 앱 리뉴얼 전체 구조 설계 및 개발 리딩.
- React Native 기반으로 IOS/Android 동시 대응 앱 개발.
- KSNET PG, KT 기프티콘, 슈퍼콘 연동.
- 코멘트
- 처음 기획된 디자인은 사용자 친화적이지 않았습니다. 글자 크기, 광고/멤버십 노출 방식 등을 개선하면서, 개발자가 단순히 기능을 구현하는 것을 넘어 사용자의 시각에서 문제를 바라보고 설계하는 과정이 중요하다는 걸 배웠습니다. 앱은 기능 그 자체보다 사용자가 느끼는 경험이 핵심이라는 점을 다시 한번 크게 체감했습니다.
- 요아정 키오스크(Electron + React + Sqlite3 + Express)
- 문제 상황:
- 옵션이 많은 상품에서 UI/UX 불편 발생, 옵션 실시간 반영 불가, 모바일 상품권(슈퍼콘, 기프티쇼) 결제 연동 필요.
- 역할/해결: 아키텍쳐 설계 및 실시간 옵션 처리
- 키오스크 내부에 Express 서버 구성, SSE로 클라우드와 실시간 옵션 동기화
- 상품·옵션 데이터 구조 개편: 상품/옵션 정보가 많아 키오스크 단말에서 직접 처리 시 성능 저하 문제가 발생 → 상품정보는 Sqlite 로컬 DB에서 불러오고, 실시간 업데이트는 키오스크가 아닌 Express 서버에서만 처리하도록 설계.
- serialport 활용해 입력 장치 및 QR 스캐너 제어.
- 모바일 상품권 결제 모듈 통합.
- 코멘트
- 단순 UI 개선을 넘어, 데이터 구조와 흐름을 어떻게 설계하느냐가 UX와 안정성을 좌우한다는 점을 배웠습니다. 복잡한 옵션을 실시간으로 다루는 경험은 제게 아키텍처적 사고의 중요성을 크게 일깨워주었습니다.
- 프론트엔드팀 리더 (2023. 07. 01 ~ )
- 문제 상황:
- 팀 내 개발 스타일이 일관되지 않고, 문서화 코드 리뷰 문화가 부족해 협업 효율이 떨이지는 상황
- 역할/해결: 프론트엔드 팀 리더로서 팀 문화와 협업 체계 개선 주도.
- 팀원이 자유롭게 의견을 나누고 토론할 수 있는 환경 조성.
- 코드 리뷰 프로세스 활성화
- 코멘트
- 단순히 코드를 잘 짜는 것보다, 팀이 일하는 방식을 바꾸는 게 더 큰 임팩트를 낼 수 있다는 걸 배웠습니다. 특히 문서화·코드리뷰 문화는 시간이 지날수록 생산성을 눈에 띄게 높여주었습니다.
- 페이플러그앱 개발(ReactNative + Java)
- 문제 상황:
- 점주들이 휴대폰만으로 결제를 처리할 수 있는 수요 발생.
- 실제 현장에서 포스(POS)가 갑자기 고장 나거나, 푸드트럭처럼 포스를 설치하기 어려운 매장에서 기기 비용 없이 안드로이드 폰만으로 결제가 가능해야 하는 문제.
- 역할/해결: 프론트엔드 개발 및 네이티브 모듈 구현
- React Native + Java 기반으로 앱 개발, 반응형으로 모든 기기 대응.
- Java로 React Native에서 활용 가능한 모듈 직접 개발.
- 결제 모듈 연동 및 구현.
- QR/바코드 스캐너 기능 개발.
- 달력/캘린더 컴포넌트 개발.
- PlayStore 앱등록 및 출시
- 코멘트
- 이 프로젝트는 제가 처음으로 bare React Native를 다루며 네이티브 개발을 경험한 계기였습니다. 특히 Java를 이용해 React Native의 브릿지를 직접 연결해보면서, package와 module 개발, 그리고 VCat 연동을 통해 네이티브와 RN을 연결하는 과정을 깊이 이해할 수 있었습니다. 프론트엔드와 네이티브의 경계를 넘는 개발 경험이 저에게 큰 배움이 되었습니다.
- CI/CD 자동화 (Bitbucket & Github Actions)
- 문제 상황:
- 수동 배포로 인한 오류와 리소스 낭비, 멀티 플랫폼 환경(Web, Mobile, Desktop)에서 일관된 배포 체계 필요.
- 역할/해결: 프론트엔드 전체 CI/CD 파이프라인 설계 및 구축
- Bitbucket & GitHub 기반 프로젝트 CI/CD 구성.
- React Native (모바일):
- Electron(데스크탑 키오스크):
- 웹 서비스(어드민 페이지):
- 코멘트
- 브이디김대표앱(ReactNative + Expo)
- 모노레포 & 라이브러리(Lerna + Rollup.js + Yarn berry + StoryBook)