안녕하세요,프론트엔드 개발자 박시우입니다.

자기 소개

저는 오픈소스에 기여하는 개발자입니다. React Server Component를 효과적으로 사용하려면 빌드타임에 스타일이 결정돼야 한다는 점 때문에 TailwindCSS를 사용했는데, 유틸리티 클래스 스타일 라이브러리를 사용하며 아쉬웠던 점을 보완하기 위해 'uility-class-components' 라이브러리를 개발했습니다. 해당 이슈에 꾸준히 관심을 가지고 있었던 덕분에 chakra-ui/panda, TanStack/query에 기여하기도 했습니다.

팀의 생산성을 개선하는 데에 큰 관심을 가지고 있습니다. 사내에서 Bootstrap을 커스텀해 사용하고 있던 스타일시트 빌드 프로젝트가 지나치게 노후화돼 유지 보수에 어려움이 있다는 점을 인지하고, Goorm Design System 모노레포로 프로젝트를 옮겨오는 작업을 진행했습니다. 또한, GitHub Actions를 활용해 테스트 배포가 가능하도록 함으로써 DX를 개선했습니다.

프로젝트

  • goormEXP

    구름, goormEXP SQD
    • goormEXP의 메인 랜딩 페이지를 한 스프린트만에 개발했을 정도로 높은 퍼포먼스를 유지했습니다.
    • Storybook 도입을 건의, 개발 환경을 구축하고, TypeScript으로의 마이그레이션을 주도했습니다.
    • 불필요한 작업을 최소화하기 위해 수정이 필요한 곳의 autofix가 가능한 ESLint Custom Rule을 개발, 도입하고 Lint Rule을 구조화했습니다.
    • SSR / SSG 환경에서 다국어 지원에 대응했습니다.

    게이미피케이션을 통해 구성원의 퍼포먼스를 이끌어내는 플랫폼인 goormEXP의 유지보수 및 개발을 맡았습니다. 팀의 프론트엔트 개발 환경 개선에 주력했습니다.

    • Next.js
    • Storybook
    • TypeScript
    • ESLint
  • Goorm Design System (GDS)

    구름
    • Bootstrap을 변형해 사용하고 있던 goormstrap을 GDS 모노레포에 통합, GitHub Actions를 통한 테스트 버전 배포 방법을 구축하는 등 DX를 개선했습니다.
    • JS로 작성된 기존의 GDS를 TypeScript로 마이그레이션하는 작업에 기여했습니다.
    • 굉장히 복잡한 인터렉션이 필요한 간트 차트 라이브러리를 개발했습니다. Windowing 기법을 활용해 성능을 최적화했으며, 태스크 바의 드래그 앤 드롭이 가능합니다.

    사내 디자인 시스템 라이브러리인 Goorm Design System의 유지보수 및 개발을 맡았습니다.

    • React.js
    • TypeScript
    • Monorepo
    • Rollup
    • Sass
  • utility-class-components

    개인 프로젝트
    import { utld, ud } from "utility-class-components";
    
    const Container = utld.div<{ $isRed: boolean }>`
      flex
      text-bold
    
      ${({ $isRed }) => $isRed && "text-red-500"}
    `;
    
    function Page() {
      return <Container $isRed={true}>AWESOME!!</Container>;
    }
    import { utld, ud } from "utility-class-components";
    
    const Container = utld.div<{ $isRed: boolean }>`
      flex
      text-bold
    
      ${({ $isRed }) => $isRed && "text-red-500"}
    `;
    
    function Page() {
      return <Container $isRed={true}>AWESOME!!</Container>;
    }
    • BundlePhobia 기준 3.8KB의 작은 번들 사이즈를 달성했습니다.

    개인 블로그를 Next.js 13 버전의 App Router로 마이그레이션 하며 개발한 라이브러리입니다. 대부분의 CSS in JS 라이브러리는 React Context API를 사용해 React Server Component(RSC)에서 사용하기 어려웠기에, TailwindCSS로 스타일링 라이브러리를 바꾸며 '유틸리티 클래스를 CSS in JS처럼 다룰 수 있으면 좋겠다'는 아이디어에서 시작했습니다. 이 프로젝트를 통해 RSC의 사용에 대해 깊게 고민했고, 덕분에 오픈소스 프로젝트(chakra-ui/panda, TanStack/query)에 기여하는 소중한 경험을 할 수 있었습니다.

    • React.js
    • TypeScript
  • 기술 블로그

    개인 프로젝트진행중
    • Next.js 12버전으로 시작했던 프로젝트를 13으로 업그레이드 하며, Server Component 스타일링을 더 편하게 하기 위해 utility-class-components 라이브러리를 개발했습니다.
    • Firebase SDK를 직접 사용하다가 API Route로 리팩토링 하며 React Query와 Suspense를 활용해 로딩 및 에러 처리 로직을 개선했습니다.
    • Lighthouse 기준 Accessibility, SEO 점수 100점을 유지하고 있습니다.
    • 복잡한 형태의 Conditional Rendering이 일어나는 댓글 컴포넌트를 객체를 사용한 설계로 리팩토링해 코드 가독성을 높였습니다.
    • 블로그 내 게시물 검색 기능을 구현했으며, API Call 최적화 및 어뷰징 방지를 위해 디바운싱을 적용하는 등 지속해서 기능을 개선 및 추가하고 있습니다.
    • 게시물의 썸네일을 자동으로 생성합니다.

    저만의 색깔을 나타낼 수 있도록 모든 부분을 직접 개발한 블로그입니다. 지속해서 리팩토링하며 컴포넌트 설계의 테스트베드로 활용하고 있습니다.

    • Next.js
    • TypeScript
    • styled-components
    • Node.js
    • Firebase

