Skip to content
Back

Project Report: klming-flutter

·

Project Report: klming-flutter

Analysis Context

  • Agent: Claude Code (claude-opus-4-6)
  • Project: klming-flutter (클라이밍 커뮤니티 모바일 앱)
  • Privacy level: Full (App Store / Google Play 출시 앱)
  • Commits reviewed: 30+ (최근 6개월)
  • Sessions analyzed: 84 (+ CI/CD runner 103)
  • Period: 2025-08 ~ 2026-03
  • Confidence: High

Project Overview

클라이밍(암벽등반) 커뮤니티를 위한 모바일 앱입니다. 운동 기록, 등급 트래킹, 암장(클라이밍 짐) 검색, 멤버십/이용권 관리, 홈 위젯 캘린더, 다국어 지원(i18n) 등을 제공합니다. App Store와 Google Play에 출시된 프로덕션 앱으로, 에러 모니터링과 인앱 결제를 운영합니다.

Tech Stack: Flutter (Dart), Riverpod 3.0, Supabase (Auth/DB/Storage), shadcn_flutter, go_router, slang (i18n)


User's Role & Contributions

Youngsup은 이 프로젝트의 유일한 개발자이자 제품 매니저입니다. 아키텍처 설계, 구현, 테스트, 빌드/배포 자동화(GitHub Actions), 사용자 피드백 대응까지 전체를 담당합니다. 오랜 기간 지속적으로 유지보수하며 발전시키고 있는 프로젝트입니다.


Technical Decisions

Decision Chosen Approach Reasoning Alternatives Considered
상태 관리 Riverpod 3.0 안전한 비동기 처리, AutoDispose로 메모리 관리 Provider, BLoC
백엔드 접근 DI 패턴 테스트 가능성 + 목 주입 용이 글로벌 인스턴스 직접 사용 (레거시)
테스트 패턴 Fake chain builders 서드파티 SDK의 목킹 한계를 Fake 빌더 패턴으로 해결 순수 Mock (한계 있음)
Mutation 패턴 WidgetRef에서 직접 호출 + invalidate 별도 mutation provider의 auto-dispose 문제 원천 차단 별도 mutation provider
UI 테마 테마 토큰 시스템 하드코딩 컬러 제거, 다크모드/라이트모드 일관성 커스텀 컬러 팔레트 (레거시, 제거됨)
i18n slang + 하드코딩 한글 → i18n 키 전환 다국어 지원, 해외 사용자 대응 한글 하드코딩 유지

Notable Problem-Solving

상태 관리 안티패턴 대규모 수정. Riverpod 3.0 마이그레이션 과정에서 안전하지 않은 상태 접근 패턴을 안전한 접근 패턴으로 일괄 수정. 수동 상태 관리를 자동화된 패턴으로 전환하여 프로젝트 전반의 안정성을 높였습니다.

DI 패턴 전환. 글로벌 인스턴스 직접 사용에서 DI 패턴으로 전환하여 테스트 가능성을 확보. 테스트 인프라로 mocks, stubs, test container, fixtures를 체계적으로 구축했습니다. 다수의 파일이 아직 레거시 방식을 사용 중이라 점진적 전환이 진행 중입니다.

프레임워크 버그 발견 및 문서화. Flutter hooks에서 특정 라이프사이클에서의 위젯 컨텍스트 접근 시 크래시가 발생하는 문제를 발견하고, 비동기 + mounted 체크로 해결한 뒤 규칙으로 문서화했습니다.

사용자 피드백 체계적 대응. 해외 사용자가 위젯 버그와 기능 요청을 보냈을 때, brainstorming 스킬로 각 이슈를 분석하고 체계적으로 수정했습니다.

CI/CD 자동 코드 리뷰. GitHub Actions에서 AI 에이전트를 활용한 자동 PR 리뷰 봇을 구축하여 다수의 세션을 자동으로 운영했습니다.


Characteristics Revealed

이 프로젝트에서 특히 드러나는 특성은 프로덕션 앱 운영자의 감각입니다. 에러 모니터링에서 발견된 크리티컬 이슈를 즉시 수정하고, 보안 취약점을 사전에 제거하는 등 — 프로덕션에서 실제로 발생하는 문제에 대한 민감도가 높습니다.

또한 테스트 인프라에 대한 투자가 인상적입니다. 수백 개의 테스트를 유지하면서, Fake 빌더, test container, fixture 시스템을 체계적으로 구축했습니다. 테스트 환경의 세부 요구사항까지 문서화합니다.

레거시 코드를 점진적으로 개선하는 인내도 보입니다. 오래된 프로젝트에서 테마 시스템 전환, DI 전환, i18n 전환 등을 각각 별도 PR로 진행하며 기존 기능을 깨지 않으면서 품질을 높입니다.


Git & GitHub Analysis

  • Commit style: 한글 Conventional Commits, PR 번호 참조. 변경 범위를 스코프로 표시
  • Commit frequency: 지속적 유지보수 패턴. 버그 수정, 리팩토링, 기능 추가가 균형 있게 분포
  • PR patterns: 기능별 분리된 PR, squash merge 선호. 시맨틱 버전 릴리즈를 체계적으로 관리
  • CI/CD engagement: 자동 PR 리뷰, 빌드 테스트 자동화
  • Dependency management: 미사용 패키지 일괄 정리, 메이저 업그레이드, Best Practices Gap 분석 수행

Summary

klming-flutter는 Youngsup의 프로덕션 앱 운영 능력과 점진적 코드 개선 감각이 가장 잘 드러나는 프로젝트입니다. 다수의 PR, 수백 개의 테스트, 에러 모니터링, CI 자동 리뷰가 보여주는 것은 단순한 사이드 프로젝트가 아니라 실제 사용자가 있는 프로덕션 앱을 장기간 책임감 있게 운영하는 개발자의 모습입니다. 상태 관리 안티패턴 수정, DI 전환, 테마 시스템 개선 등 기술 부채를 체계적으로 해소하면서도 해외 사용자 피드백에 즉시 대응하는 균형감이 인상적입니다.