Skip to content

APP-iOS7/CouponWallet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CouponWallet

Swift Platform

CouponWallet은 디지털 기프티콘을 관리하기 위한 종합적인 iOS 애플리케이션입니다. 이 앱을 통해 사용자는 디지털 쿠폰을 스캔하고, 저장하고, 정리하며, 한 곳에서 편리하게 관리할 수 있습니다.

개요

  • 프로젝트 이름: CouponWallet
  • 프로젝트 기간: 3월 7일 ~ 3월 11일
  • 개발 언어: Swift
  • 개발 프레임워크: SwiftUI, PhotosUI, Vision, VisionKit, SwiftData
  • 멤버: 김대홍, 조영민, 홍석평

🌟 주요 기능

홈 탭

  • 보유 쿠폰 보기: 사용 가능한 유효한 쿠폰을 한눈에 볼 수 있습니다
  • 쿠폰 필터링: 브랜드별로 쉽게 필터링 가능 (스타벅스, 치킨, CU, GS25 등)
  • 쿠폰 추가: 다음 방법으로 새 기프티콘을 추가할 수 있습니다:
    • 카메라 직접 스캔(구현 중...)
    • 사진 갤러리에서 가져오기

사용·만료 탭

  • 사용/만료된 쿠폰 보기: 사용 이력을 추적할 수 있습니다
  • 필터 옵션: "사용 완료" 또는 "만료" 상태별로 정렬
  • 다중 선택: 여러 쿠폰을 선택하여 휴지통으로 이동
  • 정렬: 날짜별 정렬 (최신순/오래된 순)

설정 탭

  • 프로필 설정: 사용자 프로필 정보 관리
  • 알림 설정: 앱 알림 구성
  • 테마 설정: 라이트 모드와 다크 모드 전환
  • 휴지통 관리: 쿠폰 복구 또는 영구 삭제

📱 핵심 기능

쿠폰 이미지 스캐닝

Vision 및 VisionKit 프레임워크를 사용하여:

  • 기프티콘 이미지에서 텍스트를 자동으로 인식
  • 다음과 같은 주요 정보 추출:
    • 브랜드명
    • 상품명
    • 유효기간
  • 카메라 스캔과 갤러리 이미지 모두 처리

직관적인 UI

  • 스와이프 가능한 쿠폰 상세 정보
  • 탭 기반 네비게이션
  • 쿠폰 상태에 따른 컨텍스트 액션

SwiftData를 사용한 데이터 관리

  • 쿠폰 정보의 영구 저장
  • 복원 옵션이 있는 휴지통 기능

🔧 기술적 구현

사용된 프레임워크

  • SwiftData: 데이터 영속성 레이어
  • Vision/VisionKit: OCR 및 텍스트 인식
  • PhotosUI: 사진 라이브러리 통합

주요 구성 요소

  • GifticonScanManager: OCR 및 텍스트 추출 처리
  • TextAnalyzer: 스캔된 텍스트에서 의미 있는 데이터 파싱 및 추출
  • Gifticon Model: 쿠폰 정보 저장을 위한 SwiftData 모델
  • 사용자 정의 뷰: 다양한 쿠폰 상태 및 작업을 위한 특수 뷰

사용자 경험 기능

  • 쿠폰 공유를 위한 쿠폰 이미지 공유 기능
  • 쿠폰 카드 애니메이션 전환 효과
  • 앨범에 있는 쿠폰 자동 스캔 및 이미지 추가

📷 스크린샷

홈 화면 상세 화면 설정 화면 만료 화면 스캔 화면

📝 피그마 설계도

스크린샷 2025-03-11 오후 2 44 05

🚀 시작하기

요구 사항

  • iOS 18.0+
  • Xcode 16.0+
  • Swift 6.0+

🔮 향후 개선 사항

  • 바코드/QR 코드 스캐닝
  • 유효기간 알림
  • 인기 브랜드 API와의 통합
  • 소셜 공유 기능
  • 통계 및 사용 분석

👥 역할

김대홍

  • 쿠폰 선택 화면
  • 쿠폰 카드 슬라이드 애니메이션
  • 쿠폰 사용 완료 및 수정 로직 구현

조영민

  • 기본 틀 프로젝트 제작
  • PhotoPicker로 이미지 가져오기
  • vision 프레임워크로 쿠폰 이미지 스캔 기능 구현

홍석평

  • 쿠폰 공유 기능
  • 쿠폰 삭제 기능
  • 라이트 모드 다크 모드 구현

느낀 점과 개선할 점

김대홍

  • 사용가능 쿠폰 선택 화면: 더미 데이터에서 실행되던 코드가, 더미 데이터 없이 Merge 작업하니 에러가 발생되는 문제를 해결하는 단계에서 어려움을 겪었습니다.
  • 사용완료 및 기간만료 쿠폰 선택 화면: 2개의 탭 뷰를 동시에 연결되는 화면을 만들려다 보니 어려움을 느껴, 사용가능 쿠폰과 사용완료/기간만료 쿠폰 선택을 화면을 분할하였습니다.
  • 쿠폰을 좌우로 슬라이드 뷰를 구성하면서, 정렬순서를 탭 뷰의 정렬순서대로 구현하는 것이 쉽지 않았습니다.
  • 화면 기준으로 업무를 분배하다보니 연결되는 화면이 있을 경우, 협업이 필요함을 알았습니다.
  • Github: 처음 설정할 때, .gitignore 만들어서인지, 코드 외 충돌 문제가 없어서 원활하게 진행할 수 있지 않았나 싶습니다.

조영민

  • Vision 스캔 기능: 이미지 스캔 처리 기능을 처음 구현해보았는데 생각보다 고려해야 할 것이 많고 이미지 인식이 잘 안 되어서 조금 더 세부적으로 공부한 다음 인식률을 올려보고 싶다는 생각이 들었습니다.
  • 뷰 나누기의 중요성: 뷰를 세부적으로 나눠야 유지보수 측면에서도 편하고 유지보수가 아니더라도 초기 개발 과정에서도 중요하다는 것을 느꼈습니다. 특히 이 부분에서 재사용성과 가독성이 크게 향상될 수 있다는 것을 느꼈습니다.
  • 깃의 중요성: 깃을 제대로 알아야 어느 부분에서 충돌이 생긴 건지 알고 빠르게 해결해야 개발 시간도 확보되고 낭비되는 시간을 줄일 수 있다는 것을 느껴서 깃을 제대로 알고 써야겠다는 생각을 했습니다.

홍석평

  • 구현: 선택한 쿠폰을 캡처하고 공유할 때 ShareLink를 활용하여 다양한 앱으로 쉽게 공유하도록 만들었습니다. 또한, 다크 모드 전환 기능을 구현하여 사용자 환경에 맞는 UI를 지원하도록 했습니다. 쿠폰 삭제의 복원 기능을 구현하는 과정에서 어려움을 겪었습니다.
  • 예상치 못한 문제를 해결하는 과정에서 많은 것을 배울 수 있었으며, 이를 통해 더욱 견고한 기능을 구현하는 방법을 익히게 되었습니다.
  • Git: 팀원들과 Git을 활용한 협업을 진행하며 부족한 부분을 깨닫게 되었습니다. 자주 사용하면서 익숙해지기 위해 학습을 지속하고 있으며, 실전 경험을 통해 보다 효과적인 Git 활용법을 익히고 있습니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages