야구팬들아 모여라 — 위젯으로 쉽게 KBO 일정 확인하자
마이팀을 설정하면 시즌 경기 일정을 자동으로 불러와 캘린더로 보여주는 iOS 앱입니다.
- 마이팀 설정 — KBO 10개 구단 중 응원팀 선택
- 홈 대시보드 — 다음 경기, 이번 달 성적, 리그 순위, 최근/주간 경기 한눈에 보기
- 마이팀 커스터마이징 — 홈 화면에 마이팀을 크게 표시, 기본 캐릭터 대신 직접 고른 사진으로 교체 가능 (위젯·Live Activity에도 동일하게 반영)
- 캘린더 — 월별 그리드에서 홈/원정 경기를 팀 고유 색으로 구분 표시
- 직관 기록 — 실제로 보러 간 경기에 좌석/메모/사진을 남기고, 직관 승률을 따로 집계
- 경기 상세 — 상대팀, 시간, 장소 확인 + iOS 캘린더 추가 + 배경화면 생성
- 라이브 경기 센터 — 실시간 루상 주자, 볼카운트, 선발투수 확인 (KBO)
- 홈화면 위젯 — Small/Medium/Large 3종, 다음 경기와 주간 일정 표시
- 잠금화면 Live Activity — 앱을 열면 자동 시작, Dynamic Island에서 실시간 경기 현황 확인
- 경기 시작 알림 — 원하는 시간 전에 푸시 알림, 탭하면 라이브 경기 센터로 이동
- 배경화면 생성 — 다음 경기 정보를 담은 배경화면 3가지 스타일로 만들어 저장
- Swift 5.9+ / SwiftUI
- 최소 타겟: iOS 17.0
- 아키텍처: MVVM + Clean Architecture
- 비동기: Swift Concurrency (async/await)
- 로컬 저장: SwiftData(직관 기록) + UserDefaults(App Group 공유)
- 네트워크: URLSession
- 위젯 · Live Activity: WidgetKit / ActivityKit
- 캘린더 연동: EventKit
- 알림: UserNotifications
- 사진 선택: PhotosUI (
PhotosPicker)
Myball/
├── App/ # 앱 진입점 (@main, SwiftData 컨테이너, 루트 화면 분기)
├── Core/ # 앱 전용 공통 유틸리티 (알림/Live Activity 서비스, 캘린더 연동, 디자인 토큰 등)
├── Domain/ # 비즈니스 로직 (순수 Swift, UI 의존 없음)
│ ├── Models/ # Team, Game, League, TeamRecord, AttendanceRecord(직관 기록) 등
│ ├── Protocols/ # Repository 인터페이스
│ └── UseCases/
├── Data/ # 네트워크(KBO/네이버 API), 캐시, Repository 구현
├── Features/ # 화면별 모듈 (View + ViewModel)
│ ├── TeamSelection / Home / Live / Calendar / GameDetail
│ ├── Settings / Wallpaper / Debug(#if DEBUG)
├── Shared/ # 메인 앱 + 위젯 익스텐션 양쪽 타겟에 포함되는 파일
│ ├── BaseballCharacterView.swift # 팀 캐릭터 렌더링
│ ├── GameActivityAttributes.swift # Live Activity 데이터 정의
│ ├── MyTeamPortraitView.swift # 마이팀 사진/캐릭터 표시 (앱·위젯 공용)
│ └── TeamImageStore.swift # 마이팀 커스텀 사진 저장소 (App Group)
└── Resources/
MyballWidget/ # WidgetKit 익스텐션 (홈화면 위젯 + 잠금화면 Live Activity)
- KBO 공식 사이트 API — 일정/결과/순위 (
KBOAPIClient) - 네이버 스포츠 API — 실시간 라이브 정보 (
NaverAPIClient)
두 API 모두 비공식이라 언제든 변경될 수 있어 에러 핸들링과 캐시를 함께 사용합니다.
- ID:
group.com.myball.shared - 메인 앱 · 위젯 익스텐션이 UserDefaults, SwiftData, 마이팀 커스텀 사진 파일을 공유합니다.
# Xcode에서 프로젝트 열기
open MyBall.xcodeproj
# 또는 터미널에서 빌드
xcodebuild -scheme Myball -destination 'platform=iOS Simulator,name=iPhone 17'자세한 코드 컨벤션과 개발 참고사항은 CLAUDE.md를 참고하세요.