블로그
BrainFit과 BloomCard를 만들며 겪은 이야기 — 알고리즘, 아키텍처, 그리고 인디 개발 경험.
Riverpod 2.x → 3.x 마이그레이션 7단계 생존기
두 개의 Flutter 앱에서 Riverpod, GoRouter, AdMob, Firebase 스택을 7단계에 걸쳐 업그레이드한 과정과 마이그레이션 리스크 관리 노하우.
더 읽기 →Flutter 오프라인 퍼스트 아키텍처 — OfflineQueue와 SyncService
BrainFit이 지하철에서도 데이터를 잃지 않는 방법 — OfflineQueue 테이블, SyncService, 그리고 오프라인 Pro 구독 캐싱.
더 읽기 →BrainFit: 32개 미니게임을 관리하는 Game Registry 패턴
6가지 인지 영역의 32개 게임을 레지스트리 패턴과 지연 초기화로 관리하며 앱 시작 시간을 최적화한 방법.
더 읽기 →BloomCard: 90개의 CustomPainter — 이모지를 전부 버린 이유
기기마다 다르게 보이는 이모지 문제를 해결하기 위해 90개 이상의 CustomPainter를 직접 만든 과정과 예상치 못한 장점들.
더 읽기 →BQ 점수 시스템 — 플레이어가 좌절하지 않는 하락 보호 설계
BrainFit의 BQ 점수가 비대칭 EMA 스무딩과 3단계 하락 보호로 플레이어 동기를 유지하는 방법 — 지는 건 이기는 것보다 두 배로 아프니까.
더 읽기 →BrainFit: 체스 Elo 레이팅으로 두뇌 훈련 난이도 조절하기
체스 레이팅 시스템을 두뇌 훈련 앱에 적용한 이유, K-factor 튜닝과 비대칭 하락으로 플레이어를 몰입 상태에 유지하는 방법.
더 읽기 →커뮤니티 덱 마켓플레이스 설계 — 무료 탐색과 유료 다운로드 사이
BloomCard가 열린 탐색과 지속 가능한 수익화를 균형 잡는 방법 — 다운로드 쿼터, 크리에이터 보상, UGC 마켓플레이스의 경제학.
더 읽기 →행성이 자라는 RPG vs 꽃이 피는 정원 — 두 앱의 진행 시스템 비교
BrainFit의 5단계 행성 진화와 BloomCard의 안정성 기반 정원 성장을 나란히 비교 — 메타포가 메커니즘보다 중요한 이유.
더 읽기 →1인 개발자의 페이월 설계 — 수익화와 사용자 경험 사이
두 인디 앱이 수익화와 사용자 경험을 균형 잡는 방법 — 축하형 페이월, 피처 게이트, 쿨다운 매니저, 그리고 각 결정 뒤의 숫자들.
더 읽기 →FSRS-5 간격 반복 알고리즘을 Flutter에 직접 구현한 이야기
FSRS-5 알고리즘을 간소화해서 플래시카드 앱에 적용한 과정 — 이론적 정확도 10%를 포기하고 5배 빠른 실행 속도를 얻은 트레이드오프.
더 읽기 →사이드 프로젝트 4개를 접고 배운 것들
BrainFit과 BloomCard 이전에 만들고 포기한 4개의 사이드 프로젝트 — 무엇이 잘못됐고, 무엇을 배웠고, 지금 출시하는 앱에 뭐가 남았는지.
더 읽기 →