웹/모바일 프론트엔드 엔지니어
박주철
- 직무
- 웹/모바일 프론트엔드 엔지니어
- 주요 경험
- 업무 웹, 하이브리드 앱, Android 연동
신규 화면을 만드는 일과 오래된 시스템을 고치는 일을 함께 경험했습니다. 기능을 한 번에 바꾸기보다 웹, WebView, Android가 맡을 일을 나누고 각 환경에서 직접 실행해 봅니다.
경력
트리포스에서 맡은 일
신규 업무 웹을 구축하고 모바일 출력 앱을 연결했습니다. 차트 편집 도구와 AI 문서화 도구를 만들었고, 레거시 웹과 Android 앱의 오류를 고쳐 운영에 반영했습니다.
주요 경험
물류 운영 웹과 모바일 출력
조회, 예약, Excel, 출력 요청을 웹에 구현하고 WebView 요청 뒤의 권한, Bluetooth, 라벨 출력은 Android 앱에서 처리했습니다.
차트 편집 도구
차트마다 쓸 수 있는 옵션을 나누고 데이터 필드, 미리보기, 설정 화면이 같은 편집 상태를 보도록 만들었습니다.
AI 문서화 도구
저장소를 먼저 읽고 초안을 만든 뒤 검수용 워크북에서 필요한 부분만 다시 고치는 흐름을 구현했습니다.
생활정보 서비스 운영
필수 정보의 로딩과 캐시를 손보고, 바뀐 파일만 배포한 뒤 해시와 주요 화면으로 반영 결과를 점검했습니다.
추가 업무
Android 호환성, 금융 업무 웹, 하이브리드 보안, 현장 단말, 레거시 웹 패널 작업은 8쪽에 짧게 정리했습니다.
주요 업무 01 웹
물류 운영 웹
조회부터 예약, Excel, 출력 요청까지 이어지는 운영 화면을 만들고 첫 화면에 함께 실리던 무거운 코드를 덜어냈습니다.
문제
예약과 다건 처리, 주소록, Excel 미리보기, 출력 요청이 한 화면 흐름으로 이어졌습니다. 여기에 스프레드시트 코드까지 첫 진입에 포함돼 업무를 시작하기 전부터 내려받아야 할 JavaScript가 컸습니다.
내가 한 일
운영 흐름 구현
공통 화면 틀과 표, 모달, 폼 위에 조회, 예약, 다건 처리, 주소 선택, Excel 미리보기와 출력 요청 변환을 연결했습니다.
측정 뒤 지연 로딩 적용
번들 분석 결과를 보고 페이지 라우트와 스프레드시트 라이브러리를 첫 진입에서 뺐습니다. 인증과 API 초기화까지 더 나누는 안은 첫 클릭 부담이 커 적용하지 않았습니다.
기술
- React,
- TypeScript,
- Vite,
- React Router,
- TanStack Query,
- Zustand,
- XLSX,
- Vitest
결과
초기 진입에 필요하지 않은 화면과 Excel 코드를 옮긴 뒤 같은 빌드 산출물에서 초기 JavaScript와 gzip 크기를 다시 비교했습니다.
- 초기 JavaScript
2,405.50 → 616.59 kB
약 74% 감소. 페이지와 스프레드시트 코드 지연 로딩 결과
- gzip 압축 기준
815.10 → 204.38 kB
약 75% 감소. 같은 초기 진입 파일 비교
주요 업무 01 모바일
모바일 출력 브릿지 앱
웹의 출력 요청을 Android 앱으로 받아 권한, Bluetooth 연결, 프린터 명령을 거쳐 실제 라벨이 나오는 데까지 구현했습니다.
문제
웹에서 출력 버튼이 동작해도 장비가 라벨을 출력했다는 뜻은 아닙니다. 웹과 앱의 메시지, Android 권한, Bluetooth 연결, 프린터 SDK 가운데 어디서 멈췄는지 알 수 있어야 했습니다.
내가 한 일
웹과 앱의 역할 구분
업무 화면은 WebView에 두고 출력 데이터 변환, 장비 상태, 프린터 명령은 Android 네이티브 모듈이 맡도록 구현했습니다.
실기기 출력 점검
Android 16/API 36에서 장비 탐색 호출을 추적하고 취소 처리와 Bluetooth 권한을 보완한 뒤 실물 라벨을 출력했습니다.
기술
- Expo,
- React Native,
- Expo Router,
- WebView,
- Android 네이티브 모듈,
- TypeScript,
- Bluetooth
결과
요청 수신과 장비 출력을 따로 점검해 웹 요청 성공이 물리 출력 성공으로 잘못 기록되지 않게 했습니다.
- 모바일 출력 검증
Android 16 / API 36
권한·Bluetooth 연결·실물 라벨 출력 흐름 확인
주요 업무 02 웹 도구
구조화된 차트 편집 UI
데이터 역할과 설정 화면이 실제 미리보기와 어긋나지 않는 편집 흐름을 설계했습니다.
문제
모든 차트에 같은 옵션을 강제하면 설정 화면이 복잡해집니다. 미리보기와 편집 상태가 따로 움직이면 사용자가 현재 결과를 믿기도 어렵습니다.
내가 한 일
모든 차트에 같은 옵션을 붙이는 대신 차트 종류에 따라 필요한 설정을 고르고, 데이터가 바뀔 때 미리보기와 설정 화면이 함께 갱신되게 만들었습니다.
차트에 맞는 설정만 노출
현재 차트에서 쓸 수 있는 옵션만 보여주고 여섯 영역의 설정 패널과 미리보기를 연결했습니다.
편집 상태를 역할별로 구성
데이터 필드, 미리보기 렌더링, 설정 상태가 서로 덮어쓰지 않도록 나누고 하나의 편집 모델을 바라보게 했습니다.
기술
- React,
- TypeScript,
- Vite,
- Chart.js,
- MSW,
- Vitest
결과
옵션 변경, 패널 접기, 드래그 앤 드롭, 툴팁까지 같은 편집 흐름에서 점검했습니다. 작업 속도 향상처럼 측정하지 않은 성과는 적지 않았습니다.
- 데이터·미리보기·설정
상태 동기화
사용자가 고른 데이터 역할과 설정이 실제 렌더 결과에 이어지도록 정렬
- 혼합 차트 미리보기
다시 그리는 범위 축소
불필요한 화면 재생성과 스크롤 흔들림을 줄인 범위로 한정
주요 업무 03 사내 도구
AI 보조 프로젝트 문서화 도구
AI가 문서를 대신 쓰는 구조가 아니라, 근거 수집과 사람 검수를 통제 가능한 흐름으로 만들었습니다.
문제
비정형 자료를 모델에 바로 넘기면 근거와 추측이 섞이기 쉽고, 일부 문서만 보강하고 싶을 때도 전체 산출물이 흔들릴 수 있었습니다.
내가 한 일
AI가 처음부터 문서를 완성한다고 가정하지 않았습니다. 입력 자료와 생성 결과를 사람이 볼 수 있게 두고 수정 범위를 작게 제한했습니다.
저장소를 읽고 먼저 미리보기
규칙으로 모은 파일과 구조 정보를 AI에 보내기 전에 사용자가 확인하도록 했습니다.
검수용 워크북에서 부분 수정
확인한 자료로 요구사항, 기능, 화면 초안을 만들고 선택한 시트와 셀만 다시 작성하도록 구현했습니다.
기술
- Node.js,
- TypeScript,
- React,
- AI API,
- 검수용 워크북 UI,
- xlsx,
- Vitest
결과
자료 수집부터 초안, 워크북 검수, 부분 수정까지 각 단계를 따로 실행해 볼 수 있게 했습니다. 지원하지 않는 항목은 임의로 채우지 않고 사람이 결정할 내용으로 남겼습니다.
- 자료 수집 → 미리보기
근거 우선
규칙 기반 수집 결과를 먼저 확인한 뒤 AI 초안에 사용
- 사람 중심 산출물
검수용 워크북
요구사항·기능·화면 단위를 표로 검토하고 export
- sheet / cell revision
선택 범위 수정
전체 재생성 대신 수정 대상과 보존 문맥을 함께 전달
주요 업무 04 하이브리드 서비스
생활정보 하이브리드 서비스
레거시 웹과 Android WebView 위에서 외부 API, 캐시, 위치 흐름과 운영 반영 절차를 손봤습니다.
문제
여러 외부 API와 기준 데이터 조회가 한 요청 안에 묶이면 일부 지연이 전체 화면 지연으로 번질 수 있었습니다. 운영 반영도 파일 단위로 이뤄져 누락과 설정 노출 위험을 함께 관리해야 했습니다.
내가 한 일
외부 API가 느리거나 실패해도 첫 화면 전체가 멈추지 않도록 로딩 순서를 바꾸고, 캐시가 최신인지 만료됐는지에 따라 사용할 값을 골랐습니다.
필수 정보부터 표시
첫 화면에 필요한 정보와 뒤에 불러올 정보를 나누고 최신 캐시, 만료 캐시, 기준 데이터를 각각 다뤘습니다.
바뀐 파일만 운영 반영
전체 파일을 덮어쓰지 않고 배포 목록과 SHA-256 해시로 대상을 좁힌 뒤 주요 화면을 다시 실행했습니다.
기술
- Spring MVC,
- JSP,
- jQuery,
- Java,
- Android WebView,
- 공공 API 연동,
- SHA-256
결과
서로 다른 날 진행한 두 배포를 합산하지 않았습니다. 각 작업의 파일 수와 해시 결과를 따로 기록했고, 운영 스모크 테스트와 최종 테스트도 별도로 남겼습니다.
- 기본 정보 운영 점검
약 2.85초 → 0.11초
2026-07-08 당시 첫 요청과 캐시 응답 비교
- 대기질 운영 점검
약 2.02초 → 0.07초
2026-07-08 당시 첫 요청과 캐시 응답 비교
- 최종 회귀
131 tests / skipped 1
최종 mvn test로 확인하고 운영 반영 후에는 hash와 smoke를 별도로 확인
추가 업무
유지보수에서 맡은 일
짧은 작업도 빌드가 되는지, 실제 실행이 되는지, 운영에서 되돌릴 수 있는지를 구분해 처리했습니다.
01 레거시 모바일 앱 호환성
Gradle/AGP/JDK/SDK: 빌드 기준선 복구
최신 Android 빌드 정책 대응과 구형 런타임 회귀를 서로 다른 검증 축으로 분리했습니다.
기술
- Android Java,
- Gradle/AGP,
- Android WebView,
- RxJava,
- FileProvider
02 금융 업무 관리 웹
서버 상태 흐름: React Query
금융 업무 화면의 목록, 필터, 모달, 세션 흐름을 React 상태와 서버 상태 흐름으로 옮겼습니다.
기술
- React,
- TypeScript,
- Vite,
- React Router,
- TanStack Query,
- Zustand
03 하이브리드 보안 기능 경계 설계
인증 정보는 서버에서 관리
외부 인증 정보를 클라이언트에 두지 않고 서버 프록시와 WebView QA 경계로 나눴습니다.
기술
- Android WebView,
- Cordova,
- Spring MVC,
- jQuery,
- Java
04 현장 단말 Android 앱
Gradle/JDK 정리: 빌드 복구
운영 서명과 최근 빌드 환경을 분리해 현장 앱을 다시 확인 가능한 상태로 만들었습니다.
기술
- Android Java,
- Gradle/AGP,
- Scanner SDK
05 레거시 웹 패널 분리 기준선
변경 전 영향 지점 지도화
레거시 화면을 바로 나누기 전에 공유 코드, API 규약과 브라우저 지원 범위를 먼저 확인했습니다.
기술
- JSP,
- jQuery,
- 서버 렌더링 웹
프로젝트 01 웹
C. Donghae
72시간 동안 동해선 이용객이 열차와 주변 정보를 한 지도에서 볼 수 있는 웹 서비스를 만들었습니다.


