Skip to content

HealthKit 통합, 보안 강화 및 프로젝트 문서화 완료#30

Merged
seunggulee1007 merged 21 commits intomainfrom
feature/healthkit-integration
Oct 31, 2025
Merged

HealthKit 통합, 보안 강화 및 프로젝트 문서화 완료#30
seunggulee1007 merged 21 commits intomainfrom
feature/healthkit-integration

Conversation

@seunggulee1007
Copy link
Owner

개요🔎

이 PR은 iOS HealthKit 통합, API 키 보안 강화, 실시간 지도 추적 기능 개선, 그리고 포괄적인 프로젝트 문서화를 포함합니다.

작업사항✍🏻

🏥 HealthKit 통합

  • iOS HealthKit 권한 및 설정 추가
  • 실시간 심박수 추적 기능 구현
  • HealthService 클래스 구현
  • health 패키지 의존성 추가

🔒 보안 강화

  • Git 히스토리에서 노출된 API 키 완전 제거
    • git-filter-repo를 사용하여 모든 브랜치의 히스토리 정리
    • 노출된 Google Maps API 키 제거
  • 환경 변수 기반 API 키 관리 시스템 구축
    • .env 파일을 통한 중앙화된 키 관리
    • 빌드 시 자동으로 Info.plist에 주입하는 스크립트 추가
    • Info.plist는 플레이스홀더만 유지
  • API 키 노출 방지 자동화
    • Pre-commit Git Hook 구현
    • Google, AWS, OpenAI API 키 패턴 자동 감지
    • .env 파일 커밋 시도 차단
    • 설치 스크립트 및 상세 문서 제공

🗺️ 지도 기능 개선

  • 실시간 GPS 경로 추적 기능 개선
  • 디버그 모드에서도 실제 지도 표시
  • Google Maps API 키 없이도 안전하게 작동하도록 수정
  • 지도 위젯 리팩터링 및 성능 최적화

📱 UI/UX 개선

  • 러닝 화면 UI 대폭 개선
  • 위젯 구조 리팩터링
  • 실시간 통계 표시 개선

📸 스크린샷 및 문서

  • iOS 앱 스크린샷 7장 추가
    • 로그인/회원가입
    • 홈 화면
    • 러닝 화면
    • 통계
    • 히스토리
    • 프로필
  • 스크린샷 가이드 작성

📚 프로젝트 문서화

  • 포트폴리오 문서 완성
    • PORTFOLIO.md 작성
    • 개발자 정보, 프로젝트 소개, 기술 스택 등
  • 포괄적인 가이드 문서 추가
    • ARCHITECTURE.md: 아키텍처 설계 문서
    • DEVELOPMENT_WORKFLOW.md: 개발 워크플로우
    • TECH_CHALLENGES.md: 기술적 도전과제 및 해결 방안
    • BUILD_DEPLOY_GUIDE.md: 빌드 및 배포 가이드
    • QUICK_START.md: 빠른 시작 가이드
    • ENV_CONFIG_GUIDE.md: 환경 설정 가이드
    • GOOGLE_MAPS_API_SETUP.md: Google Maps API 설정 가이드
    • README_GUIDE.md: README 작성 가이드
  • README.md 대폭 개선
    • 1,000+ 라인의 전문적인 프로젝트 소개
    • 기술 스택, 아키텍처, 주요 기능 상세 설명
    • 설치 및 실행 가이드
    • 스크린샷 및 데모

🔧 개발 환경 개선

  • CI/CD 워크플로우 추가
    • GitHub Actions CI 설정
    • 포트폴리오 통계 자동 생성
  • TaskMaster 설정 추가
  • Android 매니페스트 업데이트

🧪 테스트 추가

  • HealthService 테스트
  • Home 화면 위젯 테스트
  • Running 화면 위젯 테스트
  • Running Map 위젯 테스트

🗑️ 불필요한 문서 정리

  • 임시/중복 문서 제거 (14개 파일)
    • CRASH_FIX.md
    • ENV_MIGRATION_COMPLETE.md
    • GOOGLE_LOGIN_FIX_GUIDE.md
    • NONCE_*.md
    • REFACTORING_*.md
    • 기타 임시 문서들
  • docs/ 디렉토리로 구조 정리

주의사항❗️

🔐 보안 관련 (매우 중요!)

새로운 팀원 또는 프로젝트를 새로 클론하는 경우:

  1. Git Hooks 반드시 설치

    ./scripts/install-git-hooks.sh
  2. .env 파일 생성 및 설정

    cp .env.example .env
    # .env 파일에 실제 API 키 입력
  3. Google Cloud Console 조치

    • 노출된 기존 API 키 삭제: AIzaSyANZQNpa2Or0JuXQNiCU9W9z9PiRMo8ndU
    • 새 API 키 발급 및 제한 설정 (번들 ID, Maps SDK for iOS)

절대 금지:

  • ❌ API 키를 코드에 하드코딩
  • ❌ .env 파일을 Git에 커밋
  • ❌ Git Hooks 우회 (--no-verify)

📱 Xcode 설정 필요

빌드 시 자동으로 API 키를 주입하려면:

  1. Xcode에서 Runner 프로젝트 열기
  2. Build Phases → + → New Run Script Phase
  3. 스크립트 추가:
    "${SRCROOT}/scripts/setup_env.sh"
  4. "Compile Sources" 전으로 이동

🧪 테스트

# 전체 테스트 실행
flutter test

# 커버리지 포함
flutter test --coverage

관련 이슈

Closes #28


📊 변경 통계

  • 86개 파일 변경
  • 9,446줄 추가
  • 4,419줄 삭제

