-
진행 상황 문서 정기 갱신으로 팀 컨텍스트 맞추기
오늘 PROGRESS.md를 업데이트했다. 로그인 기능이 드디어 활성화 단계로 들어갔고, 중복 처리 버그도 고쳤으며, 새로운 브랜치인 slecs의 작업 현황까지 반영했다. 문서 하나 갱신하는 일처럼 보일 수 있지만, 이건 팀의 현재 지점을 정의하는 작업이었다.
읽기 → -
구글 로그인 중복 계정 생성을 멱등성 설계로 차단
구글 로그인을 통한 계정 중복 생성 문제를 잡았다. 이건 생각보다 쉽게 발생하는 버그인데, 특히 모바일 환경이나 느린 네트워크에서 더 자주 터진다. 데이터베이스 유니크 제약과 애플리케이션 수준의 멱등 처리로 양쪽에서 막는 방식으로 해결했다.
읽기 → -
구글 로그인·코인 다리 완성 후 진행 문서로 팀 방향을 정렬한 경험
마일스톤을 지날 때마다 PROGRESS.md 를 꼼꼼히 업데이트했다. 구글 로그인이 활성화되고, 코인 다리 기능이 연결되었으며, 온보딩과 스플래시 스크린이 다음 작업으로 명시되는 순간, 문서를 정리하는 건 단순 기록이 아니라 팀의 흐름을 가시화하는 일이었다.
읽기 → -
구글플레이 인앱결제 영수증 서버 검증으로 안전한 코인 적립 구현
구글플레이 인앱결제로 사용자가 구매한 코인을 신뢰할 수 있게 적립하는 백엔드 다리를 만들었다. 클라이언트에서 받은 영수증을 검증하고, 검증 결과에 따라 안전하게 코인을 지급하는 흐름이다.
읽기 → -
AI 캐릭터 서비스에 사용자 관계 기억 기능 통합
API 여러 개가 서로 다른 엔드포인트에서 사용자와 캐릭터 간의 상호작용을 기록하고 있는데, 그 정보들이 제각각 흩어져 있었다. 채팅 맥락은 chat 라우트에, 선물 기록은 gift, 사진 공유는 photo—각각 따로따로였고, 캐릭터 프로필도 단편적이었다. 이번 작업은 그 흩어진 정보들을 하나의 글로벌 사용자 프로필에 누적하고, 관계의 맥락을 요약해서 다시
읽기 → -
LLM provider 교체에 유연한 추상화 구조 도입
이번에 LLM provider를 추상화하는 작업을 했다. Claude, Anthropic, 그리고 로컬 모델로 쉽게 전환할 수 있도록 기반을 다진 거다.
읽기 → -
진행 상황 문서로 팀 의사결정을 체계적으로 기록하는 법
PROGRESS.md를 갱신했다. 로그인, 친밀도, 사진업로드, fresh셀카, 외모, LLM 관련 결정들이 쌓여가면서 한번쯤은 정리해야겠다 싶어서다. 단순한 문서 갱신이지만, 이 작은 습관이 팀 운영에서 생각보다 큰 역할을 한다는 걸 계속 느끼고 있다.
읽기 → -
캐릭터 이미지를 아이돌·웹툰 스타일로 리브랜딩하고 UI 겹침 해결
요즘 콘텐츠 기반 플랫폼에서 비주얼 업데이트만큼 팀 전체에 영향을 미치는 작업도 드물다. 이번 작업도 마찬가지였다. 세 캐릭터의 이미지를 아이돌/웹툰 스타일로 리브랜딩하면서, 동시에 UI에서 셀카가 겹치는 문제까지 해결했다.
읽기 → -
친밀도 100 돌파와 사진 비전 기능으로 캐릭터 상호작용 강화
캐릭터와의 상호작용을 한 단계 더 깊게 만들기 위해 두 가지 새로운 기능을 함께 출시했다: 친밀도 레벨이 100을 넘은 후의 진척 단계와 사용자가 업로드한 사진에 캐릭터가 반응하는 비전 기능이다.
읽기 → -
Auth.js로 인증 전면 개편하며 익명 계정 병합 구현
최근 인증 시스템 전체를 Auth.js 기반으로 개편하면서 Google 로그인을 추가하고, 익명 사용자를 기존 계정으로 병합하는 기능을 넣었다. 동시에 초기 설정 자동화를 위해 Polar setup 스크립트도 구성했는데, 이 작업이 생각보다 복잡했던 이유와 의사결정 과정을 정리해본다.
읽기 → -
배포 실패 시에만 팀 알림 보내도록 개선
publish.sh 배포 스크립트의 알림 정책을 손질했다. 성공했을 때는 조용히 지나가고, 실패했을 때만 팀에 소식이 가도록 변경한 작업이다.
읽기 → -
운영 모니터링 알림 과부하를 일일 요약 체계로 개선
운영 모니터링 스크립트들의 알림 정책을 다시 정리했다. 정상 동작은 침묵하고, 문제가 실제로 발생했을 때만 알림을 보내는 방식으로 전환하면서, 동시에 일일 통합 요약을 추가해서 전체 상황을 한눈에 파악할 수 있게 만들었다.
읽기 → -
배포 실패 시에만 알림 전송하도록 배포 스크립트 개선
배포 스크립트의 알림 전략을 손봤다. 정상완료일 땐 입을 다물고, 문제가 터졌을 때만 신호를 보내도록 변경한 것이다.
읽기 → -
발행 봇 알림을 실패 시에만 울리도록 개선
요 며칠 전 자동화 발행 봇의 알림 정책을 손봤다. 그동안 정상 완료했을 때도 매번 알림을 보내던 걸 끄고, 실패(fail count > 0)가 발생했을 때만 팀에 알리도록 바꿨다. 작은 변경처럼 보이지만, 운영 자동화 시스템의 신호-잡음 비율(signal-to-noise ratio)을 개선하는 꽤 중요한 결정이었다.
읽기 → -
배포 성공 알림을 제거해 Discord 노이즈를 줄인 이야기
특정 배포 환경에서 배포 완료 후 성공 메시지를 Discord로 보내던 기능을 제거했다. 단순한 알림 삭제처럼 보이지만, 이 작은 변경 뒤에는 팀의 배포 문화와 의사결정이 어떻게 진화해왔는지가 담겨 있다.
읽기 → -
인물 카드·감정 케어 완료를 살아있는 진행 문서로 기록한 방법
이번엔 PROGRESS.md 파일을 갱신했다. 개별 인물 카드와 감정 케어 기능이 완료됨을 반영하는 작업이었는데, 단순한 체크리스트 업데이트가 아니라 팀이 지금까지 어디까지 왔는지를 어떻게 투명하게 기록하고 공유할 것인가 하는 문제에 시간을 썼다.
읽기 → -
인물 카드에 2D·실사 표현과 감정 케어 기능 추가
개별 인물에 대한 2D/실사 카드와 감정 상태 기반 케어 기능을 한 번에 추가했다. 3개의 API 라우트(chat, gift, selfie)와 채팅 페이지, 메인 페이지 UI를 함께 수정하는 꽤 큰 작업이었다. 이 기능이 왜 필요했고, 구현할 때 어떤 설계 선택을 했는지 정리해본다.
읽기 → -
2D와 실사 캐릭터 타입을 완전히 분리해 스키마 오염 해소
캐릭터 시스템에서 2D와 실사를 별개의 관계로 완전히 분리했다. 한 번에 끝낼 수 있는 작은 작업이지만, 그 배경과 의미를 풀어 이야기해보려 한다.
읽기 → -
코인 결제·스타일 고정·셀카를 한 번에 배포한 이유
코인 결제 시스템, 스타일 고정, 환영 셀카, 신규 캐릭터 씬까지—한 커밋에 네 가지 기능이 한꺼번에 들어갔다. 보통은 각 기능별로 브랜치를 나누고 차례대로 배포하지만, 이번엔 특수한 상황이 있었다.
읽기 → -
게임 캐릭터 아키타입 3종 추가와 선물 시스템 연계 설계
새 아키타입 3종과 각각 2D/실사 스타일을 동시 지원하면서 선물 시스템까지 함께 엮는 작업을 진행했다. 단순해 보이는 에셋 추가지만, 그 뒤에는 게임의 진입 경험과 유저 engagement를 어떻게 설계할지에 대한 여러 의사결정이 있었다.
읽기 →