Skip to content

Clean architecture MVVM iOS app with app coordinator, weather feature, UIKit programatic layout, dependency injection, unit tests

Notifications You must be signed in to change notification settings

krishkumar/weatherapp-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

weatherapp

Swift-based iOS weather app is designed with a modular architecture for scalability and maintainability.

  • MVVM architecture with separation of concerns
  • Integrates CoreLocation to provide real-time weather updates based on the user's location.
  • Custom networking layer efficiently handles API interactions, reliable data fetching.
  • Protocols for dependency injection for unit testing and flexibility in component management.
  • UIKit, programmatic UI AutoLayout
  • OpenWeatherMap API to fetch current weather data.

Components

Weather Feature

  1. WeatherFeatureCoordinator: Manages navigation and flow control within the weather feature, integrates with app.
  2. DefaultWeatherFeatureFactory: A factory class to create instances of the main components and dependencies required for weather feature.
  3. WeatherViewModel: Main view model that handles business logic and data fetching for the weather feature.
  4. WeatherWebService: Network requests to weather API and fetch required weather data.
  5. WeatherRemoteRepository: Data source for the view model and provides weather data fetched from WeatherWebService.
  6. WeatherData: Codable model representing the structure of the weather data fetched from the API.
  7. WeatherViewController, WeatherView, WeatherCardView: The main view controller and views that display the weather data and handle interactions, search.
  8. Unit Tests, Mocks

Screens

Author

krishna

About

Clean architecture MVVM iOS app with app coordinator, weather feature, UIKit programatic layout, dependency injection, unit tests

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages