GithubHelp home page GithubHelp logo

dailyshotclone's Introduction

데일리샷 클론

프로젝트 정보

해당 프로젝트는 데일리샷의 클론 프로젝트입니다. 데일리샷은 다양한 주류를 모바일에서 쉽게 주문할 수 있는 앱입니다.

이 프로젝트는 원본 앱의 주요 기능을 MVVM 패턴과 RxSwift를 사용하여 반응형 프로그래밍 방식으로 구현하였습니다.

기술 스택: iOS, Swift, RxSwift, MVVM, SnapKit, Firebase, Naver Maps

프로젝트 구조
.
├── Config.xcconfig
├── DailyshotClone
│   ├── GoogleService-Info.plist
│   ├── Services
│   │   ├── CartManager.swift
│   │   ├── Extensions.swift
│   │   ├── ImageCacheManager.swift
│   │   ├── UserManager.swift
│   │   ├── WebService.swift
│   │   └── WishListManager.swift
│   ├── Models
│   │   ├── Cart.swift
│   │   ├── DetailDataSource.swift
│   │   ├── HomeDataSource.swift
│   │   ├── Item.swift
│   │   ├── Store.swift
│   │   └── User.swift
│   ├── ViewModels
│   │   ├── CartViewModel.swift
│   │   ├── CategoryItemListViewModel.swift
│   │   ├── CategoryViewModel.swift
│   │   ├── FilterListViewModel.swift
│   │   ├── HomeViewModel.swift
│   │   ├── ItemDetailViewModel.swift
│   │   ├── ItemListViewModel.swift
│   │   ├── SelectStoreViewModel.swift
│   │   ├── SignInViewModel.swift
│   │   ├── SignUpViewModel.swift
│   │   └── WishListViewModel.swift
│   ├── ViewControllers
│   │   ├── CartViewController.swift
│   │   ├── CategoryItemListViewController.swift
│   │   ├── CategoryViewController.swift
│   │   ├── HomeViewController.swift
│   │   ├── ItemDetailViewController.swift
│   │   ├── ItemListViewController.swift
│   │   ├── MainTabBarViewController.swift
│   │   ├── MyPageViewController.swift
│   │   ├── SelectStoreViewcontroller.swift
│   │   ├── SignUpViewController.swift
│   │   ├── SingInViewController.swift
│   │   └── WishListViewController.swift
│   ├── Views
│   │   ├── CustomStepper.swift
│   │   ├── Cart
│   │   │   ├── CartCell.swift
│   │   │   ├── CartFooterView.swift
│   │   │   └── CartHeaderView.swift
│   │   ├── Category
│   │   │   ├── CategoryCell.swift
│   │   │   ├── FilterListCell.swift
│   │   │   ├── FilterListHeaderCell.swift
│   │   │   ├── FilterView.swift
│   │   │   └── SectionBackgroundView.swift
│   │   ├── Detail
│   │   │   ├── ItemDetailDescriptionCell.swift
│   │   │   ├── ItemDetailInformationCell.swift
│   │   │   ├── ItemDetailMainCell.swift
│   │   │   ├── ItemDetailReviewCell.swift
│   │   │   ├── ItemDetailStoreCell.swift
│   │   │   └── ItemDetailTastingNotesCell.swift
│   │   ├── Home+List
│   │   │   ├── BannerCell.swift
│   │   │   ├── BannerImageCell.swift
│   │   │   ├── HomeCellType.swift
│   │   │   ├── HomeItemHeaderCell.swift
│   │   │   ├── ItemListHeaderCell.swift
│   │   │   ├── LargeItemCell.swift
│   │   │   ├── MediumItemCell.swift
│   │   │   ├── MenuButtonCell.swift
│   │   │   ├── MenuCell.swift
│   │   │   ├── SmallItemCell.swift
│   │   │   └── SmallItemImageCell.swift
│   │   └── WishList
│   │       └── WishListCell.swift
│   ├── Predifined
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets
│   │   ├── Base.lproj
│   │   ├── Info.plist
│   │   └── SceneDelegate.swift
│   ├── Resource
│   │   └── productData.json
├── Podfile
├── Podfile.lock
└── Pods

화면 구성 및 기능

홈 화면

배너 이미지가 무한히 순환되도록 캐러셀(Carousel) 스타일로 구현하였습니다.

TableViewController의 섹션에 CollectionViewController를 삽입하여 상품을 small, medium, large 세가지 스타일로 표시했습니다.

홈 화면 small medium large

상세 화면

TableViewController를 사용해 상품, 판매처, 테이스팅 노트, 상세 정보, 설명 등의 정보를 제공합니다.

화면 하단의 버튼을 통해 위시리스트에 추가 또는 삭제, 판매처를 선택하는 화면을 보여줍니다.

상세 화면 상세 화면 상세 화면

판매처 선택 화면

사용자는 판매처, 상품, 상품개수를 장바구니에 추가할 수 있습니다.

판매처 선택 화면

위시리스트 화면

사용자의 위시리스트에 저장되어 있는 상품ID를 통해 위시리스트를 불러옵니다.

위시리스트

장바구니 화면

사용자는 원하는 상품을 장바구니에서 삭제할 수 있습니다.

각 상품의 수량을 조절할 수 있습니다. 수량 조절 버튼을 통해 수량을 변경하면 해당 상품의 가격이 자동으로 업데이트됩니다.

사용자가 장바구니에서 선택한 상품들의 가격을 합산하여 총 가격을 계산하고 화면에 표시합니다.

상세 화면

dailyshotclone's People

Contributors

dw0124 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.