안녕하세요, 프론트엔드 개발자 백승준입니다.

단순한 화면 구현을 넘어 사용자의 이용 흐름을 이해하고 구조를 설계하여 더 나은 사용자 경험을 만드는 데 집중합니다.

About 섹션으로 이동

About

백승준 프로필 사진

Profile

백승준 프론트엔드 개발자

안녕하세요, 사용자의 이용 흐름을 이해하고 구조를 설계하여,
더 나은 사용자 경험을 만드는 것을 중요하게 생각하는 프론트엔드 개발자 백승준입니다.

웹퍼블리셔 경험을 통해 화면을 구현하는 일에 흥미를 느꼈고,
이후 사용자와 서비스가 상호작용하는 과정을 더 깊이 다루고 싶어 프론트엔드 개발에 관심을 갖게 되었습니다.

기능의 동작 원리와 구조를 이해하며 구현하려고 노력하고,
협업 과정에서 문서화와 정리를 통해 더 나은 작업 환경을 만들고 싶은 개발자입니다.

현재는 기본기를 다지며 직접 기획한 개인 프로젝트를 통해 설계부터 구현까지의 전 과정을 경험하고 있으며,
학습 과정을 꾸준히 기록하며 기술적 깊이를 갖춘 개발자로 성장하고 있습니다.

Experience

웹퍼블리셔

(주)신비웹 웹에이전시에서 약 2년 8개월간 웹퍼블리셔로 근무하며
다양한 산업군의 웹사이트 구축, 운영, 유지보수를 담당했습니다.

대기업 그룹사의 웹사이트를 비롯해 병원, 대학교, 기업, 쇼핑몰, 프랜차이즈 등
여러 도메인의 프로젝트를 수행하며 각기 다른 서비스 목적과 요구사항을 실무에서 경험했습니다.

프로젝트마다 요구사항에 맞는 레이아웃과 UI를 구현하고,
JavaScript와 jQuery를 활용한 인터랙션 개발을 통해 사용자 경험을 개선해왔습니다.

또한 웹 표준과 웹 접근성을 고려한 퍼블리싱의 중요성을 실무를 통해 익히며,
다양한 사용자 환경에서도 안정적으로 동작하는 화면을 구현하는 역량을 키웠습니다.

Education

수료 및 학력

  • 멋쟁이사자처럼

    프론트엔드 개발 부트캠프 수료

    2025.08 - 2026.02

  • 이젠아카데미

    웹퍼블리셔 양성 과정 수료

    2021.08 - 2022.01

  • 동양미래대학교

    정보통신공학과 졸업 3.73 / 4.5

    2014.02 - 2020.03

Skills

Web

  • HTML5

    웹 표준을 기반으로 한 시맨틱 마크업 및 접근성 고려한 구조 설계

  • CSS3

    반응형 레이아웃 구현 및 애니메이션과 인터랙션을 활용한 UI 스타일링

  • 웹 접근성

    시맨틱 마크업, aria 속성 등을 활용하여 다양한 사용자 환경을 고려한 UI 구현

Language

  • JavaScript

    ES6+ 문법 기반 비동기 처리, 이벤트 흐름 및 DOM 제어 구현

  • TypeScript

    API 응답 및 도메인 데이터 타입 정의를 통한 안정성 있는 코드 작성

Framework,
Library

  • React

    컴포넌트 기반 UI 설계 및 사용자 상태에 따른 화면 제어 경험

  • Next.js

    App Router 기반 페이지 구조 설계 및 인증/데이터 흐름 구현 경험

  • Zustand

    전역 상태 관리 및 persist를 활용한 로그인 상태 유지 및 hydration 문제 해결 경험

  • Tailwind CSS

    유틸리티 기반 스타일링을 통한 빠른 UI 구현 및 일관된 디자인 적용

Tools

  • Git/GitHub

    브랜치 전략 및 PR 기반 협업 경험

  • Vercel

    Next.js 및 정적 프로젝트 배포 및 환경 설정 경험

  • Vite

    React 기반 프로젝트 빌드 및 개발 환경 구성 경험

  • Photoshop

    이미지 편집 및 UI 리소스 제작 경험

  • Figma

    디자인 시안 기반 UI 구현 및 협업 경험

