SELECTED WORK / 2026

제품 개발 · 에이전트 도구 · 검증 시스템

조원일 · AI-native 프론트엔드 엔지니어

프론트엔드를 만들고,
AI 개발의 기반을 설계합니다.

React / Next.js / TypeScript

엠디비의 첫 프론트엔드 개발자로 임상 데이터 플랫폼의 기반을 만들었습니다. 전국 대형병원이 참여하는 7년 국가 과제를 지원하는 제품입니다.

제품 개발과 함께, AI에게 맡길 작업과 검증 방법을 코드로 만듭니다. 작업 그래프, 결정 기록, 검증 하네스를 직접 설계하고 사용합니다.

엠디비 주식회사2023.06 ~ 현재

FRONTEND / AI-NATIVE DEVELOPMENT

포트폴리오 둘러보기

01FRONTEND CASE STUDIES

운영 중인 제품에서 내린 설계 판단.

임상 데이터 플랫폼의 기반을 만들고 기능을 확장하며 다룬 문제들입니다. 각 사례에 직접 맡은 일과 설계의 이유를 담았습니다.

LARGE-SCALE INPUT

대규모 동적 폼

수백 개 필드의 갱신 범위를 나눴습니다.

직접 맡은 일입력 아키텍처 · 상태 경계 · 렌더링 최적화

문제

임상 데이터 입력 화면에는 수백 개의 동적 필드와 반복 행이 놓입니다. 사용자 입력, 서버의 계산 결과, 복원된 값이 같은 필드에 들어오기 때문에 렌더링 범위와 상태의 소유권을 함께 정해야 했습니다.

접근과 구현

실제 행 높이를 측정하는 가상화와 필드별 구독으로 갱신 범위를 좁혔습니다. 입력값은 React Hook Form, 서버 데이터는 React Query, 공유 편집 상태는 Jotai가 맡도록 나눠 각 변경이 영향을 주는 범위를 명확히 했습니다.

구현의 세부 판단과 기여 범위
구현에서 중요했던 점
저장할 때는 변경된 항목만 전송합니다. 행 순서를 재구성하는 반복 문항은 문항 전체를 보내도록 예외를 뒀습니다. 자동 계산 항목을 함께 보냈던 첫 구현은 실제 요청에서 중복을 확인한 뒤 줄였습니다.
직접 기여 · 협업
입력 구조와 상태 경계, 저장·복구 흐름을 직접 설계하고 구현했습니다. 키보드 이동과 표 붙여넣기는 팀이 확장한 영역입니다.
  • React Hook Form
  • React Query
  • Jotai
  • TanStack Virtual

DERIVED VALUES & RECOVERY

계산과 복구를 포함한 입력 이력

계산이 끝난 상태까지 하나의 편집 이력으로.

직접 맡은 일자동 계산 연동 · 임시저장 · 실행취소·다시실행

문제

사용자가 값을 고치면 서버의 자동 계산·검증(DVS)이 이어집니다. 계산 전에 이력을 기록하거나 화면 밖의 필드를 놓치면, 실행취소와 복원 결과가 사용자가 기대한 상태와 달라질 수 있었습니다.

접근과 구현

편집 진입을 공통 계산 요청 흐름으로 연결하고, 계산이 완료된 상태를 실행취소 이력에 담았습니다. 사용자 수정과 자동 반영을 구분했으며, 저장 뒤 제안 목록은 서버 응답으로 교체해 최신 상태를 유지했습니다.

구현의 세부 판단과 기여 범위
구현에서 중요했던 점
스냅샷을 복원할 때 입력값뿐 아니라 편집 상태, 추가 행, 서명 표시값도 함께 맞췄습니다. 자동 계산값은 사용자 수정으로 취급하지 않아, 직접 수정한 값에만 필요한 수정 사유 입력이 잘못 요구되지 않도록 했습니다.
직접 기여 · 협업
계산 요청과 제안 동기화를 개선하고, 임시저장과 입력 화면의 스냅샷 기반 실행취소·다시실행을 구현했습니다. 동료는 겹친 임시저장 요청의 순차 처리를 강화했습니다. 양식 빌더의 되돌리기 이력은 동료가 주도한 별도 구현입니다.
  • React Hook Form
  • React Query
  • 자동 계산·검증
  • 스냅샷 이력

CONFIG BUILDER

양식 빌더

사람과 AI의 편집이 같은 규칙을 따르도록.

직접 맡은 일속성 편집 · 유형별 렌더러 · 동작 재현과 리뷰

문제

연구마다 다른 양식을 관리자가 직접 구성합니다. 속성 편집, 복제, 저장에 더해 AI의 편집 요청까지 들어오면서, 같은 문서를 바꾸는 여러 경로에 일관된 규칙이 필요했습니다.

접근과 구현

페이지·문항·필드의 속성 편집 구조를 만들고 유형별 설정과 렌더러를 분리했습니다. 복제 시 유지할 속성을 정의했으며, 이후 편집기 변경에서는 실제 동작을 재현해 저장·복원과 읽기 전용·취소 규칙을 검토했습니다.

구현의 세부 판단과 기여 범위
구현에서 중요했던 점
열 너비가 저장·복원 후 사라지는 문제를 화면과 서버 응답으로 재현해 숫자 변환과 열 단위 갱신을 제안했습니다. AI 편집 요청이 읽기 전용 상태나 사용자의 취소를 무시하는 경우도 확인했습니다.
직접 기여 · 협업
속성 편집 구조, 유형별 렌더러, 복제 규칙을 직접 구현했습니다. 정규화된 저장 구조와 되돌리기 이력은 동료가 주도했습니다. 해당 변경에는 동작 재현과 코드 리뷰로 기여했습니다.
  • Next.js
  • TypeScript
  • Jotai
  • 타입 설계

DATA MIGRATION

운영 데이터 마이그레이션

이미 수집한 데이터를 옮기고, 되돌릴 수 있게.

직접 맡은 일계획 수립부터 실행·되돌리기까지 프론트엔드 설계·구현

문제

연구 도중 양식이 바뀌면 기존 임상 데이터를 새 버전으로 옮겨야 합니다. 실행 전에 변경 내용을 검토하고, 대상자별 결과를 확인하며, 필요하면 되돌릴 수 있는 전체 흐름을 맡았습니다.

접근과 구현

계획 수립부터 차이 검토, 발행, 실행, 결과 추적, 되돌리기까지 하나의 흐름으로 설계했습니다. 서버의 사전 검사 결과를 실행 기준으로 삼고, 되돌리기도 처음부터 기능에 포함했습니다.

구현의 세부 판단과 기여 범위
구현에서 중요했던 점
변경 사항은 일곱 단위로 나눠 검토합니다. 실행 후 행 식별자가 바뀔 수 있어 서버 응답을 받은 뒤 목록과 상세를 다시 조회합니다. 같은 계획의 실행·되돌리기 요청은 한 번에 하나씩 처리합니다.
직접 기여 · 협업
계획 수립·검토 화면과 실행·되돌리기 흐름을 직접 설계하고 구현했습니다. 프론트엔드에서 단독으로 맡은 기능 중 범위가 가장 넓은 작업입니다.
  • Next.js
  • TypeScript
  • React Query
  • 상태 전이 설계

SHARED POLICY

프로젝트 권한과 사용자 설정

권한과 캐시를 프로젝트의 경계에 맞추기.

직접 맡은 일공통 권한 검사 · 설정 통합 · 프로젝트별 캐시 정리

문제

화면·메뉴·버튼이 권한을 다르게 해석하고, 프로젝트를 바꿔도 이전 프로젝트의 설정이 캐시에 남는 문제가 있었습니다. 권한 판단과 상태의 수명을 프로젝트 경계에 맞춰야 했습니다.

접근과 구현

권한 검사를 공통 구조로 모으고 숨김과 비활성화를 구분했습니다. 사용자 설정은 서버 저장값과 세션 상태로 나눴으며, 프로젝트 전환 시 Jotai 상태와 React Query 캐시를 함께 정리하도록 수정했습니다.

구현의 세부 판단과 기여 범위
구현에서 중요했던 점
화면의 권한 처리는 가능한 행동을 안내하며, 최종 인가는 서버가 담당합니다. 프로젝트 전환 오류는 상태 저장소를 초기화해도 수명이 다른 서버 데이터 캐시가 남는다는 점에서 원인을 찾았습니다.
직접 기여 · 협업
초기 권한 검사와 경로 구조, 사용자 설정 통합, 프로젝트 전환 시 캐시 수정을 맡았습니다. 팀이 확장한 권한 모델을 화면에 적용했고, 설정 구조와 타입 확장은 동료들과 함께 발전시켰습니다.
  • Next.js
  • Jotai
  • TypeScript
  • 선언형 정책

02AI-NATIVE OPEN SOURCE

직접 만들고, 실제 작업에 쓰는 AI 도구.

AI에게 어떤 작업을 맡길지, 어떤 맥락을 남길지, 무엇으로 결과를 확인할지 직접 설계합니다. 네 프로젝트는 그 질문에 대한 구현입니다.

AGENT TOOLING

Logic Pro MCP

앱을 제어한 결과를 확인할 수 있게.

AI가 Logic Pro를 제어하는 Swift MCP 서버를 만들었습니다. 명령 후 앱 상태를 다시 읽어 실제 반영을 확인합니다. AI와 함께 구현하며 컴파일·테스트·커버리지 기준을 CI에 연결했고, 검사기가 잘못된 입력을 거부하는지도 검증하도록 설계했습니다.

Anthropic Claude for Open Source 선정 · 6개월 지원

Logic Pro MCP 코드 보기 (새 탭)
DECISION MEMORY

CommitLore

다음 에이전트도 결정의 이유를 알 수 있게.

AI가 코드를 수정할 때 이전 결정의 이유도 볼 수 있도록 만들었습니다. 제약과 기각한 대안을 Git에 기록하고, 수정할 경로에 맞는 유효한 결정을 전달합니다. 기록 후보는 대화와 코드 변경으로 검증하고, 신뢰 수준과 갱신·만료를 관리합니다.

Git 기반 메모리 · 경로별 문맥 · 근거와 수명 관리

CommitLore 코드 보기 (새 탭)
TASK GRAPH & CONTEXT

JevGate

완료했다는 응답을 실행 근거와 연결합니다.

Claude Code와 Codex의 토큰 사용을 줄이려 시작했습니다. 작업을 의존성과 완료 조건이 있는 그래프(DAG)로 구성하고, 결과를 실제 검사 실행 기록과 대조합니다. 문맥을 압축할 때는 사용자 요청과 실패 기록을 남겨 다음 작업의 판단 근거를 보존합니다.

작업 그래프 · 완료 조건 · 실행 기록 · 문맥 선택

JevGate 코드 보기 (새 탭)
AGENT SKILLS & REVIEW

Frontier-simplify

자동 리뷰에도 끝나는 조건이 필요합니다.

AI 개발 과정에서 늘어나는 문서, 규칙, 반복 리뷰를 줄이는 스킬을 만들었습니다. 리뷰는 구체적인 결함을 중심으로 진행하고, 발견한 문제와 수정 내역을 다음 검토에 이어 전달합니다. 자동 반복에는 상한을 두고 실험 결과와 한계를 공개합니다.

결함 중심 리뷰 · 수정 이력 보존 · 자동 반복 제한

Frontier-simplify 코드 보기 (새 탭)

StockMatrix에서는 AI 주식 분석 뉴스레터를 개발·운영합니다. 데이터 수집·분석부터 구독, 이메일 발송, 콘텐츠 발행까지 제품의 전체 흐름을 연결했습니다. StockMatrix 보기 (새 탭)

HOW I WORK작업을 정의하고, 결과를 책임집니다.

  1. 제품의 맥락을 명확하게. 기존 코드의 구조·컨벤션과 Figma의 기획·디자인을 작업 기준에 연결하는 스킬을 사용합니다. 중요한 설계는 표준 레퍼런스에서 출발해 프로토타입으로 확인하고, 근거를 가지고 동료와 논의합니다.
  2. 구현과 독립된 검토. Claude가 구현하면 보통 구현 세션을 보지 않은 Codex·Grok으로 리뷰합니다. 반복해서 확인할 수 있는 조건은 테스트와 CI로 옮기고, 검사기가 잘못된 결과를 통과시키지 않는지도 확인합니다.
  3. 사용자가 겪는 결과까지. 회사 업무에서는 직접 코드를 검토하고 QA를 수행합니다. 사이드 프로젝트는 도그푸딩과 실사용 테스트를 중심으로 검증합니다. 실제 사용에서 발견한 불편과 반복되는 사용자 요청을 다음 개선의 기준으로 삼습니다.