내가 한 일
지도와 외부 데이터 연결
Google Maps의 지도, 장소 검색, 대중교통 경로, 주소 변환과 날씨, 역 정보, 주변 장소 데이터를 한 화면에 연결했습니다.
모바일 지도 화면 구현
지도 정보를 가리지 않도록 드래그 거리와 속도에 따라 높이가 바뀌는 바텀 시트를 구현했습니다.
제한 시간 안의 협업
웹 지원 기능을 비교해 지도 API를 정하고 Swagger 문서를 보며 백엔드 API와 주요 화면을 연결했습니다.
기술
- TypeScript,
- React,
- Next.js,
- Tailwind CSS,
- Google Maps,
- Storybook,
- AWS,
- GitHub Actions,
- Docker
프로젝트 03 개발 도구
AI Agent Playbook
에이전트가 프로젝트 규칙과 이전 작업을 매번 처음부터 찾지 않도록 CLI, 문서 틀, 점검 명령을 묶은 공개 도구입니다.


만든 이유와 범위
규칙과 프로젝트 메모리 분리
반복해서 쓰는 작업 규칙은 스킬과 템플릿으로, 프로젝트에만 필요한 내용은 저장소 안의 메모리로 나눴습니다.
실행 전 결과를 볼 수 있게 구성
CLI 명령과 읽기 전용 MCP 도구를 만들고 파일을 바꾸는 명령에는 실행 전 결과를 보여주는 dry-run을 두었습니다.
공개 배포
npm에서 설치할 수 있는 패키지와 GitHub 저장소로 배포해 다른 프로젝트에서도 같은 흐름을 쓸 수 있게 했습니다.
기술
- JavaScript,
- Node.js,
- GitHub Actions
프로젝트 04–05
Itzip과 Posture Teacher
팀 웹 서비스에서는 편집과 품질 도구를, Android 프로젝트에서는 카메라 프레임과 자세 분석을 맡았습니다.