* 프로젝트 경험을 기반으로 React 생태계를 중심으로 지속적으로 학습하고 있습니다.

Projects

junn.dev 개인 블로그 메인 화면

junn.dev 개인 블로그

개인 프로젝트 | 기획, 설계, 구현, 배포

Markdown 기반으로 글을 작성하고, 빌드 시 이를 가공하여 화면에 렌더링하는 개인 기술 블로그입니다.

단순히 글을 작성하는 공간을 넘어서, GitHub 레포지토리를 콘텐츠 관리 시스템(CMS)처럼 활용하여 Markdown 파일을 중심으로 콘텐츠를 관리하고, 변경 이력을 Git으로 추적할 수 있도록 설계했습니다.

주요 기술

  • React
  • React Router
  • React Markdown
  • TypeScript
  • Vite
  • Vercel
  • CloudFlare

주요 기능

junn.dev 주요 기능 화면 - 1

Markdown 파일을 데이터 소스로 사용하여 게시글을 관리하도록 설계했습니다. 파일을 읽어 본문(content)과 메타 정보(frontmatter)를 분리하고, React Markdown을 통해 본문을 렌더링했습니다.

또한 frontmatter를 활용해 제목, 설명, 날짜, 카테고리, slug 기반 라우팅을 구성하여 카테고리별 게시글 목록과 상세 페이지를 구현했습니다.

junn.dev 주요 기능 화면 - 2

frontmatter를 기반으로 페이지별 SEO 메타데이터 및 OG 태그를 생성하도록 구현했습니다.

Prerender를 적용하여 빌드 시점에 각 페이지의 HTML을 미리 생성하고, 메타데이터를 포함한 완성된 HTML 전달하도록 개선하여 초기 렌더링 성능과 검색엔진 노출을 함께 향상시켰습니다.

트러블 슈팅

메타데이터가 초기 HTML에 반영되지 않는 문제
문제
react-helmet-async로 페이지별 메타데이터를 적용했으나, 개발자 도구에서는 정상적으로 보이는 반면 Ctrl+U 원본 HTML에는 반영되지 않는 문제가 발생했습니다.
원인
react-helmet-async는 React 렌더링 이후 head를 수정하는 방식으로, 서버가 내려주는 초기 HTML에는 메타데이터가 포함되지 않습니다.
해결
클라이언트 방식 대신 프리렌더 단계에서 메타데이터를 포함하도록 구조를 변경했습니다. URL 기준으로 메타데이터를 생성하고, head에 삽입하는 구조로 재설계했습니다.
결과
초기 HTML에 메타데이터가 포함되어 SEO 및 SNS 미리보기가 정상 동작하고, SPA 환경에서도 head가 올바르게 갱신되도록 개선했습니다.
gray-matter 사용 시 Buffer 에러 발생
문제
Markdown frontmatter 파싱을 위해 gray-matter를 사용했으나, 브라우저 실행 시 Buffer is not defined 에러가 발생했습니다.
원인
gray-matter는 Node.js 환경을 기준으로 만들어진 라이브러리로 내부적으로 Buffer를 사용합니다. 브라우저에서는 Node.js 전역 객체를 사용할 수 없어 에러가 발생했습니다.
해결
외부 라이브러리 없이 브라우저에서 직접 동작하는 frontmatter 파서를 직접 구현했습니다. --- 구분자를 기준으로 문자열을 분리하고 key-value 형태로 파싱하는 방식으로 처리했습니다.
결과
브라우저 환경에서 정상 동작하게 되었고, 외부 의존성을 제거했습니다. 직접 파서를 구현하면서 Markdown 데이터 구조에 대한 이해도도 높일 수 있었습니다.
영양제 구독 팀 프로젝트 메인 화면

영구 (영양제 구독)

팀 프로젝트 (FE 4명) | PL (Project Leader)

사용자의 컨디션 상태와 생활 습관을 분석하고 AI 분석을 통해 개인에게 필요한 맞춤형 영양제를 추천하는 서비스입니다.

PL로서 프로젝트 구조, 브랜치 전략, 코드 컨벤션을 정리하고 협업 기준을 맞췄으며, 기능 단위로 작업을 나눠 페이지 흐름에 맞게 역할을 분배해 개발하였습니다. 저는 로그인, 회원가입, 공통 UI, 메인 페이지를 구현했습니다.

주요 기술

  • React
  • Next.js
  • TypeScript
  • Zustand
  • Tailwind CSS
  • Vercel

주요 기능

AI 설문 기반 영양제 추천 흐름 화면

사용자의 기본 정보와 현재 컨디션, 세부 증상에 대한 설문 흐름을 통해 개인의 상태를 단계적으로 선택할 수 있도록 구성했습니다.

설문 결과를 기반으로 AI가 컨디션을 분석하고 맞춤형 영양제를 추천하며, 추천된 영양제의 효능, 복용 방법, 주의사항을 AI로 추가로 확인할 수 있는 흐름으로 설계했습니다.

사용자가 원할 때마다 컨디션을 다시 검사하고 맞춤형 영양제를 추천받는 서비스 특성상, 정기적으로 자동 결제가 이루어지는 구독 방식보다 사용자가 직접 결제하는 흐름이 더 적합하여 일반 결제 방식으로 구현했습니다.

로그인 및 회원가입, 마이페이지 화면

일반 로그인과 카카오 소셜 로그인을 구현하여 사용자가 원하는 방식으로 서비스에 접근할 수 있도록 인증 흐름을 구성했습니다. 카카오 소셜 로그인은 Kakao JavaScript SDK를 활용하여 인가 코드를 요청하고, 이를 서버로 전달해 사용자 인증을 처리하는 방식으로 구현했습니다.

회원가입에서는 PortOne을 활용한 본인인증을 적용하여 사용자 신뢰성을 확보했으며, 입력 필드는 포커스를 벗어났을 때 1차 유효성 검증을 수행하고, 이후에는 실시간 검증이 이루어지도록 처리해 사용자 경험을 개선했습니다.

마이페이지에서는 사용자 정보, 구독 상태, 설문 이력을 확인할 수 있도록 구성했습니다.

트러블 슈팅

헤더 인증 상태 깜빡임 (Hydration Flash) 문제
문제
로그인 상태에서 새로고침 시, 헤더 메뉴가 "로그인/회원가입" → "마이페이지/구독하기"로 순간적으로 변경되는 깜빡임 현상이 발생했습니다.
원인
인증 상태를 Zustand + sessionStorage로 클라이언트에서 관리하면서, SSR 시점에는 user 정보를 알 수 없어 초기 HTML에 비로그인 상태가 렌더링되고, 이후 hydration 과정에서 상태가 복원되며 UI가 변경되었습니다.
해결
인증 상태의 참조를 클라이언트에서 서버로 이동시켜, httpOnly 쿠키의 accessToken을 Server Component에서 읽어 SSR 시점에 로그인 여부를 판단하도록 구조를 변경했습니다. 또한 revalidatePath를 적용해 로그인/로그아웃 시 서버 상태를 즉시 반영하도록 개선했습니다.
결과
초기 HTML 생성 시점부터 올바른 인증 상태가 반영되면서 새로고침 시 UI 깜빡임이 완전히 제거되었고, hydration에 의존하지 않는 안정적인 인증 상태 관리가 가능해졌습니다.
useSearchParams() 사용 시 Suspense Boundary 누락 빌드 에러
문제
카카오 로그인 실패 시 /login?error=kakao 쿼리 파라미터를 감지하기 위해 useSearchParams()를 사용했으나, 개발 환경에서는 정상 동작했지만 빌드 시 Suspense Boundary 관련 에러가 발생했습니다.
원인
Next.js는 빌드 시점에 페이지를 정적으로 렌더링하려고 하는데, useSearchParams()는 브라우저의 URL을 기반으로 동작하는 훅이기 때문에 빌드 시점에는 쿼리 파라미터 값을 알 수 없어 정적 렌더링이 불가능했습니다. 이로 인해 정적/동적 렌더링 경계를 판단할 수 없어 에러가 발생했습니다.
해결
useSearchParams()를 사용하는 컴포넌트를 <Suspense>로 감싸 정적 렌더링과 동적 렌더링의 경계를 명시적으로 분리하도록 수정했습니다.
결과
빌드 에러를 해결하면서도 페이지 전체가 동적 렌더링으로 전환되는 것을 방지했고, 정적 최적화를 유지한 상태에서 쿼리 파라미터 기반 에러 메시지를 정상적으로 처리할 수 있었습니다.

