Skip to content

jala886/weather_JL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 

Repository files navigation

This is an app to fetch and show data from OpenWeather

🚀 Features

UIKit mixed with SwiftUI
MVVM pattern
TDD development

🖼 Overlays

Based on MVVM pattern
    * Views
        RootViewController
            Used UIKit, UISearchBar, UIButton
            // this view split two parts
            // (1)   up part based on UIKit and will show search bar
            // (2)   bottom part based on SwiftUI
            // (2.1) show time bar
            // (2.2) show weather information
           // (2.3) show location or map information
        MainInfoView
            Used SwiftUI             
    * ViewModel
        load data and combine with views
	In loadData function, It will followed this sequence to fetch data
	(1) searched city Name.If it is not nil, it will saved into userDefault.
	(2) userDefault value
	(3) user's location
	(4) default cityName (Landon)
    * Model
        defined data structure
    * Service
        Network:
            URLs
                save the real URLs and return available URLs
            NetworkManager
                send data by async/wait and closure method
        LocationService:
            Support Location Manager
        MockService
            supply mock data for test and developing
    * Global
        Global
            defined some global properties, like appId
        Utils
            defined global function, like data convert, string operation. Logger. 

TDD: 
    WeatherIcon_JLTests
	test_networkManager_FetchByName()
	test_networkManager_FetchByPosition()
	test_networkManager_FetchIcon()
	test_locationService()
    WeatherIcon_JLUITests
	MainInfoView_Previews
	testExample()
		(1) auto start app, input "tokyo"
		(2) delete "tokyo"
		(3) input "atlanta"

🛠 Appearance / Behavior Customization

👀 Adapt visibility of:

🪄 Custom controls

💻 Supported Platforms

📱 iOS 13+
🖥 macOS 10.15+
📺 tvOS 13+
⌚️ watchOS 6+

📌 Annotations: The old-fashioned approach

About

for interview

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages