
깃허브만 잔디를 쓰는건 아니니까
블로그 홈에 잔디 위젯을 올렸다. Notion DB에서 type과 날짜를 읽어서 하루를 2×2 ~ 3x3 블럭으로 표현하는 구조로 구현했다. 기록, 개발, 읽기, 수영(운동). 내가 오늘 얼마나 부지런하게 살았는지를 한눈에 볼 수 있는 구조! 완벽해!

문제는 채우는 과정이었다. 나는 귀찮은 일을 정말 싫어한다.
딸깍의 시대에 직접 행을 추가한다고?
노션 앱을 열고, 잔디 DB를 찾아가고, 행을 추가하고, 새 페이지에서 타입을 설정한다. 네 단계.
수영 끝나고 탈의실에서, 책 덮으면서 잠들기 직전에 그 순간에 이 흐름을 따라가는 게 생각보다 멀었다. 귀찮으면 안 하게 된다. 안 하면 잔디가 빈다. 잔디가 비면 위젯을 만든 의미가 없다.
기록을 못하는건 시스템의 문제라고, 여전히 나는 믿고 있다.
어떻게 해결할 것인가
해결 방법을 좁혀나갔다. 아이폰을 쓰던 시절이었으면 iOS 단축어로 대충 띄웠을텐데. 내 디바이스를 고려해서 페이지를 하나 만들기로 했다. “아무나 접근할 수 없도록” 인증 절차를 추가하기로 했다.
구글 로그인? 오버스펙이다.
ENV로 접근해볼까? URL 키 검증으로 결정했다. 인증은 env에 박아둔 랜덤 문자열로, 어드민 페이지 가보자고!
구현은 잠깐 사이에
Claude Code에 프롬프트를 던졌다.
실제로는 훨씬 길고 상세한 조건이지만 요약해보자면
- 타입은 DB에서 동적으로 - 날짜는 KST 기준 오늘로 자동 - 이미 완료된 타입은 시각적으로 구분 - 버튼만 크게, 모바일 최적화

결과물이 나왔을 때 잠깐 웃었다. 블로그에 사용된 UI 요소들을 활용해서 마스킹테이프에 울퉁불퉁 테두리, 완료된 타입은 검정으로 꽉 채워지는 버튼. 생각보다 훨씬 귀여웠다.

이제 진짜 딸깍이다.
[START] 홈화면 아이콘 탭 → 어드민 페이지의 인증키까지 입력된 상태로 진입 → 버튼 탭 → 기록 완료 🎉 [END]
노션 앱을 열 필요도, DB를 찾아갈 필요도, 타입을 설정할 필요도 없다. 마찰이 줄어드니까 실제로 더 자주 누르게 된다.
귀찮음을 해결하려다 스펙이 또 늘어났다.
바이브 코딩으로 하는 개인 프로젝트의 좋은 점, 내 맘대로 원하는 대로 스펙 확장이 가능하다는 점이 여실히 느껴지는 날이다.