본문으로 건너뛰기
DEVKBS

About · 소개

강범수
Beomsu Kang

초등 교과서를 EPUB으로 옮기는 일로 시작했습니다. 이후 웹게임, 기업 사이트, 백오피스, 금·카드 거래 플랫폼을 거쳤고 지금은 직접 만든 서비스를 운영합니다. 화면을 그리는 시간보다 '이 값은 누가 주인인가', '이 상태는 어디에 있어야 하는가'를 붙잡고 있는 시간이 깁니다.

역할
프론트엔드 개발자
위치
대한민국
기록된 작업
21건
연락
kbs21c1987@gmail.com

Career · 커리어

  1. 01

    Dpectrum

    2024.11 – 2025.11

    프론트엔드 개발자 (리드·전담)

    거래가 일어나는 플랫폼들의 프론트엔드를 전담했습니다.

    • 숙박 앱 백오피스를 시작으로 트레이딩 카드 거래·경매, 금 거래 앱 2종을 차례로 맡았습니다. 대부분 프론트엔드 전담이었습니다.
    • 돈과 시간이 걸린 화면을 주로 다뤘습니다. 숫자가 화면마다 어긋나지 않게 만드는 것, 마감 시각을 신뢰할 수 있게 만드는 것이 반복되는 과제였습니다.
    • 소셜 로그인·본인인증·결제·실시간 채팅처럼 보통 나눠 맡는 영역을 혼자 붙이면서, Storybook과 테스트로 스스로를 검증하는 습관이 생겼습니다.
    • 서버 상태와 클라이언트 상태의 경계를 명확히 두는 습관이 이 시기에 굳었습니다.
  2. 02

    루와콘텐츠그룹

    2024.04 – 2024.09

    프론트엔드 개발자 (선임)

    공공기관 홍보 사이트와 기업 웹사이트를 Next.js로 리뉴얼했습니다.

    • 남해문화관광재단의 남해독일마을 사이트를 카페24 기반에서 Next.js로 전면 리뉴얼했습니다.
    • 이미지 안에 갇혀 있던 텍스트를 마크업으로 꺼내고, 필터 상태를 URL로 옮겨 검색과 공유가 가능한 사이트로 바꿨습니다.
    • Notion을 CMS로 쓰는 구조를 만들어 두 개의 기업 사이트에 적용했습니다. 관리자 시스템을 만들지 않고도 클라이언트가 콘텐츠를 관리하게 했습니다.
    • 검색 노출 세팅과 배포·도메인 연결까지 직접 맡아, 만드는 것과 운영하는 것의 거리를 좁혔습니다.
  3. 03

    Vstro

    2021.11 – 2023.12

    프론트엔드 개발자 (주임)

    웹게임, 블록체인 서비스, 기업 사이트까지 폭넓게 만든 2년.

    • 브라우저에서 도는 HTML5 게임 두 편의 홈페이지와 인게임 UI를 맡았습니다. 그중 하나는 거래소에 상장됐습니다.
    • ASP.NET Core MVC 스택을 직접 익혀 컨트롤러와 뷰까지 다뤘습니다. 화면 작업에서 백엔드를 기다리는 시간이 사라졌습니다.
    • 레거시 사이트를 Next.js로 옮기는 일을 반복하면서, 전면 개편 대신 단계적으로 이전하는 방식을 익혔습니다.
    • 디자인 전달 방식을 Figma로 옮기자고 제안해 팀의 협업 방식을 바꿨습니다.
    • next-intl로 다국어를 처음 붙여 봤습니다. 국제화가 라이브러리 문제가 아니라 정보 구조 문제라는 걸 이때 알았습니다.
  4. 04

    아이스캔디

    2021.06 – 2021.11

    프론트엔드 개발자 (계약직)

    초등 교과서를 EPUB 디지털 교과서로 옮겼습니다. 첫 실무.

    • 김영사 초등 영어·수학·과학 교과서를 EPUB 형식의 디지털 교과서로 전환했습니다.
    • 듣기 자료 재생과 문제 풀이 같은 인터랙션을 지면 안에 넣었습니다.
    • 웹표준과 웹접근성을 '지키면 좋은 것'이 아니라 '안 지키면 콘텐츠가 깨지는 것'으로 배웠습니다.

