개발 slecs

주년 알림 범위 45일로 확대, 빈 화면 문제 해결

목차

vtuberprofile 서비스의 'Today 주년 윈도우' 기능 범위를 14일에서 45일로 확대했다. 이전엔 기념일이 임박했을 때만 표시돼 빈 페이지가 자주 나타났는데, 다가오는 마일스톤을 미리 보여줌으로써 사용자 참여도를 높이고 콘텐츠 가용성도 개선할 수 있게 됐다.

맥락: "다가오는" 기념일의 가치

'주년 윈도우'는 특정 기념일이 곧 도래했을 때 사용자에게 사전 알림을 제공하는 기능이다. 예컨대 좋아하는 Vtuber의 데뷔 주년이 30일 뒤라면, 지금 당장 그 정보를 보면 계획(팬아트, 축하 메시지 등)을 세울 수 있다. 그런데 윈도우가 14일이면, 기념일까지 14일이 남았을 때부터만 표시된다. 만약 어떤 사용자가 60일마다 한 번씩 방문한다면? 운 좋게 14일 이내인 기념일이 있을 가능성은 낮다. 결국 자주 빈 화면을 보게 되고, "이 섹션은 뭔가 항상 비어 있네" 하는 UX 피로감이 쌓인다.

왜 45일인가

기간을 확대할 때 자주 마주치는 고민이 '얼마가 적당한가'다. 너무 크면 유명하지 않은 마일스톤까지 노이즈처럼 보이고, 너무 작으면 여전히 빈 페이지 문제가 남는다. 내 경험상 이런 '미리 보기' 윈도우는 대략 3~8주 정도가 자연스럽다. 사용자가 "아, 이건 곧이구나" 체감할 수 있는 심리적 거리감이 그 정도다. 45일(약 6.4주)은 그 범위 안에서 충분히 보수적이면서도 실용적인 지점이다. 통계상 주 방문 사용자들이 평균 3~4주 간격으로 돌아온다면, 45일이면 대부분 최소 한 번은 "다가오는 주년" 콘텐츠를 마주칠 가능성이 생긴다.

변경 사항: 컴포넌트 + 다국어

수정은 두 파일에 집중됐다.

  • src/components/dex/TodayBody.astro: 주년 렌더링 로직이 있는 컴포넌트. 여기서 기한 계산 부분을 14 → 45로 변경했을 것이다. Astro 컴포넌트는 서버사이드에서 날짜 범위를 필터링하고 제한된 목록을 HTML로 변환한다. 이곳이 성능과 정확성의 핵심이다.

  • src/i18n/ui.ts: 다국어 문자열 관리 파일. 사용자 인터페이스에 "14일 이내", "앞으로의 주년", "마일스톤" 같은 레이블이나 설명 문구가 있다면, 45일 정책을 반영해 업데이트했을 것이다. 예를 들어 "다가오는 14일 이내의 주년" → "다가오는 45일 이내의 주년" 같은 식으로.

회고: "빈 상태"의 심각성

이번 작업에서 배운 건 '빈 페이지'가 단순한 미관 문제가 아니라는 것이다. 사용자 입장에선:
- 기능이 작동하지 않는 걸로 착각할 수 있다
- 방문 동기가 없어져 재방문율을 떨어뜨린다
- 심지어 "이 섹션은 볼 게 없는 섹션"으로 학습돼 미래에도 외면한다

그래서 콘텐츠 기반 서비스에선 항상 "no-content state"를 고민해야 한다. 데이터가 진짜 없을 때 빈 칸을 두기보다, 다음 최선의 것(related, upcoming, recommended)을 먼저 제시하는 게 일반적이다. 45일 윈도우도 그 철학의 연장이다.

또한 i18n 파일 변경을 함께 한 건 맞다. 왜냐하면 기간이 바뀌면 안내 문구가 달라져야 하는데, 하드코딩된 문자열로 두면 나중에 재검토 때 놓치기 쉽기 때문이다. 이런 설정값은 항상 데이터(i18n, config 등)로 관리하는 게 베스트 프랙티스다.

마무리

작은 수정 같지만, 사용자가 느끼는 기능의 유용성은 크게 달라진다. 다음은 통계를 모니터링해서 "45일은 너무 긴가, 덜한가" 확인하는 일이 남았다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.