가상 자산 실전 감각을 기를 수 있는 iOS 기반 모의 코인 투자 앱 💸📈
코믈리에
는 실제 돈 없이도 가상 화폐 투자 흐름을 익힐 수 있는 iOS 기반 모의 투자 앱입니다.
실시간 코인 시세를 기반으로 매매를 연습하고, 나만의 포트폴리오를 분석하며 투자 감각을 키울 수 있도록 하였습니다.
거래소 | 시세 상세 | 가상 매수 | 포트폴리오 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
WebSocket을 기반으로 실시간 코인 시세를 수신하며, 전일 대비 변동률, 거래대금 등 주요 지표를 함께 제공합니다.
사용자는 상승률, 거래량 등의 기준으로 리스트를 정렬할 수 있어, 빠르게 시장 흐름을 파악하고 코인을 탐색할 수 있습니다.
선택한 코인의 시세 그래프와 함께, 시가·고가·저가·전일 대비 등 종목의 핵심 정보를 제공하는 화면입니다.
그래프는 실시간 시세 변동을 반영하며, 사용자는 시세 흐름과 가격 지표를 종합적으로 분석할 수 있습니다.
매수·매도 버튼을 통해 즉시 가상 매수·매도 화면으로 연결되도록 구성했습니다.
사용자가 입력한 금액을 기준으로, 현재 시세에 따라 실시간으로 환산하여 가상으로 코인을 사고팔 수 있습니다.
모든 계산은 Decimal
타입 기반으로 처리되어, 소수점 오차 없이 높은 정밀도로 환율 및 수익률을 계산할 수 있습니다.
매매 결과는 포트폴리오에 자동 반영되며, 누적 평균 매수가를 기준으로 손익이 계산됩니다.
전체 자산의 평가 금액, 수익률, 자산 비중 등을 시각적으로 보여주는 종합 자산 분석 화면입니다.
현재 보유 중인 코인의 총 평가 금액과 총 손익을 실시간으로 계산하며, Pie Chart를 통해 자산 구성 비율을 한눈에 파악할 수 있습니다.
또한, 거래 내역
을 통해 어떤 코인을 언제 얼마나 매수했는지 추적할 수 있으며, 이를 기반으로 전체 투자 흐름을 점검할 수 있도록 구성했습니다.
기능명 | 설명 |
---|---|
💸 모의 투자 기능 | 실제 돈 없이도 코인을 사고팔며 실전처럼 트레이딩 연습 가능 |
📈 실시간 시세 반영 | WebSocket을 통한 실시간 코인 시세 기반 매매 체험 제공 |
📊 포트폴리오 관리 | 보유 자산의 수익률, 평가 금액, 비중 등을 시각화하여 한눈에 확인 가능 |
🔥 인기 코인 | 현재 트렌디한 코인과 키워드를 실시간으로 확인하여 시장 흐름 파악 가능 |
🌓 라이트/다크 모드 | 사용자의 기호에 맞게 UI 테마를 자동 혹은 수동으로 변경 가능 |
연결 오류 발생 시 원인 및 해결 방향을 사용자에게 직관적으로 안내 |

-
MVVM + In/Out
패턴을 적용해 ViewModel의 입력/출력을 명확히 정의하고, 사용자 이벤트 흐름과 상태 변화를 예측 가능하게 구성했습니다. -
UseCase
를 통해 도메인 로직을 한 곳에 집중시켜, 기능별 책임을 명확히 분리하고 테스트 가능성을 높였습니다. -
Repository Interface / Implementation
구조를 도입하여, 도메인 레이어는 데이터 접근 방식(API, DB 등)에 독립적으로 설계했습니다. -
DataSource는 Realm, WebSocket, HTTP API 등으로 분리하여 실제 데이터 처리 책임을 맡고 있으며, 각 구성 요소는 SRP(단일 책임 원칙)를 따릅니다.
-
의존성 주입(DI)
과Router Pattern
을 통해 객체 생성과 화면 전환 흐름을 분리하고, 모듈 간 결합도를 낮췄습니다. -
각 레이어는 역할별로 명확히 분리되어 있으며, 유지보수성과 확장성을 고려한 구조로 설계되었습니다.
- MVVM + Input/Output 패턴을 도입해 ViewModel의 역할을 명확히 분리하고,
RxSwift
와Combine
을 활용해 UI와 데이터 간의 비동기 흐름을 구성 - UseCase + Repository 구조를 통해 도메인 로직과 데이터 접근을 분리하여, 테스트 용이성과 유지보수성을 높임
- Protocol-Oriented 설계로 각 레이어 간 결합도를 최소화
- 인터페이스 기반 구조를 통해 기능 변경이나 교체에 유연하게 대응
- Factory Method + DI(DIP) 적용으로 객체 생성 책임을 분리
- SOLID 원칙 기반으로 구조 설계
- Realm 모델링 시 중복 데이터를 참조 기반으로 분리하여 데이터의 무결성과 정합성을 확보
- 자산 정보, 거래 기록 등을 스키마 간 독립적으로 구성해 변경 사항의 전파를 최소화
- HTTP 통신에서 응답 코드에 따라 오류를 구분하고 예외 상황을 명확히 처리하여 안정적인 사용자 경험 제공
- WebSocket 기반의 실시간 데이터를 Combine Publisher로 스트리밍화하고 ViewModel에서 구독 처리 → 실시간 시세 변화에 반응하는 구조 구현
- 금융 데이터에서 발생할 수 있는 **소수점 오차 문제(Double의 부정확성)**를 방지하기 위해 금액 계산에는
Decimal
타입을 적용 - 10진수 기반의 정밀 계산으로 금액 정보의 신뢰성과 일관성 확보
- DiffableDataSource + Snapshot을 적용해 전체 렌더링 없이 변경된 항목만 효율적으로 갱신
- 직접 구현한 NumberterKit을 통해 숫자 포맷 로직을 모듈화
- Kingfisher + DownSampling을 활용해 이미지 캐싱 및 렌더링 최적화 → 메모리 사용량 감소 및 스크롤 성능 향상
- 개발 기간: 2025.03.06 ~ 2025.04.10
- 개발 인원: 1인 (기획, 디자인, 개발)
- 타겟 플랫폼: iOS (iPhone)
- 배포: App Store
구분 | 기술 |
---|---|
UI | UIKit, SwiftUI (일부), SnapKit |
Asynchronous | Combine, RxSwift, RxCocoa |
Network | Alamofire, WebSocket |
Database | Realm |
Chart | DGCharts, Charts |
Image Caching | Kingfisher |
Utility | NumberterKit (자체 제작) |