* 아래 영역은 퍼블리싱 프로젝트입니다.
PC 시안만을 기반으로 다양한 디바이스에 대응할 수 있도록 반응형으로 구현한 작업물입니다.

신도테크 메인 화면

신도테크 퍼블리싱 100%

방수 · 코팅 솔루션 전문 기업의 제품 및 시공 사례 중심 웹사이트입니다.

  • 제품 · 프로젝트 중심의 기업형 레이아웃 퍼블리싱
  • Slick, Swiper를 활용해 다양한 슬라이드 구성
환경재단 투어스 메인 화면

환경재단 투어스 퍼블리싱 100%

지역 경제 활성화와 친환경 여행을 주제로 한 캠페인 웹사이트입니다.

  • 이벤트 콘텐츠 중심 랜딩 페이지 퍼블리싱
  • GSAP · ScrollTrigger 기반 스크롤 인터랙션 구현
휴온스랩 메인 화면

휴온스랩 퍼블리싱 100%

글로벌 바이오 기업의 브랜드 · 연구 정보를 제공하는 기업 웹사이트입니다.

  • 영문 사이트 기준의 메인 및 서브 페이지 퍼블리싱
  • 연구 · 제품 정보 전달에 적합한 콘텐츠 레이아웃과 Swiper 구현
중소상공인희망재단 메인 화면

중소상공인희망재단 퍼블리싱 100%

소상공인 지원 사업 및 재단 소식을 제공하는 정보형 웹사이트입니다.

  • 게시판 및 사업 안내 중심 화면 퍼블리싱
  • 정보 탐색 중심 내비게이션 구조 구현
페이브 커피 메인 화면

페이브 커피 퍼블리싱 100%

브랜드 아이덴티티를 강조한 카페 브랜드 웹사이트입니다.

  • 가맹 안내 중심의 랜딩 페이지 퍼블리싱
  • 브랜드 분위기에 맞는 메인 UI 및 비주얼 요소 구현
한국IT서비스산업협회 메인 화면

한국IT서비스산업협회 퍼블리싱 100%

협회 소식과 자료, 행사 정보를 제공하는 협회 공식 웹사이트입니다.

  • 공지 · 자료 · 행사 등 게시판 중심의 정보 구조 퍼블리싱
  • fullPage.js 기반 섹션 단위 스크롤 구조 및 메인 페이지 구현
케이돔 메인 화면

케이돔 퍼블리싱 100%

에어돔 전문 기업의 제품 및 시공 사례 중심 웹사이트입니다.

  • 브랜드 · 제품 · 시공 사례 중심 기업형 UI 퍼블리싱
  • GSAP · ScrollTrigger 기반 스크롤 인터랙션 구현
비트포비아 던전 메인 화면

비트포비아 던전 퍼블리싱 100%

방탈출 테마를 기반으로 한 예약 서비스 웹사이트입니다.

  • 테마 분위기를 반영한 인터랙션 및 애니메이션 퍼블리싱
  • Swiper 기반 슬라이드 구성 및 예약 흐름 UI 구현
성동구정신건강복지센터 메인 화면

성동구정신건강복지센터 퍼블리싱 80%

정신건강 정보와 상담 서비스를 제공하는 공공기관 웹사이트입니다.

  • 정보 전달 중심의 공공기관 UI 퍼블리싱
  • 다양한 정보 페이지를 일관된 구조로 통일성 있는 레이아웃 구현
맛닭꼬(프렌차이즈) 메인 화면

맛닭꼬(프렌차이즈) 퍼블리싱 100%

프랜차이즈 브랜드 소개와 가맹 정보를 제공하는 브랜드 웹사이트입니다.

  • 가맹 전환을 고려한 랜딩 페이지 퍼블리싱
  • 브랜드 메시지 전달을 위한 AOS 기반 스크롤 인터랙션 구현

Thanks

끝까지 읽어주셔서 감사합니다.

기본기를 다지며 꾸준히 성장하는 개발자로 사용자에게 더 나은 경험을 전달하고 싶습니다.
배움을 멈추지 않고 좋은 서비스를 만드는 데 기여하는 개발자가 되겠습니다.

이메일이 복사되었습니다 !