프로필 사진

박상혁

Frontend Developer

필요하다면 새로운 걸 배우고 도입하는 것을 꺼리지 않습니다. 무언가 만드는 것을 좋아하고 특히 색다른 인터페이스와 인터랙션, 그리고 애니메이션을 구현하는 것을 좋아합니다. 이로써 사용자의 자연스러운 행동 유도와 편한 사용을 끌어내려 합니다. DX를 위해 내부 로직 뿐만 아니라 사용처에서도 쉽게 사용할 수 있도록 공부하고 노력합니다.

GitHub fecapark@gmail.com

Work Experience.

당근마켓 - 중고차
2024.08 ~ 2025.02 (6개월) · Frontend Engineer Intern
중고차 어드민
  • 매번 새로운 뷰를 만들어야 하는 어드민 페이지: 사진 목록 뷰어, 라벨-값 리스트, 데이터 필터 등 다양한 데이터 중심의 디스플레이 컴포넌트 개발로 복잡도 완화 및 효율 개선
  • 페이지 간 연결이 없어 관련 정보 확인이 어려운 문제: 매번 페이지를 옮겨 검색하던 방식에서 컨텍스트 메뉴로 즉시 접근 가능하도록 UX 플로우 개선
클레임 처리 서비스

진단 내역과 차량 정보 불일치로 인한 클레임 처리 서비스를 만들었습니다.
0 to 1 부터 참여하여 프론트엔드 파트를 핸들링했습니다.

  • 조건부로 달라지는 컴포넌트 공통화: Compound Component 패턴으로 재사용 및 부분 렌더링이 가능한 UI 컴포넌트를 설계하고, 노출되는 props를 최소화하여 개발자 친화적인 인터페이스를 제공.
  • 진단 내역 확인과 검수를 동시에 해야하는 오퍼레이션 니즈: 화면 분할 뷰 및 검수 버전별 인라인 비교 기능 구현
중고차 경매 웹
  • 매입 전 차량 사진 세부 확인이 어려운 문제: 사진 클릭시 부분 확대 인터랙션이 가능한 사진 뷰 컴포넌트 구현 및 공통화

Projects.

Yourssu Infra System Demo · GitHub
2025.05 ~ 2025.06

숭실대학교 개발동아리 Yourssu의 온프렘 배포 시스템입니다. 기획 고도화, 전체 디자인 및 프론트엔드 개발을 담당했습니다. 토스증권 WTS를 벤치마킹하여 서비스 전체 디자인 및 에셋들을 제작했습니다.

React Typescript TailwindCSS Motion Tanstack Router
react-rolling-number Demo · GitHub
2025.12 · 오픈소스 라이브러리

부드럽고 커스터마이징 가능한 숫자 롤링 애니메이션 React 라이브러리입니다. 기존 라이브러리들의 제한적인 커스터마이징, 부족한 숫자 포맷 지원, 런타임 스타일 변경 대응 등의 불편함을 해소하고자 만들었습니다.

  • 커스터마이징: 부호, 정렬 위치, 콤마 등 표시 방식 및 애니메이션 방향, 지속 시간, 스태거 등 각종 애니메이션 옵션을 통한 폭넓은 커스터마이징 지원
  • 넓은 숫자 커버리지: 문자열 타입의 숫자 지원으로 고정소수점이 가능하며 내부적으로 과학적 표기법을 숫자로 변환하는 로직을 통해 과학적 표기법도 지원
  • 런타임 스타일 변경 대응: 부모 폰트 스타일을 상속받고, ResizeObserver로 폰트 크기 변경에 따라 자동으로 스타일을 변경
  • 환경 지원: esm/cjs 동시 지원 및 라이브러리 d.ts 파일로 타입스크립트 지원
  • 모노레포 방식과 workspace 프로토콜로 라이브러리 변경 사항을 로컬에서 바로 확인 가능하도록 구현
React TypeScript Vanilla Extract Motion Tsdown Turborepo
Time Timer Website · GitHub
2022.12 ~ 2023.01 · 개인 프로젝트

