구글·애플 소셜 로그인 뒤에, 왜 내 JWT를 다시 발급하나
앱에 구글·애플 소셜 로그인을 붙일 때, 소셜 토큰을 그대로 쓰지 않고 서버가 검증 후 내 JWT를 다시 발급하는 이유. 클라이언트 불신·인증 통일·토큰 수명 통제. 소셜 로그인은 신원확인까지, 세션은 내 JWT로 가져가는 패턴.
앱에 구글·애플 소셜 로그인을 붙일 때, 소셜 토큰을 그대로 쓰지 않고 서버가 검증 후 내 JWT를 다시 발급하는 이유. 클라이언트 불신·인증 통일·토큰 수명 통제. 소셜 로그인은 신원확인까지, 세션은 내 JWT로 가져가는 패턴.
협업 앱의 진짜 적인 진입 장벽을, 바구니마다 붙는 ‘6자리 코드’ 하나로 없앤 온보딩 설계. 검색·수락·권한 단계를 제거하고 코드만 불러주면 합류. 6자리인 이유(입으로 전달 가능), 같은 코드 패턴을 친구초대 성장에 재사용한 방법.
가족 공유 장보기 앱의 실시간 협업을 WebSocket 없이 FCM 푸시로 구현한 이유와 구조. 변경→DB갱신→멤버에게 푸시→자동 새로고침. 오프라인 강함·인프라 단순·알림 채널 통합의 장점과, 느슨한 실시간에만 맞는 한계.
Flutter 위젯 테스트 91개를 운영하며 얻은 것. 순수 도메인은 단위테스트·화면은 위젯테스트로 분리, 그리고 drift가 붙은 화면 테스트에서 스트림이 안 닫히는 함정을 pumpWidget(SizedBox())+pump로 정리하는 법.
백엔드 없는 100% 로컬 Flutter 앱(Drift)에서 데이터를 안 깨뜨리며 스키마를 올리는 법. 레이어 분리로 도메인 순수하게, 마이그레이션은 ‘컬럼 추가만’, 설정은 단일 행 테이블. 실제 v2~v5 이력 공개.
단식 앱에서 버튼을 놓쳐도 기록이 안 깨지게 만든 설계. 현재 상태를 저장하지 않고 이벤트 로그에서 페이즈를 도출(derivePhase), 버튼은 상태 전환이 아니라 기록 추가로. ‘예상이 기본값, 기록은 수정’ 원칙.
혼자 만든 Flutter 앱을 Play에 올리기까지의 실전 체크리스트. 애드몹 실유닛 교체·IAP 등록·개인정보처리방침·건강 선언·KIPRIS 상표조회·서명키, 그리고 debug에선 안 나오고 릴리스 실기기에서만 터진 버그들까지.