오픈소스 컨트리뷰션

  • chakra-ui/panda

    • 스타일 토큰 생성 관련 기여를 했으며, 이슈를 올려주신 분의 감사 인사를 받기도 했습니다.

    React Server Component에 관심을 가지며 빌드타임에 스타일을 생성하는 라이브러리를 찾다가 접한 라이브러리입니다. 토큰 이름으로 '/'를 사용했을 때 escape가 안된다는 이슈를 해결하기 위해 해당 로직을 찾고, 수정했습니다.

  • TanStack/query

    • 비동기 Server Component 사용시 타입 에러가 발생하는 이슈에 대한 공식 문서의 설명을 Next.js에서 권장하는 방법으로 업데이트했습니다.

    Next.js 13버전의 App Router에서 QueryClient hydration을 어떻게 구현할 수 있을지 관심을 갖고 있다가, TanStack/query의 공식 문서 설명중 최신 내용이 아닌 부분을 발견해 업데이트했습니다.

경력

  • 자비스앤빌런즈(삼쩜삼)

    진행중

    Frontend Engineer

  • 구름

    Frontend Engineer

    • goormEXP SQD 소속으로 게이미피케이션을 통해 구성원의 퍼포먼스를 이끌어내는 플랫폼인 goormEXP를 개발했습니다.
    • 구름 전사적으로 사용하는 Goorm Design System의 유지보수 및 개발을 맡았습니다.
  • 콘텐츠웨이브

    웹 프론트엔드 개발 인턴

    • 꾸준한 토론을 통해 더 많은 생각을 나누고자 노력했습니다. 두 달만에 GitLab 기준 400회 이상의 Activity를 기록했습니다.
    • 라이브 시청 중 타 유저의 반응을 실시간으로 볼 수 있도록 하는 'Play Reaction' 프로젝트에 참여했습니다. 프로젝트의 기획부터 구현까지 전반적인 부분에 기여했습니다.

경험

  • 벤처 스타트업 아카데미 장관상

    중소벤처기업부 주관 벤처 스타트업 아카데미 교육과정에서 최우수 성적을 거둬 장관상을 수상했습니다.

  • 『타입스크립트 넌 내 타입』 집필

    타입스크립트를 처음 접하는 사람들을 위한 개념서를 집필했습니다. 인터페이스, 제네릭 챕터 집필에 참여했습니다.

  • Google Developer Student Clubs UOS

    Frontend 팀의 Core Member로서 Daily Scrum, Sprint 회고, Kick Off, CPU Meeting 등을 주도했습니다.

  • 서울시립대학교 공간 데이터베이스 연구실 학부생 연구원

    인천시 생활폐기물 발생량 분석 및 예측 모델 개발 연구, 착한 이륜차 운전자 평가 시스템 개발 연구에 참여했습니다.

  • 제 36회 도시과학대학 공동작품전

    동선 기반 일정 관리 크로스플랫폼 어플리케이션 Dayplan.it을 개발, 도시과학대학장상을 수상했습니다.

교육 및 자격증

  • 멋쟁이사자처럼 FE School 3기

    회고조 조장, 팀 프로젝트 리더로서 활동하며 Soft Skill을 발휘했습니다.

    지식을 나누기 위해 59명의 동료에게 리액트로 투두 개발하기 특강을 진행하고, 동료가 마주친 이슈를 함께 해결해나가는 '칭구칭긔들' 스터디를 리드하기도 했습니다.

  • AWS Essentials

  • SQLD (국가 공인 SQL 개발자)

  • TOEIC Speaking Advanced Low

  • 서울시립대학교 공간정보공학과 학부과정