회계 · 금융처럼 업무 규칙이 복잡한 서비스의 프론트엔드를 주로 만들어 왔습니다. 지금은 일진씨앤에스에서 회계 솔루션의 화면과 일부 백엔드를 개발하고 있습니다.
대표 사례
회사 내부 코드라 공개할 수 없어서, 맥락과 결정을 글로 정리했습니다.
일진씨앤에스 · Syncflo 회계 솔루션 고도화 · 2026.03 – 2026.06
경비 종류가 늘어도 서로 영향을 주지 않는 경비 모듈
맥락
개인경비 · 법인카드 · 유류대 · 출장비 등 여러 경비 도메인을 다루는 자사 회계 솔루션(Syncflo-Accounting)
내 역할
메인 프론트엔드 개발 (기여도 50%). 경비 작성 모듈 아키텍처 리팩토링과 AI 기반 회계 자동화 UI/UX 구축
문제
기존 모듈이 기능별로 공통화되어 결합도가 높았고, 신규 요구사항을 반영하면 다른 경비 화면에 사이드 이펙트가 생길 위험이 있었음
결정
각 경비 도메인을 기능별로 나누고, 핵심 비즈니스 로직에 Vue.js Composable 패턴을 적용해 모듈화. 같은 시기에 AI 기능도 구축: AI Agent 기반 계정과목 추천, 대화형 AI 챗봇 연동, OCR 영수증 데이터 파이프라인 연동과 임시 전표 자동 작성, 전표 작성 가이드용 AI 도움말
결과
코드 복잡도를 줄이고 가독성을 확보. 신규 경비 항목을 추가하거나 유지보수할 때 기존 코드에 영향 없이 대응할 수 있는 구조를 확보. AI 도움말은 사용자 편의성 향상과 문의 건수 절감을 목표로 구현
스택
Vue.js
Nuxt.js
Spring Boot
MariaDB
일진디스플레이 전자결재 자사 솔루션 교체/이관 · 2025.10 – 2026.03
레거시 데이터 구조를 화면이 떠안지 않게 한 결재 시스템 이관
맥락
기존 결재 솔루션을 자사 솔루션으로 교체. 데이터는 레거시 Oracle에 있고 ERP 전표 타입이 계속 추가됨
내 역할
메인 프론트엔드 개발 (기여도 50%). 신규 전표 타입과 입력 폼 개발, Oracle DB 연동에 따른 전표 데이터 스키마 · 매핑 구조 변경 대응
문제
레거시 Oracle 데이터 구조와 신규 솔루션의 폼 스키마가 맞지 않았고, 전표 타입이 늘수록 폼 로직이 비대해져 렌더링 성능과 유지보수가 걱정됨
결정
전표 타입별 세부 저장 항목과 입력 폼 필드를 컴포넌트로 나누고, 백엔드 데이터와 폼 사이에 프론트엔드 데이터 변환(Data Mapping) 레이어를 분리
결과
인건비 전표와 ERP 연동 전표 4종, 총 5종을 구축하고, 레거시 데이터 이관의 안정성을 확보. 데이터 매핑 레이어를 분리해서, 백엔드 스키마가 바뀌어도 프론트엔드 UI가 받는 영향 범위를 최소화
스택
Vue.js
Nuxt.js
프리아이브 · 라이나생명 대고객 디지털채널 재구축 · 2022.05 – 2023.05
여러 인증 수단과 앱 웹뷰를 하나의 흐름으로
맥락
보험사 고객용 웹 · 앱 통합 재구축. 하이브리드 앱 웹뷰 화면이 많고 인증 방식이 다양한 금융 서비스
내 역할
메인 프론트엔드 개발 (기여도 20%). Nuxt 기반 구조 설계, 디렉토리 구조 수립, SSR/CSR 데이터 플로우 정의, Element UI 기반 공통 컴포넌트 모듈화, 인증 · 웹뷰 연동
문제
소셜 · 생체 · 공동인증서 등 인증 방식마다 예외 처리가 달랐고, 웹뷰와 네이티브 앱 사이의 데이터 동기화와 비동기 처리가 복잡했음
결정
인증 방식별 로직을 모듈화해 공통 인증 핸들러로 묶고, Native-JS Bridge 호출 방식(파라미터 전달, 비동기 응답)을 표준화. 공통 API 통신과 에러 처리는 Axios 인터셉터 기반 모듈로 구축
결과
토스 · 카카오 로그인, 휴대폰 본인인증, 생체인증(FIDO), 공동인증서를 단일화된 모듈로 통합해 서비스 안정성을 확보. 브릿지 인터페이스를 표준화해서 앱-웹 연동 기능의 개발 생산성을 높이고 화면 오류율을 줄임
스택
Vue.js
Nuxt.js
Element UI
기능을 만들기 전에 묻는 것
새 요구사항을 받으면 먼저 확인하는 질문들입니다.
이 값은 고객사마다 달라질 수 있나?
달라진다면 코드가 아니라 설정으로 바꿀 수 있게 합니다. — 어드민 설정값으로 지도 엔진을 전환하는 유류대 정산
이 규칙은 화면이 바뀌어도 그대로인가?
그렇다면 화면 밖으로 꺼내 둡니다. — 경비 종류별 Composable 분리
백엔드 구조가 바뀌면 어디까지 고쳐야 하나?
영향 범위가 좁아지도록 경계를 둡니다. — 전자결재 이관의 데이터 변환 레이어
실패하면 어디서 잡히나?
인증과 통신 오류는 한 곳에서 처리되게 합니다. — 공통 인증 핸들러와 Axios 인터셉터
프로젝트
대표 사례 외에 진행한 주요 프로젝트입니다.
일진씨앤에스
2025.03 – 현재 · 1년 8개월
Syncflo 회계 솔루션 구축2025
문제
구축형(On-Premise) 솔루션이라 고객사마다 쓰는 지도 API(Mapbox, 카카오맵 등)가 달랐고, 지도 로직이 바뀔 때마다 메인 솔루션 코드를 고쳐야 해서 사이드 이펙트 위험이 있었음
접근
유류대 정산 폼 구조는 유지하고 지도 노출 · 거리 측정 로직만 독립 플러그인 컴포넌트로 분리. 어드민 마스터 설정값에 따라 지도 엔진을 동적으로 전환하고, 신규 고객사에는 해당 모듈만 주입하는 구조로 설계. 매입 세금계산서(외부 데이터 수집, 승인 · 발행 상태 동기화, 세금코드별 과세 · 면세와 부가세 자동 계산)와 법인카드 승인 내역의 전표 폼 자동 매핑도 개발
Vue.js
Nuxt.js
프리아이브
2017.12 – 2025.01 · 7년 2개월
골든디스크 어워즈2023 – 2025
문제
초 단위로 접속자가 몰리는 이벤트 사이트라 초기 로딩 속도와 SEO가 중요했고, 레거시 미디어 플레이어가 React 라이프사이클과 맞물려 충돌함
접근
Next.js App Router에서 서버 컴포넌트(RSC)와 클라이언트 컴포넌트(RCC)를 나눠 설계해 초기 HTML 렌더링과 SEO를 확보. 레거시 플레이어는 Custom Hook · Ref 기반 래퍼로 독립 모듈화. 공통 UI 라이브러리와 Design System을 만들고 Docker 기반 배포 환경을 구축
Next.js
React
TypeScript
Docker
AIDT 수학 · 영어 디지털 교과서2024
문제
파편화된 레거시 SCSS와 중복 퍼블리싱 코드로 번들이 커지고 UI 수정 시 영향 범위를 파악하기 어려웠으며, 공인 AIDT 기준의 웹 접근성과 성능 요건도 충족해야 함
접근
디자인 시스템 기반의 공통 UI 컴포넌트 라이브러리를 만들고, SCSS 변수 · Mixins 체계를 다시 정의해 중복을 줄임. 표준화된 마크업과 접근성 지침을 적용해 영어 AIDT 인증 테스트를 통과
Vue.js
Vuetify
TypeScript
SCSS
백상예술대상2024 – 2025
문제
해마다 디자인과 화면이 바뀌어 UI가 쉽게 파편화되고, 오래된 역대 수상 기록과 영상 다시보기를 한 사이트에서 보기 쉽게 보여줘야 함
접근
공통 컴포넌트를 Storybook으로 먼저 만들고 화면에서 조합하는 방식으로 개발. 라우트 · 서비스(API) · 모델 타입 계층을 분리하고, 부문별 수상 이력은 테이블 컴포넌트로 구조화
엑셀로 가계부를 같이 쓰면 버전이 꼬이고, 보기만 해야 하는 사람이 실수로 데이터를 지울 수 있으며, 금액과 메모가 서버에 그대로 남는 것이 꺼려짐
접근
실시간 공유와 소유자 · 편집자 · 열람자 권한을 두고, 권한 검사를 화면 훅과 Firestore 보안 규칙 양쪽에 적용. 금액과 메모 같은 민감 필드는 클라이언트에서 AES-256-GCM으로 암호화해 저장하고, 기존 엑셀 데이터를 옮길 수 있게 가져오기 · 내보내기를 지원. 기획과 설계는 직접 했고 구현에는 AI 도구를 활용
React
TypeScript
Firebase
Zustand
경력
2025.03 – 현재
일진씨앤에스
개발팀 · 자사 솔루션 프론트엔드 / 백엔드
2017.12 – 2025.01
프리아이브
프론트개발팀 · SI 프로젝트 프론트엔드 개발
주로 쓰는 기술 — TypeScript, Vue.js · Nuxt.js, React · Next.js, Pinia, Zustand, TanStack Query, Spring Boot