프로젝트

최신 작업부터 년도별로 정리했습니다. 각 프로젝트는 만든 이유, 맡은 역할, 결과와 기술 스택을 중심으로 기록합니다.

2026

Spine Viewer

Spine 애니메이션 리소스를 확인하기 위해 만든 VS Code 확장 도구입니다. 기존 확장 프로그램에서 WebP 기반 에셋을 제대로 확인하기 어려워, 팀에서 사용하는 리소스 흐름에 맞춘 뷰어가 필요했습니다.

Spine JSON, atlas, WebP 에셋을 개발 환경 안에서 바로 확인할 수 있게 만들어 반복 확인 비용을 줄이고, 아트 리소스 검수와 프론트엔드 작업 사이의 간격을 좁혔습니다.

Outcomes

  • 팀원들이 매일 사용하는 내부 개발 도구로 자리 잡았습니다.
  • WebP 기반 Spine 리소스를 VS Code 안에서 확인할 수 있게 했습니다.
  • 별도 뷰어를 오가던 작업 흐름을 줄여 리소스 확인 시간을 단축했습니다.

Tech

VS Code Extension
JavaScript
CSS
PixiJS
Spine

Links

agent-mux

Codex CLI, Claude Code CLI처럼 여러 AI 개발 도구를 계정별로 나눠 쓰기 위해 만든 프로필 기반 CLI 도구입니다. 계정 전환을 위해 매번 로그아웃과 로그인을 반복해야 하는 불편함에서 시작했습니다.

프로필별 저장소를 분리하고 `amux <provider> ...` 형태의 공통 명령 구조를 제공해, 서로 다른 계정과 도구를 한 터미널 환경에서 안정적으로 오갈 수 있게 만들었습니다.

Outcomes

  • 여러 AI CLI 계정을 프로필 단위로 분리해 사용할 수 있게 했습니다.
  • Codex와 Claude Code를 같은 명령 구조로 실행할 수 있는 래퍼를 구현했습니다.
  • 상태 파일 백업과 마이그레이션 구조를 두어 업데이트 중 데이터 손상 가능성을 줄였습니다.

Tech

Node.js
JavaScript
CLI
Codex CLI
Claude Code

Links

2025

익톡

100자 이내의 짧은 글을 상하 스와이프로 빠르게 소비하는 틱톡형 익명 커뮤니티입니다. 로그인 없이 바로 사용할 수 있는 가벼운 진입과 전체 화면 카드형 피드를 중심으로 설계했습니다.

짧은 글 작성, 익명 피드, 좋아요와 싫어요 반응, 공유 기능을 구현하고 Supabase를 사용해 백엔드와 데이터를 구성했습니다.

Outcomes

  • 짧은 글을 영상 피드처럼 넘겨보는 모바일 중심 UX를 구현했습니다.
  • Framer Motion 기반의 스와이프 인터랙션으로 탐색 경험을 만들었습니다.
  • Vercel과 Supabase를 활용해 빠르게 배포 가능한 풀스택 구조를 구성했습니다.

Tech

Next.js
React
TypeScript
Tailwind CSS
Framer Motion
Zustand
Supabase
Vercel

Links

expo-android-keyboard-fix

Android 15 이후 edge-to-edge 정책 변화로 Expo와 React Native 앱에서 키보드가 입력창을 가리는 문제를 해결하기 위해 만든 Expo config plugin입니다.

네이티브 Android 코드 수정이 익숙하지 않은 Expo 사용자가 플러그인을 설치하고 prebuild만으로 키보드 inset 처리를 적용할 수 있도록 구성했습니다.

Outcomes

  • npm에 배포한 공개 패키지로 주간 최대 다운로드 수 5,000회를 넘겼습니다.
  • GitHub 이슈와 커뮤니티에서 같은 문제를 겪는 사용자들에게 해결책으로 공유되었습니다.
  • Android 15 환경의 키보드 회피 문제를 Expo 플러그인 방식으로 자동화했습니다.

Tech

Expo
React Native
Android
Config Plugin
JavaScript
Kotlin

Links

eslint-plugin-ternary-depth

중첩 삼항 연산자의 깊이를 원하는 기준으로 제한하기 위해 만든 ESLint 플러그인입니다. 기본 ESLint 규칙만으로는 팀이나 개인이 원하는 깊이 기준을 세밀하게 강제하기 어려워 직접 구현했습니다.

규칙 옵션으로 허용 깊이를 정할 수 있게 만들어, 지나치게 복잡한 조건 표현식을 코드 리뷰 전에 자동으로 잡아낼 수 있도록 했습니다.

Outcomes

  • 중첩 삼항 연산자 깊이를 설정값으로 제한하는 ESLint 규칙을 구현했습니다.
  • npm에 배포 가능한 ESLint 플러그인 형태로 패키징했습니다.
  • 가독성을 해치는 조건식을 자동으로 감지할 수 있는 개발 도구를 만들었습니다.

Tech

ESLint
JavaScript
AST
npm

Links

react-native-countdown-eggmun

최신 React Native 환경에서 간단하게 사용할 수 있는 카운트다운 컴포넌트가 필요해 직접 만든 라이브러리입니다. 오래된 버전에 머문 기존 라이브러리 대신 프로젝트에 바로 붙일 수 있는 가벼운 구현을 목표로 했습니다.

