-
여러 페이지에 새 테마 일괄 적용, 디자인 시스템 통합 완성
이번 작업은 CAPSULE과 VITRINE이라는 두 가지 디자인 테마를 전체 페이지에 일관성 있게 적용하고, 각 페이지의 레이아웃을 통일하는 "reskin" 프로젝트를 마무리한 것이다. FigureCard에서 시작한 디자인 변경이 BrandDetail, Drops, FigureDetail, Releases, SeriesDetail 등 6개 컴포넌트에 걸쳐
읽기 → -
블라인드박스 서비스 디자인 정체성을 한번에 잡다
몇 달 전부터 자꾸만 느껴진 게 있었다. 우리 블라인드박스 서비스가 화면마다 조금씩 다르다는 것. 상품 카드는 한 스타일, 카테고리 페이지는 다른 스타일, 드롭 페이지는 또 다른 톤... 사용자 입장에서는 같은 서비스를 쓰는 거지만, 우리 입장에선 매번 "이건 어떤 폰트지?", "이 카드는 왜 이렇게 생겼지?" 하면서 일관성 없이 개발하고 있었다.
읽기 → -
크론 스케줄과 동적 제출 로직을 하네스에 문서화
CLAUDE.md에 IndexNow 자동화 작업의 크론 스케줄과 그룹 동적 제출 로직을 기록했다. 단순해 보이는 문서 업데이트지만, 자동화 시스템을 운영하는 입장에서는 꽤 중요한 작업이다.
읽기 → -
검색 엔진 페이지 등록 무한 대기 버그 수정
신규 프로필이나 콘텐츠가 생성될 때 외부 검색 엔진에 즉시 알려서 빠르게 인덱싱되도록 하는 bot/indexnow-ping.js 파일을 수정했다. 핵심은 외부 API 호출 시 응답이 없어서 무한 대기하던 문제를 12초 타임아웃으로 해결한 것.
읽기 → -
MySQL 8.4 쿼리 파라미터 바인딩 오류 수정
MySQL을 8.4로 업그레이드한 후 데이터베이스 쿼리 중 일부가 간헐적으로 실패하는 현상을 발견했다. 원인을 추적해보니 LIMIT 절에 파라미터 바인딩을 사용했을 때 mysql2 라이브러리가 정상적으로 처리하지 못하는 이슈였다.
읽기 → -
여러 기능을 한 배포에 담으며 배운 것들
한 번에 6개 기능이 나갔다. 졸업, 퀵팩트, freshness, 필터, 모바일, 라이크. 각자 다른 요청에서 비롯한 일들이지만, 결국 한 마이그레이션과 한 번의 문서 정비로 수렴했다. 단순히 기능들을 코드로 마무리하는 것과 "이걸 어떻게 체계적으로 기록할 것인가" 는 다른 차원의 문제였다.
읽기 → -
팀 문서 업데이트와 마이그레이션 호환성 정정
최근 배포된 여러 신기능들을 팀의 공식 문서(CLAUDE.md)에 한 번에 반영하는 작업을 했다. 동시에 데이터베이스 마이그레이션 스크립트의 MySQL 8.4 호환성 문제도 정정했다. 사소해 보일 수 있는 이 작업이 사실은 팀의 일관성 유지와 새로운 환경에서의 안정성을 보장하는, 꽤 중요한 정리 업무였다.
읽기 → -
팀 탐색 기능 정책을 공식 문서에 기록하다
CLAUDE.md에 팀/그룹 발견(discover_groups) 기능의 강화 사항을 문서로 남겼다. 개발 코드는 한 줄도 짜지 않은 작업이지만, 팀 리딩 입장에서는 꽤 중요한 일이었다.
읽기 → -
새 덱스, 초기 설정으로 팀 협업 기초 다지기
새로운 컬렉터블 인덱싱 서비스(blindboxdex)를 론칭하면서 프로젝트 초기 설정을 완료했다. 단순해 보이는 설정 단계지만, 이것이 나중 팀 협업과 서비스 확장의 질을 크게 좌우한다는 걸 이번에 다시금 느꼈다.
읽기 → -
연도 범위 한계 극복과 문서화 강화
discover_groups 봇이 그룹 데이터를 수집할 때 연도 범위가 고정돼 있었다. 이번 작업에서 그 범위를 확대하고 동시에 문서를 정리했다.
읽기 → -
첫 조회자도 인기글처럼 느껴지도록 라이크 초기값 고정
kpop 섹션 포스트의 라이크 개수 초기값을 slug 기반으로 결정적(deterministic)이게 설정하는 기능을 추가했다. 간단한 변경처럼 보이지만 "cold start" 문제를 해결하면서 사용자 행동에 영향을 미치는 작업이었다.
읽기 → -
API 응답 오류, 팀 문서로 공유하기
서비스 연동 중 429(Too Many Requests) 에러를 만났고, 이를 해결한 기록을 팀의 공동 지침 문서에 남겼다. 단순 버그 fix 를 넘어, 팀이 함께 배워야 할 경험을 명시적으로 남기는 과정이었다.
읽기 → -
모바일 네비 가로스크롤, 컴팩트 레이아웃으로 해결
vtuberprofile 의 모바일 네비게이션에서 링크 17개가 화면 폭에 맞지 않아 가로로 스크롤되거나 여러 줄로 늘어나던 문제를 레이아웃 최적화로 정리했다.
읽기 → -
발견 기능 품질 필터 기준 문서 교정
문서와 실제 운영 정책이 따로 노는 상황을 발견했다. VTuber 프로필 서비스의 인디(independent) 발견(discover) 기능에 적용하는 품질 임계값이 팀 지침 문서에는 "medium"이라고 적혀 있는데, 실제 정책은 "high"였다. 그래서 CLAUDE.md 파일의 해당 부분을 정정했다. 코드 한 줄 안 건드리고 문서만 고친 작은 변경이지만,
읽기 → -
모바일 네비게이션 링크 오버플로우 가로스크롤로 막기
한 이커머스 플랫폼의 기본 레이아웃 컴포넌트를 다루면서 자주 마주치는 숙제가 있다. 바로 네비게이션 링크 개수가 많아질수록 모바일 화면에서 깨져 보이는 문제다. 이번엔 26개의 네비게이션 링크가 좁은 모바일 화면에 다 들어가지 않으면서 레이아웃이 찌그러지는 상황을 마주쳤고, 가로스크롤로 풀어낸 경험을 기록해본다.
읽기 → -
Retention 위젯 5곳의 한국어 텍스트 누수 버그 수정
이번에 다국어 환경에서 한국어 텍스트가 노출되는 버그를 발견하고 수정했다. PostMetrics, ReadingProgress, RecentlyViewed, RelatedPosts, TableOfContents 등 5개의 retention 관련 위젯에서 하드코딩된 한국어 문자열이 다른 언어 로케일에도 그대로 노출되고 있었다. 비록 작은 변경처럼 보이지만,
읽기 → -
API 속도 제한으로 느려지던 자동화 봇 안정화
멤버 정보를 외부 API에서 수집해 enriching 하는 봇(enrich_member_bio.py)이 Wikipedia 의 429 Too Many Requests 에러로 자주 중단되곤 했다. 이번에 요청 방식을 개별 fetch 에서 group-level fetch 로 개선해서 API 속도 제한을 회피하게 했다.
읽기 → -
자동화 작업 관리 규칙 문서화
CLAUDE.md에 discover_talents 잡과 cron 인벤토리를 반영했다. 겉보기론 단순한 문서 업데이트지만, 프로젝트의 자동화 작업을 어떻게 체계적으로 관리할지를 팀에 명시하는 작업이었다.
읽기 → -
버튜버 발견 자동화, 검증 게이트로 품질 보증하기
신규 버튜버를 수동으로 찾고 등록하는 프로세스에 자동화 기능을 들였다. discover_talents 잡을 새로 만들어서 공식 채널과 인디 크리에이터를 구분해 처리하고, 인디 경로에는 검증 게이트를 달아 오류를 줄이려고 했다.
읽기 → -
쿼리 매개변수 바인딩의 숨은 함정
mysql2 라이브러리에서 LIMIT ? 플레이스홀더로 페이지네이션을 구현할 때, 잘못된 결과가 나오고 있었다. /debuts 와 /generation 엔드포인트에서 대량의 레코드를 조회할 때마다 offset과 limit 값이 제대로 적용되지 않아, 같은 데이터만 반복되거나 원래 의도와 다른 범위의 결과가 돌아오고 있었다. 조사해 보니 mysql2 의 ex
읽기 →