남은 시간을 직관적이고 시각적으로 나타내는 타임 타이머 제품을 구현한 인터랙티브 프로젝트입니다. 단순히 인터랙션을 구현하는 것을 넘어, 자연스러운 범주 내에서 의도적인 트랜지션을 통한 사용자 시선 처리 및 행동 유도를 목표로 했습니다.

  • 타이머에 집중 유도: 타이머 외의 모든 UI 요소를 제거하고, 타이머 자체에만 집중할 수 있도록 디자인
  • 시선 처리 및 행동 유도: 컴포넌트간 fade-in 딜레이를 다르게 주어 무의식적으로 시선이 따라가도록 유도하고, 경계를 인지시켜 다른 기능임을 인식시킴
  • 인터랙션 없이 타이머 종료 알람 재생이 불가능한 문제: 타이머 시작 클릭 시 무음 오디오 재생 직후 알람 오디오로 교체해 재사용하면서 브라우저 정책 우회
  • 색상, 시간 등 타이머 커스터마이징 옵션 제공
  • 기간별 사용 기록, 잔디 그래프 및 행동 분석 등 통계 뷰 구현
Next.js TypeScript Emotion
메이플랜드 옥션 Website
2024.02 ~ 2024.05 · 서비스

넥슨 메이플랜드 게임 내 일부 이용자들의 시세 조작으로 인해 정상적인 거래가 어려운 문제를 인식하고, 이를 해소하기 위해 다중 거래소 데이터를 자동 수집, 정제하는 시스템을 직접 설계했습니다. 혼자서 2주 만에 MVP를 완성하여 커뮤니티에서 화제를 얻었고, 월 PV 120만 이상 및 광고 수익화를 달성했습니다.

  • 일별, 시간별 아이템 시세 통계 및 차트 시각화 뷰 제공
  • 거래 동향 정보를 제공하는 가격순 및 거래량 트렌딩 뷰 구현
  • 디스코드 API 미지원으로 인한 채널 거래소 아이템 거래글 수집 문제: Network 탭 분석으로 디스코드 내부 API를 역설계하여 세션 유지 및 게시글 데이터 수집
  • 비선형적 아이템 게시글 분류 문제: 구매 유형, 아이템, 가격 등 키워드 간 상대적 거리 차이를 이용해 문맥 상의 거래 유형을 분류하는 문자열 거리 기반 알고리즘 구현
  • 아이템 약어 및 갯수, 금액, 확률 관련 용어 혼재: 자주 사용되는 패턴들을 추출, 카테고라이징 후 분류하는 로직 구현
  • 의도적 시세 조작 문제: Modified Z-Score 기반 이상치 탐지 알고리즘 적용, 이전 시세와의 괴리도 및 거래량 급등락을 고려해 자동 필터링으로 정확도 향상
Next.js TypeScript TailwindCSS Nivo Firebase

Toys.

Metaball Interaction Demo · GitHub · Blog
2024.06

메타볼 효과를 웹에 구현한 인터랙티브 프로젝트입니다. 퍼포먼스 향상을 위해 WebGL 라이브러리인 PIXI.js를 사용하여 구현했습니다.

  • 메타볼 구현을 위한 커스텀 필터 구현: Gaussian Blur와 Alpha-Threshold 필터가 필요했으나 PIXI.js에 Threshold 필터가 없어 GLSL로 직접 구현
  • 프레임 단위로 스프링 효과가 적용된 오브젝트 위치를 계산해야하는 문제: 점화식으로 직접 스프링 효과 로직을 구현해서 위치를 렌더링하도록 구현
  • 여러가지 메타볼을 만들어낼 수 있도록 파라미터를 조정하는 인스펙터 UI 제공
GLSL PIXI.js
Material Form Demo · GitHub
2023.06

Google Material Design 소개 영상의 모션 그래픽에서 영감을 받아 만든 바닐라 JS 프로젝트입니다.

Vanilla JS

Other Experience.

Yourssu
24.04 ~ 현재

숭실대학교 개발 동아리 유어슈에서 프론트엔드 파트 리드진으로 참여하고 있습니다. 숭실대학교 학생들이 사용하는 여러 서비스들을 만들고, 조직내에서 자유로운 개발 문화를 만들고 지식을 공유하여 선순환을 만들기 위해 노력하고 있습니다.

Google Developer Student Clubs / Google Developer Group
23.09 ~ 25.09
숭실대학교 컴퓨터학부
20.03 ~ 현재 휴학중