How I work · 일하는 방식

프로젝트가 달라져도 같은 자리에서 같은 질문을 만납니다. 그때마다 꺼내 쓰는 기준을 적어 뒀습니다. 각 항목은 실제로 그렇게 판단해서 잘 됐거나, 그렇게 판단하지 않아서 고생했던 경험에서 나왔습니다.

  1. 원칙 01

    이 값의 주인이 누구인지 먼저 정한다

    서버가 진실인 데이터와 클라이언트가 진실인 데이터를 한 통에 담으면, 언제 버려야 하는지 아무도 답을 못 합니다. 상태를 만들기 전에 주인부터 정해 두면 나중에 치를 값이 훨씬 쌉니다.

  2. 원칙 02

    공유될 값은 URL에 둔다

    목록 필터, 상세 탭, 다단계 폼의 현재 단계. 누군가에게 링크로 보낼 만한 값은 전부 URL에 둡니다. 그러면 공유도 뒤로 가기도 검색 색인도 그냥 따라옵니다.

  3. 원칙 03

    같은 숫자는 한 곳에서만 계산한다

    금액이나 집계처럼 여러 화면에 나오는 값은 함수 하나에 몰아넣고, 화면은 결과만 그립니다. 반올림 규칙 하나가 어긋나면 사용자는 서비스 전체를 의심합니다.

  4. 원칙 04

    되돌릴 수 없는 동작에만 마찰을 준다

    모든 버튼에 확인창을 붙이면 아무도 안 읽습니다. 체결·발송·삭제처럼 되돌릴 수 없는 것에만 한 단계를 더 두고 나머지는 가볍게 둡니다. 마찰은 골고루 뿌리는 게 아니라 필요한 곳에 몰아주는 것입니다.

  5. 원칙 05

    빠른 것과 빠르게 느껴지는 것은 다르다

    고정 비율 컨테이너나 스켈레톤은 로딩 시간을 1밀리초도 줄이지 못합니다. 그런데 체감은 확실히 달라집니다. 무거운 작업일수록 지금 뭐가 돌아가고 있는지 보여주는 게 실제 속도만큼 값을 합니다.

  6. 원칙 06

    라이브러리는 기능보다 관리 상태를 먼저 본다

    다운로드 수는 과거의 지표고, 최근 커밋은 미래의 지표입니다. 시작할 때 이미 멈춰 있던 저장소는 반년 뒤에 발목을 잡습니다.

  7. 원칙 07

    만들지 않기로 하는 것도 설계다

    작은 사이트에 관리자 시스템을 안 붙이기로 한 결정이 그 프로젝트에서 제일 큰 기술 판단이었던 적이 있습니다. 무엇을 직접 만들지 않을지 고르는 것도 결국 설계입니다.

About this site · 이 사이트에 대하여

이 사이트는 포트폴리오이면서 동시에 작업 기록실입니다. 흔한 포트폴리오처럼 결과 화면을 크게 보여주는 대신, 각 작업에서 어떤 문제를 만났고 무엇을 선택했으며 그래서 어떻게 됐는지를 중심으로 적었습니다.

구조도 그렇게 짰습니다. 작업은 카드가 아니라 번호가 붙은 원장의 행으로 쌓이고, 진행 중인 것은 별도의 실험실에 두고, 거기서 얻은 판단은 노트로 정리해 다시 작업과 연결합니다. 세 영역이 서로를 참조합니다.

디자인은 회계 원장과 기술 문서의 질감을 섞었습니다. 카드 대신 선으로 구획을 나누고, 메타데이터는 모노스페이스로 눈금처럼 붙입니다. 라운드와 그림자를 거의 쓰지 않는 대신 헤어라인과 색면 대비로 깊이를 만듭니다.

프레임워크
Next.js 16 (App Router, React Compiler)
스타일
Tailwind CSS v4 · shadcn/ui
상태
Zustand (뷰 상태) · URL search params (공유되는 필터)
모션
Motion · Canvas 2D 인터랙티브 배경
타이포
IBM Plex Sans KR · IBM Plex Mono · Instrument Serif

Elsewhere