피드로 돌아가기
I built a CLI that roasts HTTP status codes instead of just logging them
Dev.toDev.to
Backend

Zero-dependency 설계를 통한 20KB 경량 HTTP 디버깅 CLI 구현

I built a CLI that roasts HTTP status codes instead of just logging them

Bhabishya Bhatt2026년 4월 18일6intermediate

Context

기존 터미널 로그의 단조로운 텍스트 출력으로 인해 HTTP 상태 코드의 심각성을 즉각적으로 인지하기 어려운 가독성 문제 발생. 특히 500 에러와 200 성공 응답이 시각적으로 유사하여 서버 상태 파악에 병목이 발생하는 환경을 개선하고자 함.

Technical Solution

  • 외부 API 의존성을 배제하고 ASCII art와 Emoji 기반의 자체 텍스트 렌더링 엔진을 구축하여 법적 리스크 제거 및 범용성 확보
  • runtime dependency를 완전히 제거한 TypeScript 컴파일 구조를 통해 npm install 속도를 100ms 미만으로 단축
  • reactions.json 형태의 데이터 분리 설계를 통해 로직 수정 없이 콘텐츠만 업데이트 가능한 기여 구조 설계
  • HTTP 상태 코드의 심각도에 따라 1줄-박스-전체 화면으로 이어지는 3단계 계층적 렌더링 시스템 적용
  • structural typing 기반의 ReqLike/ResLike 인터페이스 정의로 @types/express 의존성 없이 Node.js 및 Express 환경 동시 지원
  • rarity 옵션을 통한 확률적 출력 제어로 빈번한 에러 발생 시 사용자가 느끼는 시각적 피로도(habituation) 감소

- 라이브러리 설계 시 특정 프레임워크의 타입 정의 대신 공통 인터페이스를 정의하여 호환성 확장 - 사용자 경험 유지를 위해 반복적인 알림이나 로그에 확률적 출력(Rarity) 로직 검토 - 기여 장벽을 낮추기 위해 핵심 로직과 콘텐츠 데이터를 JSON으로 엄격히 분리

원문 읽기