프로필 사진

안녕하세요,

주니어 프론트엔드 개발자 박시우입니다.

자기소개

졸업작품 어플리케이션 개발에 매일 3시간만 자며 매달렸을 만큼 아무리 사소한 문제라도 시간이 얼마나 걸리든 꼭 해결해야 직성이 풀리는 성격입니다.

효율적인 워크플로우를 추구합니다.
SVG 파일을 반복적으로 import 해야 하는 상황에서 자동으로 코드를 생성하는 node script를 작성해 npm 명령어만으로 간단하게 해결할 수 있도록 했으며, 블로그의 썸네일을 자동으로 생성하는 API를 개발하는 등 반복적인 작업을 최소화하는 것을 좋아합니다.

더 좋은 커뮤니케이션 방법, 협력 방법을 항상 고민합니다.
졸업작품시 Git-flow 기반의 협업을 제안해 적용하고, 멋쟁이사자처럼 프론트엔드 스쿨의 회고조 조장, 스터디 장, 팀 프로젝트 팀장으로 활동하며 칭칭이(도움이 필요한 동료를 적극적으로 서포트하는 활동) 스터디, 팀 프로젝트 등을 이끈 바 있습니다.

스택 (진행한 프로젝트 수)

Frontend
  • JavaScript 6
  • TypeScript 4
  • React.js 5
  • Vue.js 2
  • Next.js 3
  • Flutter 2
  • HTML
  • CSS
  • Sass
  • Tailwind
Backend
  • Django 2
  • Node.js 2
  • Firebase 3
Database
  • PostgreSQL 3
ETC / Tools
  • Figma
  • Adobe Illustrator
  • Git/Github
  • Python

프로젝트

Snappy 4인 팀프로젝트 - FE 4인, 기여도 40%

Github발표 자료발표 영상

스냅 사진사와 이용자를 매칭하는 SNS 서비스입니다.

사용한 스택
  • React.js
  • JavaScript
  • styled-components
성과
  • Backend API 호출이 용이한 useAPI Custom Hook 개발 (실제 사용 예시)
    • 서버와의 비동기 통신시 사용되는 반복되는 패턴을 공통 훅으로 분리
    • State로서 응답과 에러를 헨들링할 수 있도록 개발
    • API를 객체로 관리해 편리한 API 호출이 가능하게끔 설계
  • 유연한 컴포넌트 설계를 위해 Compound Component 패턴 활용
    • 로직은 Custom Hook 패턴으로 분리하는 등 유지보수가 용이한 컴포넌트 디자인(실제 사용 예시)
  • JSDoc을 적극적으로 활용해 개발 경험 향상
  • SVG 파일 import문을 자동으로 생성해주는 node script 작성
  • 팀 리더로서 참여
    • eslint, prettier, Live Share 등 다양한 툴을 활용해 코드 품질 향상 도모
    • Git-flow 활용, issue, commit message, PR 컨벤션 확립 등의 방법으로 협업 효율화

Share it! 개인 프로젝트

Github서비스 링크

코드를 서로 나눌 수 있도록 마크다운 입력이 가능한 커뮤니티입니다.

사용한 스택
  • React.js
  • TypeScript
  • styled-components
  • Node.js
  • Firebase
성과
  • node-mailer 모듈을 활용해 댓글이 달릴 경우 글 작성자에게 메일을 보내는 API 개발
  • Code Splitting, 서브셋 폰트 등을 활용해 성능 최적화 (관련 포스트)
    • Lighthouse 기준 성능 점수 82점에서 91점으로 향상

기술 블로그 개인 프로젝트

Github블로그 링크

하나부터 열까지 직접 개발하는 기술 블로그입니다.

사용한 스택
  • Next.js
  • TypeScript
  • styled-components
  • Node.js
  • Firebase
성과
  • 빌드 후 바뀔 필요가 없는 점을 감안해, remark 를 활용 Markdown으로 작성한 포스팅을 정적 웹사이트로 빌드 (Static Site Generation)
  • SEO를 고려한 시멘틱 웹 개발
    • Google 총 노출 수 2430회, 평균 게재순위 17.8위
  • Express.js를 활용해 Thumbnail과 Open Graph Image 생성 자동화
  • 블로그 내 게시물 검색용 엔드포인트 구현 및 debouncing 기법 활용해 API Call 최적화 (관련 포스트)

착한 이륜차 운전자 평가 모델 개발용 설문 폼 개발 개인 프로젝트 - 서울시립대학교 공간 데이터베이스 연구실 연구과제

Github설문지 링크

AHP 분석법에 기반해 사용자가 슬라이더를 움직이면 실시간으로 유효성을 검증하는 복잡한 로직의 웹 설문지를 개발했습니다.

사용한 스택
  • Next.js
  • TypeScript
  • Recoil
  • Cypress
  • Tailwind
성과
  • Python으로 개발된 유효성 검증 로직을 TypeScript로 마이그레이션
    • 비효율적인 로직 개선 및 리팩토링 병행 (관련 포스트)
    • 복잡한 로직의 동작 확인을 위해 Cypress 활용해 e2e 테스트 코드 작성
  • 사용자가 슬라이더를 움직일 때마다 실시간 유효성 검증 구현을 위해 recoil 사용
    • selector 를 활용해 검증 계산의 결과를 여러 컴포넌트에서 구독할 수 있도록 개발
    • 모든 문제의 유효성이 통과되었는지 여부를 확인하고, 통과하지 못한 문제는 Global Navigation Bar에서 확인 가능하도록 상태관리 플로우 구축
  • Backend 엔드포인트 명세 설계

금연 타이머 Smoquit 개인 프로젝트

Github서비스 링크

금연을 도전하는 사람들에게 담배를 끊어 얻게된 이득을 실시간으로 보여줘 금연에 대한 동기를 부여해주는 Web App입니다.

사용한 스택
  • React.js
  • Redux
  • Bootstrap
  • Firebase
성과
  • React.lazy() 활용해 레이지 로딩 구현
  • React.Suspense 활용해 loading indicator 구현

Dayplan.it 2인 팀프로젝트, 풀스택 개발

Github작품 설명

경로 기반 일정 관리 크로스플랫폼 어플리케이션입니다.

사용한 스택
  • Flutter
  • Django
  • PostgreSQL
  • AWS
성과
  • 도시과학대학장상 수상
  • 순서와 경로가 담긴 스케줄 데이터를 효율적으로 다루기 위해 Frontend / Backend 양측에서 Serializer, Deserializer 개발
  • 직관적인 일정 관리를 위해, 스크롤이 가능한 수직 타임라인에 드래그 앤 드롭으로 일정 블록의 순서를 바꾸거나 삭제하고, 길게 누르며 드래그해 일정 블록의 지속 시간을 변경할 수 있는 위젯을 구현
    • 스케줄의 종류, 장소, 순서, 시각, 시간이 자유자재로 바뀔 수 있도록 로직을 설계
    • 타임라인을 벗어나거나 최소 스케줄 시간은 넘도록 하는 등 다양한 상황을 고려해 예외처리
  • Django Rest Framework를 사용해 8개의 엔드포인트를 가진 RESTful API를 구현
  • 순서가 있는 공간 데이터를 효과적으로 다룰 수 있도록 DB 설계

카카오톡, 디스코드 챗봇 개인 프로젝트

기능 설명 봇 카카오톡 오픈프로필

코인 가격 조회, NFT 가격 조회 등 20 ~ 30가지의 블록체인 투자 관련 기능을 가진 카카오톡 봇과, 커뮤니티 관리 기능을 탑재한 디스코드 봇입니다.

사용한 스택
  • Node.js
성과
  • 카카오톡 봇 실 사용자 약 500여 명 (서비스중)
    • 코인 초성검색/이름검색 구현
    • UPBit, Binance, Gate.io, Bithumb 등 각 거래소별로 상이한 Open API 사용에 맞춰 쿼리 및 데이터 파싱
    • JSON 활용해 로컬 데이터베이스 구축, 사용자가 직접 특정 NFT의 한글명을 등록할 수 있도록 기능 구현
  • NFT 프로젝트 커뮤니티 관리를 위한 이벤트 봇 개발
  • NFT 정보 검색 및 보유중인 NFT를 한눈에 볼 수 있는 ‘가족사진’ 기능 개발
    • 약 2800여 명의 사용자가 있는 NFT 프로젝트에서 실사용

인천시 생활폐기물 발생량 분석 및 예측 모델 개발 4인 팀프로젝트 - 서울시립대학교 공간 데이터베이스 연구실 연구과제

인천시 각 구에서 수집하는 생활폐기물 수거 기록과 카드 사용 데이터, 택배 데이터, 통신사 유동인구 데이터 등을 활용해 생활폐기물 발생량을 분석했습니다.

사용한 스택
  • Python
  • PostgreSQL
성과
  • 인천시 내의 각 구에서 보내주는 Raw Data의 형식에 일관성이 없고 품질이 매우 낮아 Python과 C# ASP.NET 등으로 자동화 프로그램 개발, 200GB의 텍스트 및 공간 데이터 수집
  • PostgreSQL을 활용해 분석용 데이터를 DB화
  • GIS, Python 등을 이용해 데이터를 시각화하고 데이터의 특성을 파악

활동

콘텐츠웨이브 Tech Internship

OTT서비스를 제공하는 Wavve에서 Web Development Internship을 진행중

타입스크립트 넌 내 타입 집필

타입스크립트를 처음 접하는 사람들을 위한 개념서 (리디북스 출간)

  • 인터페이스, 제네릭 챕터 집필 참여

Google Developer Student Clubs UOS

Core Member

맡은 역할
  • Frontend Team Core Member (22.09 ~)
  • Data/ML Team Core Member (22.03 ~ 22.09)
경험 내용
  • 주기적으로 Frontend Tech Talk을 진행
  • 신입 멤버 선정을 위해 받은 자기소개서를 효율적으로 찾아볼 수 있는 Web Page를 Next.js 이용해 개발
  • Confluence, Slack, Gather 등의 커뮤니케이션 툴을 활용해 Daily Scrum, Sprint 회고, Kick Off, CPU Meeting 등을 주도

기타

자격증

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

    한국데이터산업진흥원

수상 내역

  • 부트캠프 우수 수료생

    멋쟁이사자처럼 FE School, 특별상, 콘텐츠상, 동료칭찬상

  • WEB 이력서 디자인 경진대회

    멋쟁이사자처럼 FE School, 최우수상

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

    경로 기반 일정 관리 크로스플랫폼 어플리케이션 Dayplan.it

    서울시립대학교, 도시과학대학장상

  • 실내공간 3D 데이터 활용 아이디어 해커톤

    동국대학교, 우수상 관련 기사

수강 내역

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

    부트캠프

    • 회고조 조장, 팀프로젝트 팀장으로 활동하며 Soft Skill 발휘
    • 59명의 동료들에게 리액트로 투두 개발하기 특강 진행 (스크린샷)
    • 동료가 마주친 이슈를 함께 해결해나가는 "칭구칭긔들" 스터디 리드(트러블슈팅 기록)
  • AWS Cloud Practitioner Essentials

    Amazon Web Service Training and Certification 수료증

  • AWS Technical Essentials

    Amazon Web Service Training and Certification 수료증

학력

서울시립대학교

공간정보공학과