03ABOUT

AI를 이해하려 시작해, 제품을 만드는 사람이 됐습니다.

광고·영상의 기획과 제작, 현장 PD로 일하다 개발을 시작했습니다. 레이 커즈와일의 『특이점이 온다』를 읽고 AI와 자유롭게 소통하려면 소프트웨어를 만드는 능력이 필요하다고 생각했습니다. 2022년 시작한 개발은 프론트엔드 실무로 이어졌고, 지금은 AI 도구와 Swift 자동화까지 영역을 넓히고 있습니다.

직접 쓰고 싶은 것을 만들고, 실제 사용에 맞춰 바꿉니다. GitHub 이슈·메일·Reddit에서 피드백을 듣고, 사용 경험과 요청 빈도로 우선순위를 정합니다. 특히 많은 사람이 쓰는 소비자 제품에서 사용자 요청을 듣는 일부터 구현까지 맡고 싶습니다.

AI로 구현이 빨라질수록 팀이 함께 판단할 일도 많아진다고 생각합니다. 설계의 이유를 설명하고, 배운 것을 공유하고, 동료의 근거에 따라 생각을 바꾸는 대화를 중요하게 여깁니다.

현재
엠디비 주식회사 · 프론트엔드 개발자
개발 시작
2022년
주력
React · Next.js · TypeScript
설계 영역
프론트엔드 구조 · 작업 그래프 · 검증 하네스
찾는 팀
AI 활용과 지식 공유가 일상인 제품 팀

04EXPERIENCE

첫 구현 이후의 제품도 책임져 왔습니다.

2023.06 ~ 현재

엠디비 주식회사

프론트엔드 개발자

임상 데이터 플랫폼 · 첫 프론트엔드 개발자

회사 최초의 프론트엔드 개발자로 합류해 임상 데이터 수집 플랫폼의 기반을 개발했습니다. 현재는 3명의 프론트엔드 개발자가 동등하게 협업하며 기능 확장, 유지보수, 최적화를 이어가고 있습니다.

동적 입력 폼과 저장·복구, 자동 계산 연동, 양식 빌더, 권한·사용자 설정을 개발했습니다. 데이터 버전 이행은 계획 수립부터 검토·실행·되돌리기까지 직접 설계하고 구현했습니다.

React · Next.js · TypeScript · React Hook Form · React Query · Jotai

PRODUCT / LEARNING PLATFORM

온라인 교육 플랫폼

수강 이력과 자료 검색·다운로드 화면을 구현했습니다. 수료증 발급 완료 메시지가 수강 이력에 반영되도록 창 사이의 상태도 연결했습니다.

수강 이력·자료실 화면은 직접 구현했습니다. 영상 플레이어와 공통 화면은 팀이 함께 개발했습니다.

Next.js · React Query · TanStack Table

2022.09 ~ 2023.07

주식회사 아르고스아이덴티티코리아 (구 주식회사 풀스택)

프론트엔드 개발자

가상자산 지갑의 B2B 신원인증

가상자산 지갑의 입출금 과정에 필요한 신원인증 플랫폼을 React와 Vue.js로 개발하고 유지보수했습니다.

SOURCE NOTES사례에 관하여

회사 사례는 코드·PR 이력과 직접 수행한 업무에 근거합니다. 상세 설명에 개인과 팀의 기여 범위를 명시했습니다. 측정 기록이 없는 성능 수치나 확인할 수 없는 사업 성과는 기재하지 않았습니다.

회사 소스 코드와 화면, 고객·환자 데이터는 공개하지 않습니다. 공개 프로젝트의 구현과 개발 방식은 각 GitHub 저장소에서 확인할 수 있습니다.