Git Product home page Git Product logo

mapmory's Introduction

MapMory

๐Ÿ—บ๏ธMapMory๋Š” ์ง€๋„ ๊ธฐ๋ฐ˜ ์ถ”์–ต ๊ธฐ๋ก ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž…๋‹ˆ๋‹ค.
์–ด๋–ค ์žฅ์†Œ์—์„œ ์–ด๋–ค ๊ฐ์ •์„ ๋Š๊ผˆ๋Š”์ง€ ํ…์ŠคํŠธ๋กœ ๊ธฐ๋ฐ˜ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ฐ์ •๋„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!!

๐Ÿ“ฑ์ฃผ์š” ๊ธฐ๋Šฅ

  • AppleMap์„ ํ†ตํ•œ ์ง€๋„ ํ‘œํ˜„
  • ์œ„์น˜, ์‚ฌ์ง„, ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ ์‚ฌ์šฉ์ž ๊ธฐ๋ก ์ €์žฅ
  • ์œ„์น˜ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
  • ํ˜„์žฌ ์œ„์น˜ ํ‘œ์‹œ ๋ฐ ์ด๋™
  • ๋‹คํฌ ๋ชจ๋“œ ์ง€์›

๐Ÿ“‹ํ•ต์‹ฌ ๊ธฐ์ˆ 

  • MapKit์„ ํ†ตํ•œ ์ง€๋„ ํ‘œ์‹œ
  • RealmSwift๋ฅผ ํ†ตํ•œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • Alamofire ๋„คํŠธ์›Œํฌ ํ†ต์‹ 
  • Custom Observable + MVVM์„ ํ†ตํ•œ Reactive Programming ์†Œ๊ธ‰ ์ ์šฉ
  • CoreLocation์„ ์‚ฌ์šฉํ•œ ์‚ฌ์šฉ์ž ํ˜„์žฌ ์œ„์น˜ ํ™•์ธ ๊ตฌํ˜„
  • PHPickerViewController๋ฅผ ํ™œ์šฉํ•œ ์‚ฌ์šฉ์ž ์‚ฌ์ง„ ์ž…๋ ฅ ๊ตฌํ˜„
  • Firebase Crashlytics๋ฅผ ํ™œ์šฉํ•œ Run Time Error ์ถ”์  ๋ฐ ๊ด€๋ฆฌ
  • Toast๋ฅผ ์‚ฌ์šฉํ•œ ์‚ฌ์šฉ์ž Notification ๊ตฌํ˜„
  • systemColor or Asset Color Set์„ ํ™œ์šฉํ•œ ๋‹คํฌ๋ชจ๋“œ ์ง€์›
  • EmojiPicker๋ฅผ ํ†ตํ•œ ์ด๋ชจ์ง€ ์ž…๋ ฅ ๊ตฌํ˜„

๐Ÿ› ๏ธ๊ฐœ๋ฐœ

๐ŸŒŽ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

ver. 1.0 ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„: 2023.09.23. ~ 11.02.

์ถœ์‹œ ๋ฐ ์—…๋ฐ์ดํŠธ: 2023.11. 02. ~ ํ˜„์žฌ

๊ฐœ๋ฐœ ์ธ์›: 1์ธ
๊ฐœ๋ฐœ ์–ธ์–ด: Swift
Minimum Deployment: iOS 15.0+: UISheetPresentationController


โš™๏ธ๊ธฐ์ˆ  ์Šคํƒ

  • Framework: UIKit
  • Design Pattern: MVVC, Singleton, Router Pattern
  • Package Management: SPM, CocoaPods
  • Library: Alamofire, realmSwift, SnapKit, Then, Toast, Firebase Cloud Messaging, Firebase Crashlytics, EmojiPicker
  • Etc: PHPickerViewController

๐Ÿ”ฅ๊ฐœ๋ฐœ Point

Git์„ ํ†ตํ•œ ํ”„๋กœ์ ํŠธ ํ˜•์ƒ๊ด€๋ฆฌ

  • ์ด์Šˆ ๋ฐœํ–‰, branch ๋ถ„๊ธฐ ๋ฐ ์ž‘์—… ์ˆ˜ํ–‰, Pull request๋ฅผ ํ™œ์šฉํ•œ ํ˜•์ƒ ๊ด€๋ฆฌ ์ง„ํ–‰๋ฅผ ์ง„ํ–‰.

Custom Observable + MVVM์„ ํ†ตํ•œ View-ViewModel ๋™์  ๋ฐ˜์˜

  • ๋ทฐ์™€ ๋ทฐ ๋ชจ๋ธ์˜ ๋ถ„๋ฆฌ๋ฅผ ์œ„ํ•ด MVVM์„ ์ ์šฉํ•˜๊ณ , ๋™์ ์œผ๋กœ ๋ทฐ์— ๋ฐ˜์˜ ํ•˜๊ธฐ ์œ„ํ•ด Custom Observable์„ ๊ตฌํ˜„.
  • ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, Observable ํด๋ž˜์Šค๋Š” ํƒ€์ž…์„ ๋Œ€์‹ ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚ด๋ถ€์˜ Value ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด didSet์„ ํ†ตํ•ด Closure๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  Closure๋ฅผ ํ†ตํ•ด ๋ทฐ์— ๊ทธ ๊ฐ’์„ ์ „๋‹ฌ ํ•˜๋Š” ๊ตฌ์กฐ.
class Observable<T>{
    private var notifier: ((T)->Void)?
    
    var value: T {
        didSet{
            notifier?(value)
        }
    }
    
    init(value: T) {
        self.value = value
    }
    
    func bind(closure: @escaping (T)->Void){
        self.notifier = closure
    }
}

URLRequestConvertible๋ฅผ ํ™œ์šฉํ•œ Alamofire Router Pattern ์ ์šฉ

  • Alamofire์˜ URLRequestConvertible Protocol์„ ํ†ตํ•ด Router Pattern์„ ๊ตฌํ˜„.
  • Router Pattern์„ ํ†ตํ•ด API request๋ฅผ ์ถ”์ƒํ™”ํ•˜๋ฉด API ํ˜ธ์ถœ๋‹น 1:1 ๋Œ€์‘ ํ•˜์ง€ ์•Š์•„๋„ ๋˜์–ด ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง€๊ณ  ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
enum Router: URLRequestConvertible{
    case ...
    
    private var baseURL: URL{ switch self { ... } }
    
    private var endPoint: String{ switch self { ... } }
    
    var header: HTTPHeaders{ switch self { ... } }
    
    var method: HTTPMethod{ switch self { ... } }
    
    var query: [String: String]{ switch self { ... } }
    
    func asURLRequest() throws -> URLRequest { ... }
}

mapmory's People

Contributors

ilwat avatar

Watchers

 avatar

mapmory's Issues

[Fix] ๋ณด์™„ ์ž‘์—… ์ˆ˜ํ–‰ ๋ฐ ๋””๋ฒ„๊น…

โš ๏ธIssues

  • ๋‹คํฌ ๋ชจ๋“œ ์ง€์›
  • ์ž‘์„ฑํ•˜๊ธฐ ํ™”๋ฉด์—์„œ ํ•„์ˆ˜ ์ž‘์„ฑ๋ž€ ๋ฏธ๊ธฐ์ž…์‹œ Toast ๋ฉ”์„ธ์ง€ ๊ฐ€๋ฆผ ํ˜„์ƒ ํ•ด๊ฒฐ
  • ์ตœ์†Œ ์ง€์› OS 15.0์œผ๋กœ ๋‹ค์šด

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.