Step Away From the Terminal: I Built BreakPoint with Entire to Disconnect Burned-Out Developers in 15 Seconds
터미널에서 잠시 벗어나세요 — 번아웃 개발자가 15초 만에 화면을 끄도록 만든 BreakPoint
BreakPoint는 개발자가 집중이 막힐 때 짧게 설정하고 야외로 나가도록 돕는 오프라인 우선 PWA입니다. NOAA 태양 위치 계산과 맞춤형 산책 안내를 브라우저에서 처리하며, 테스트 23개가 모두 통과했다고 소개합니다.
- 주제
AI 요약
BreakPoint는 디버깅 중 같은 단서만 반복해서 살피는 상태에서 벗어나도록 설계한 야외 휴식 안내 앱입니다. 사용자는 복잡한 버그, 병합 충돌, 메모리 누수, 배포 전 번아웃 가운데 현재 막힌 문제를 고르고 15분, 20분, 30분 중 휴식 시간을 정합니다. 앱은 출발 전 15초 안에 확인할 안내를 만들고, 산책 중에는 화면을 다시 열지 않도록 반환 시점과 관찰할 지점을 알려줍니다. 작성자는 화면을 오래 보는 집중 상태를 멈추고 주변을 살피는 휴식이 사고 전환에 도움이 된다는 취지로 프로젝트를 설명합니다.
화면을 덜 보는 사용 흐름
BreakPoint는 피드, 알림, 배지로 앱 사용 시간을 늘리는 대신, 휴식 안내를 확인한 뒤 화면을 닫도록 구성했습니다. 음성 안내는 브라우저의 Web Audio API와 Web Speech API로 재생하며, 사용자는 1080×1920 해상도의 잠금 화면용 이미지나 인쇄용 3×5인치 카드를 만들어 돌아올 시각을 확인할 수 있습니다. 오프라인에서도 쓸 수 있도록 Service Worker를 적용했고, GitHub Pages의 하위 경로 배포도 고려했다고 설명합니다.
브라우저에서 계산하는 태양 위치
외부 날씨 API를 호출하지 않고 TypeScript로 태양 위치를 계산합니다. 날짜와 UTC 시각으로 연중 시간각을 구하고, Spencer 방식의 시간 방정식과 태양 적위를 계산한 뒤 위도·경도와 시각각을 이용해 태양 고도를 구합니다. 지평선 근처에서는 Saemundsson 대기 굴절 보정도 적용합니다. 위도와 경도는 유효 범위로 제한하고, 극야와 백야, 황혼, 잘못된 날짜 같은 경우를 테스트한다고 밝힙니다.
태양 계산 외에도 휴식 미션 생성 로직은 선택한 피로 유형과 시간에 맞춰 반환 시각과 관찰 과제를 구성합니다. 같은 입력이면 같은 미션을 생성하며, 낮과 밤에 따라 관찰 안내를 바꿉니다. 저장소는 브라우저의 localStorage를 쓰고, 서버 렌더링 환경이나 저장 데이터가 손상된 상황을 처리합니다.
구현과 검증
앱은 Next.js 15.2.1, React 19, TypeScript 5.8로 만들었습니다. UI는 외부 컴포넌트 라이브러리 없이 CSS로 구성하고, Canvas 2D로 잠금 화면 이미지를 생성합니다. 태양 위치, 미션 생성, 저장소 동작을 다루는 테스트 23개가 모두 통과했다고 보고합니다. 태양 계산 테스트에는 NREL Solar Position Algorithm, Jean Meeus의 천문 계산, NOAA 및 미 해군 천문대 기준값과 비교하는 회귀 검증도 포함됩니다.
작성자는 Entire.io를 사용해 개발 세션의 출처 정보와 아키텍처 결정 기록을 관리했다고 설명합니다. 저장소에는 체크포인트 브랜치와 아키텍처 결정 기록이 포함되어 있으며, 앱의 태양 계산·음성 생성·이미지 제작은 기기 안에서 처리하고 원격 추적을 하지 않는다고 밝힙니다. 프로젝트는 MIT 라이선스로 공개했습니다.
dev.to 반응
- @pengeszikra — 농담입니다. 하지 마세요!
- @laxmikantj — 좋네요.
원문: dev.to / 번역·요약: Trawling