남은 시간 표시와 종료 콜백처럼 반복적으로 필요한 기능을 컴포넌트로 분리해, 앱 화면에서 카운트다운 UI를 빠르게 재사용할 수 있도록 만들었습니다.

Outcomes

  • React Native 프로젝트에서 재사용 가능한 카운트다운 컴포넌트를 구현했습니다.
  • 외부 라이브러리 버전 제약을 줄이고 필요한 동작만 가볍게 사용할 수 있게 했습니다.
  • 개인 프로젝트와 공개 저장소에서 사용할 수 있는 형태로 정리했습니다.

Tech

React Native
React
JavaScript
TypeScript

Links

react-native-auto-ripple

사용자에게 다음 행동을 안내하기 위해 특정 버튼이나 영역에 자동 ripple 효과를 주는 React Native 컴포넌트입니다. 튜토리얼이나 온보딩에서 ‘여기를 눌러보세요’라는 힌트를 자연스럽게 보여주기 위해 만들었습니다.

기본 터치 효과와 별개로 자동 재생되는 시각적 피드백을 제공해, 앱 안에서 사용자의 시선을 원하는 액션으로 유도할 수 있도록 구성했습니다.

Outcomes

  • React Native 화면에서 재사용 가능한 자동 ripple 컴포넌트를 구현했습니다.
  • 가이드성 UI와 온보딩 흐름에서 사용할 수 있는 인터랙션을 만들었습니다.
  • 공개 저장소로 정리해 다른 프로젝트에서도 참고할 수 있게 했습니다.

Tech

React Native
React
JavaScript
Animation

Links

2023

MountPeople

등산을 즐기는 사람들이 정보를 공유하고 중고 등산용품을 거래할 수 있도록 만든 등산 커뮤니티와 중고마켓 통합 서비스입니다. 기존 커뮤니티의 제한적인 기능과 등산용품 거래 플랫폼의 부족함에서 출발했습니다.

커뮤니티 글과 댓글, 중고마켓 상품 등록, Q&A, 포인트 충전, 마이페이지 등 서비스의 주요 웹 클라이언트 기능을 혼자서 구현했습니다.

Outcomes

  • 웹 클라이언트 개발을 처음부터 끝까지 혼자 진행했습니다.
  • 결제 흐름, 커뮤니티, 중고마켓, 마이페이지 등 서비스형 웹의 기본 기능을 구현했습니다.
  • GraphQL 데이터 요청과 무한 스크롤 로직을 공통 hook으로 분리하며 재사용성을 높였습니다.

Tech

Next.js
React
TypeScript
GraphQL
Apollo Client
Recoil
Emotion
Ant Design

Links

UPCO

‘엎어지면 코 닿는 곳에서 만나는 사람들’이라는 의미를 담은 지도 기반 동네친구 찾기 서비스입니다. 단순 이성 매칭이 아니라 가까운 위치와 비슷한 관심사를 가진 사람들을 자연스럽게 연결하는 방향으로 기획했습니다.

지도 위에서 주변 사용자를 탐색하고, 채팅과 실시간 소통으로 오프라인 만남까지 이어질 수 있는 경험을 만드는 데 집중했습니다.

Outcomes

  • 7명의 팀원과 한 달 동안 몰입해 만든 팀 프로젝트입니다.
  • 백엔드 개발자와 협업하며 프론트엔드와 API 연동 경험을 쌓았습니다.
  • 실제 서비스를 운영하며 사용자와 대화하고 동네 친구를 만드는 경험까지 이어졌습니다.

Tech

Next.js
React
Socket.IO
WebRTC
Emotion
GraphQL

Links

2022

Listening With

대학생 시절 캡스톤 디자인으로 만든 날씨 기반 음악 추천 Android 앱입니다. 계절과 날씨 상태를 기준으로 사용자의 상황에 어울리는 음악을 추천하는 경험을 만들고자 했습니다.

Java와 Android Studio로 앱을 개발했고, 날씨 API와 위치 정보를 활용해 흐림, 맑음, 기온 같은 현재 상태를 앱 화면과 추천 흐름에 반영했습니다. 발표 자료를 통해 기획과 구현 방향도 함께 확인할 수 있습니다.

Outcomes

  • Java 기반 Android 앱 개발과 발표까지 이어지는 캡스톤 프로젝트를 완주했습니다.
  • 외부 날씨 API와 위치 정보를 앱 기능에 연결했습니다.
  • 날씨와 계절이라는 사용자 맥락을 음악 추천 경험으로 풀어보았습니다.

Tech

Java
Android Studio
Android
Weather API
Location API
MediaPlayer
JSON

Links

2012

치킨볼

중학생 시절 가장 열심히 만들었던 공튀기기 게임입니다. 당시 인기가 많았던 바운스볼을 참고해, 다양한 장애물과 트릭을 통과하며 스테이지를 완주하는 게임으로 만들었습니다.

당시 개발했던 많은 게임 파일은 사라졌지만, 지금까지 남아 있는 유일한 게임 프로젝트라 개발을 좋아하게 된 초기 경험을 보여주는 작업입니다.

Outcomes

  • 동생과 친구들이 직접 플레이하며 즐겁게 반응해 준 게임입니다.
  • 게임 규칙, 스테이지 구성, 장애물 흐름을 직접 설계했습니다.
  • 어릴 때부터 사용자가 직접 즐길 수 있는 결과물을 만드는 경험을 쌓았습니다.

Tech

GameMaker
Game Design
2D Game

Links