🎯 주요 성과

보안: Git 히스토리에서 민감한 정보 완전 제거, 다층 보안 시스템 구축
기능: HealthKit 통합으로 실시간 건강 데이터 추적
문서화: 1,000+ 라인의 전문적인 프로젝트 문서
자동화: CI/CD 파이프라인 및 보안 자동 검사
품질: 테스트 추가 및 코드 리팩터링


⚠️ 이 PR을 머지하기 전에 반드시 Google Cloud Console에서 노출된 API 키를 삭제하세요!

- health: ^10.2.0 패키지 추가
- HealthKit (iOS) 및 Google Fit (Android) 연동 지원
- 심박수, 걸음수, 거리, 칼로리 데이터 수집 가능
- Info.plist에 HealthKit 사용 권한 추가
- Runner.entitlements에 HealthKit capability 추가
- Podfile에 health 패키지 의존성 추가
- iOS 프로젝트 설정 업데이트
- HealthKit (iOS) 및 Google Fit (Android) 연동 서비스
- 심박수, 걸음수, 거리, 칼로리 데이터 수집 기능
- 실시간 심박수 스트림 및 평균 심박수 계산
- 심박수 존 분석 (휴식, 유산소, 임계점, 무산소, 신경근)
- 권한 요청 및 상태 확인 기능
- 싱글톤 패턴으로 구현하여 앱 전체에서 공유
RunningScreen:
- HealthService 연동으로 실시간 심박수 데이터 수집
- 심박수 스트림 구독 및 평균 심박수 계산
- 심박수 존 분석 결과 표시

RunningStats:
- 심박수 존 정보 시각적 표시 추가
- 존별 색상 구분 (휴식: 초록, 유산소: 파랑, 임계점: 주황, 무산소: 빨강, 신경근: 보라)
- 심박수 존 텍스트 한글화
- .gitignore에 .taskmaster/ 및 .cursor/ 디렉토리 추가
- macOS GeneratedPluginRegistrant.swift 자동 생성 파일 업데이트
- .taskmaster/ 디렉토리 및 설정 파일들 추가
- .cursor/mcp.json MCP 설정 파일 추가
- 프로젝트 관리 도구 설정 완료
- API 키 검증 로직 추가
- 크래시 방지를 위한 플레이스홀더 UI 개선
- GPS 경로 정보 실시간 표시
- API 키 설정 가이드 문서 추가
- 지도를 배경으로 전체 화면 표시
- 통계 정보를 반투명 카드로 오버레이
- GPS 경로를 실시간으로 파란색 라인으로 표시
- 러닝 중 현재 위치를 자동으로 추적
- 지도 토글 버튼 제거
- 플레이스홀더 UI 대폭 개선
- Add comprehensive README with visual diagrams and performance metrics
- Include detailed technical challenges with before/after comparisons
- Add architecture visualization with Mermaid diagrams
- Enhance technology stack presentation with badges
- Add expandable sections for detailed problem-solving cases
- Include measurable results and business impact
- Add contact section with professional styling
- Keep PORTFOLIO.md as alternative detailed version
- Add PORTFOLIO_TEMPLATE.md for easy personalization
- Add QUICKSTART.md for step-by-step GitHub upload guide
- Add DEVELOPMENT_WORKFLOW.md for development process documentation
- Add GitHub Actions workflow for automated portfolio stats
- Backup original README as README_OLD.md
- Include templates for personal info, screenshots, and env setup
- 루트 디렉토리의 개발 관련 임시 문서 삭제
- docs 폴더로 문서 구조 체계화
- 가이드 문서를 guides 폴더로 이동
- START_HERE.md 추가하여 프로젝트 시작점 명확화
- README, CONTRIBUTING, SECURITY 등 핵심 문서만 docs에 유지
- iOS 시뮬레이터 스크린샷 6개 추가
  - 로그인/회원가입 화면
  - 홈 화면
  - 러닝 화면
  - 기록/통계 화면
- screenshots/README.md 업데이트하여 스크린샷 가이드 개선
- 러닝 화면 레이아웃 개선
- RunningCard, RunningMap, RunningStats, RunningTimer 위젯 개선
- 위젯 테스트 업데이트
- 코드 가독성 및 유지보수성 향상
- Flutter CI 워크플로우 추가 (테스트, 빌드, 린트)
- 포트폴리오 통계 워크플로우 개선
- 코드 품질 자동 검증 파이프라인 구축
- PORTFOLIO.md 스크린샷 및 내용 업데이트
- README.md 프로젝트 설명 개선
- .env.example 환경변수 예시 업데이트
- .cursor/mcp.json 설정 추가
- Info.plist를 플레이스홀더로 유지하고 Git에 커밋
- .env 파일에서 실제 API 키 관리 (.gitignore에 포함)
- 빌드 시 자동으로 .env에서 Info.plist로 API 키 주입하는 스크립트 추가
- Info.plist를 .gitignore에 추가하는 잘못된 접근 방식 수정
- pre-commit hook: 커밋 시 API 키 자동 검사 및 차단
- install-git-hooks.sh: Git Hooks 쉬운 설치 스크립트
- 다양한 API 키 패턴 감지 (Google, AWS, OpenAI 등)
- .env 파일 커밋 시도 차단
- 상세한 사용 방법 및 보안 정책 문서화

Resolves #28
@seunggulee1007 seunggulee1007 merged commit b6c41b1 into main Oct 31, 2025
1 of 4 checks passed
@seunggulee1007 seunggulee1007 deleted the feature/healthkit-integration branch October 31, 2025 04:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

보안: API 키 노출 방지를 위한 환경 변수 관리 시스템 구현

1 participant