웹 Itzip
15명 팀에서 프론트엔드 팀장을 맡아 블로그와 Markdown 편집 화면을 구현했습니다. Jest, Storybook, Sentry를 도입해 주요 화면과 오류를 살펴볼 수 있게 했습니다.
기술
- TypeScript,
- React,
- Next.js,
- Tailwind CSS,
- React Spring,
- Jotai,
- Jest,
- Prisma,
- Storybook,
- Postman,
- Sentry,
- AWS,
- Jenkins,
- Docker
Android Posture Teacher
MediaPipe AAR를 Ubuntu에서 빌드해 Android 앱에 넣었습니다. 프로젝트 당시 OpenCV 구현과 비교한 프레임 처리에서 5~10배 높은 FPS 범위를 확인했습니다.
기술
- Java,
- Android,
- Jetpack,
- MediaPipe,
- SQLite
프로필
기술과 연락처
웹 화면과 모바일 앱을 함께 만들었고, Android 장비와 레거시 시스템도 필요한 만큼 직접 다뤘습니다. 기술 이름보다 어느 작업에서 어떻게 썼는지를 포트폴리오와 개인 사이트에 남겼습니다.
기술
언어
TypeScript, JavaScript, Java
웹
React, Next.js, Vite, TanStack Query, Zustand
모바일·하이브리드
React Native, Expo, Android WebView, Gradle
테스트·관측
Vitest, Jest, MSW, Storybook, Sentry
빌드·배포
GitHub Actions, Jenkins, Docker
서버·클라우드
Node.js, Firebase, Spring MVC, AWS
교육과 수상
경상국립대학교 컴퓨터과학과
학점 3.64 / 4.5
프로그래머스 데브코스
Cloud Application Engineering 과정 수료
DIVE 2024 글로벌 데이터 해커톤
부산테크노파크원장상 수상
경남소프트웨어 경진대회
최우수상 수상
연락처
업무의 세부 구현과 점검 기록은 개인 사이트 Work에서, 프로젝트별 화면과 구현 내용은 Projects에서 볼 수 있습니다.

