Skip to content

Latest commit

 

History

History
130 lines (114 loc) · 7.63 KB

README.md

File metadata and controls

130 lines (114 loc) · 7.63 KB

📱 OneMoreMinute

image

알람, 세계시간, 스톱워치, 타이머 기능을 제공하는 iOS 앱 프로젝트

📚 Tech Stacks

👥 The Team

Name GitHub Roles Main Developments
권승용
Seung-Yong Kwon
@ericKwon95 MVVM Architecture Designer MainTabBarViewController
Alarm and Core Services
김형석
Hyeong-Seok Kim
@NeoSelf1 RxSwift Flow Manager TimerViewController
Code Convention Review
임성수
Seong-Soo Lim
@seongto UI Components Manager WorldTimeViewController
Utility and Helper Services
장상경
Sang-Kyeong Jang
@Crois0509 CoreData Manager AlarmViewController
App UI and Icon Designs
황도일
Doyle Hwang
@DoyleHWorks GitHub/Docs Manager StopwatchViewController
Project Initialization

⏰ Project Scope

  • 시작일: 2025/01/07 (화)
  • 종료일: 2025/01/15 (수)

📂 Folder Organization

OneMoreMinute/
├── App/                  # 애플리케이션 설정 및 메타 데이터
│   ├── AppDelegate       # 앱의 생명주기 및 초기화 관리
│   ├── Info.plist        # 앱의 설정 정보
│   ├── LaunchScreen      # 앱 실행 시 로딩 화면
│   ├── OneMoreMinute.entitlements  # 앱 권한 및 특정 기능 활성화 설정
│   ├── OneMoreMinute.xcdatamodeld  # Core Data 모델
│   └── SceneDelegate     # Scene 생명주기 관리
├── Resource/             # 앱의 Asset 파일들
└── Source/               # 기능별 애플리케이션 로직
    ├── Core/             # 공통 로직 및 서비스
    │   ├── Extension/    # 시스템 클래스 확장
    │   ├── Manager/      # 공통 기능 관리 (AlarmManager, TimeManager, RepositoryManager 등)
    │   ├── Protocol/     # 공통 프로토콜 (CoreDataProtocol, ModalProtocol, ViewModelType)
    │   ├── Theme/        # 앱의 테마 정의 (Colors, Fonts, Layouts)
    │   └── Utility/      # 공통 유틸리티 (AppHelpers, HapticService, SceneLifeCycleObserver 등)
    ├── Feature/          # 기능별 화면 및 로직
    │   ├── Alarm/        # 알람 기능
    │   ├── MainTab/      # 메인 탭바 기능
    │   ├── Stopwatch/    # 스톱워치 기능
    │   ├── Timer/        # 타이머 기능
    │   └── WorldTime/    # 세계시간 기능
    └── UIComponent/      # 공통 UI 컴포넌트들
OneMoreMinuteTests/       # 단위 테스트 및 테스트 코드 (TimeManagerTests)

🖼️ Preview

Simulator Screen Recording - iPhone 16 Pro - 2025-01-15 at 14 09 41 Simulator Screen Recording - iPhone 16 Pro - 2025-01-15 at 14 10 45 Simulator Screen Recording - iPhone 16 Pro - 2025-01-15 at 14 11 10 Simulator Screen Recording - iPhone 16 Pro - 2025-01-15 at 14 12 31

🏷 Main Features

알람 기능

  • 사용자가 원하는 시간에 알람을 설정하고 관리할 수 있습니다.
  • 반복 알람 설정 기능을 제공합니다.

세계시간 기능

  • 다양한 도시의 현재 시간을 확인할 수 있습니다.
  • 사용자가 관심이 있는 도시를 추가하고 목록을 관리할 수 있습니다.

스톱워치 기능

  • 시간 측정 시작, 일시정지, 재개 및 초기화 기능을 제공합니다.
  • 랩 타임 측정 및 기록이 가능하고 베스트 랩과 워스트 랩을 한 눈에 보여줍니다.

타이머 기능

  • 사용자가 원하는 시간으로 타이머를 설정하고 시작할 수 있습니다.
  • 타이머 종료 시 알림을 제공합니다.

✨ Considerations

MVVM 아키텍처와 RxSwift

  • MVVM 아키텍처를 채택하여 코드의 모듈화와 유지 보수성을 향상시켰습니다.
  • RxSwift를 활용하여 비동기 데이터 흐름과 바인딩을 구현하였습니다.

재사용성 높은 개발

  • 앱 전반에 걸쳐 일관된 디자인을 유지하기 위해 공용 테마를 정의하고, 재사용 가능한 UI 컴포넌트를 분리하였습니다.
  • 유틸리티, 매니저 등을 코어 서비스로 분리하여 구현하였습니다.

CoreData & UserDefaults 관리

  • 사용자 데이터와 설정을 효율적으로 저장하고 관리하기 위해 CoreData와 UserDefaults를 활용하였습니다.
  • 알람과 세계시간 기능은 CoreData를 사용하고 스톱워치 기능은 UserDefaults를 사용하였습니다.

배너 알림 기능 및 백그라운드 플로우 구현

  • 앱 내에서 중요한 정보를 사용자에게 전달하기 위해 배너 알림 기능을 구현하였습니다.
  • SceneDelegate의 Lifecycle을 통해 스톱워치 등의 백그라운드 플로우를 구현하였습니다.

디바이스 리소스 효율

  • 세계시간 기능을 외부 API를 이용하지 않고 내부 로직으로 구현하여 네트워크 사용을 최소화하였습니다.
  • 메모리 누수 방지뿐만 아니라 메모리 효율적인 코드를 작성하기 위해 지속적으로 검토하고 최적화하였습니다.

📦 How to Install

  1. Clone this repository:
    git clone https://github.com/1aborInModeration/OneMoreMinute.git