Skip to content

SwiftUI 로 다시 해보는 '오픈 마켓' 프로젝트

Notifications You must be signed in to change notification settings

Jager-yoo/New-Open-Market

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

🥕 스유 마켓

이커머스 스타일의 토이 프로젝트


✨ 핵심 키워드

  • SwiftUI (iOS 15.0)
  • MVVM 패턴 with Combine
  • 프로토콜 지향 네트워크 레이어
  • async-await 적용한 비동기 메서드 & 유닛 테스트
  • PHPickerViewController (iOS 14.0+)
  • 무한 스크롤
  • SwiftLint (via Homebrew)

🏗 화면 구조

스유마켓 App 화면 구조


📡 네트워크 레이어 구조 (클래스 다이어그램)

스유마켓 Network Layer Class Diagram


📂 디렉토리 구조

NewOpenMarket
├── Source
│   ├── App
│   ├── Network
│   │   └── API
│   ├── Presentation
│   │   ├── MainView
│   │   ├── ItemsListView
│   │   ├── ItemDetailView
│   │   ├── ItemFormView
│   │   ├── SettingsView
│   │   └── Shared
│   ├── Model
│   ├── Utility
│   ├── Extension
│   └── Resource
└── UnitTests

📱 시연 영상

무한 스크롤과 리프레시 Image 컨트롤러
버벅임 없이 무한 스크롤이 가능합니다.
리프레시 버튼은 1.5초의 대기시간을 걸었습니다.
사진을 선택하거나 취소할 수 있습니다.
최대 개수에 도달하면 Alert 를 보여줍니다.
키보드 애드온 상품 등록
textField 사이를 이동할 수 있는
버튼을 키보드 위에 구현했습니다.
우측엔 키보드 dismiss 버튼을 뒀습니다.
데이터를 검증한 뒤, 서버에 상품을 등록합니다.
Alert 를 확인하면 ListView 로 돌아가서
자동으로 리프레시합니다.
Page Style 이미지 뷰어 상품 수정
정방형의 이미지들을 Page 처럼 넘길 수 있습니다.
NavigationBar 에 달라붙은
Sticky Image 효과를 구현했습니다.
상품 데이터를 변경 후, 서버에 수정을 요청합니다.
DetailView 는 즉시 변경되며
ListView 로 돌아가면 자동으로 리프레시합니다.
다크 모드 토글 상품 삭제
설정의 다크 모드 토글을 통해
앱 전체에 다크 테마를 적용할 수 있습니다.
앱을 다시 실행해도 변경 상태가 저장됩니다.
상품 삭제를 서버에 요청합니다.
Alert 를 확인하면 ListView 로 돌아가서
자동으로 리프레시합니다.

About

SwiftUI 로 다시 해보는 '오픈 마켓' 프로젝트

Topics

Resources

Stars

Watchers

Forks

Languages