Giter VIP home page Giter VIP logo

forecastapp's Introduction

ForecastApp

This project aims to create a weather app that consumes data from Open Weather API

Requirements

  • iOS 14.2

Structure

For ForecastApp it was used a MVVM architecture in combination with functional react programming approach

Layers Main Responsability
AppCoordinator Instantiates all dependencies needed on the project dependencies
View Controller Builds and controls different UI components for main screen
Data Source Handles with UICollectionView interaction
ViewModels Prepares content, and manages business logic
Service Manages network calls to Open Weather API
Views Renders UI content

External Dependencies

ForecastApp has 3 external dependencies:

RxSwift: Rx is a generic abstraction of computation expressed through Observable interface, which lets you broadcast and subscribe to values and other events from an Observable stream.

SnapKit: SnapKit is a DSL to make Auto Layout easy on both iOS and OS X.

Charts: Framework that allows to create beatifull charts on a easy way to iOS

Dependency Manager

For dependency management it was used Swift Package Manager (SPM).

Considerations

  • Open Weather API hourly forecast data is paid, so it wasn't used on this project. It was decided to use 5 Day / 3 Hour Forecast solution instead. So, for graph's collection data it was expected data related to the current day. The API response will only send data related with the time of the request. This means if a request is made at 9pm it will respond with only bullet point temperature for the current day.

Due to a lack of time, there are some things that should be improved:

  • Creation of Unit Tests
  • A bit more of clarity on ForecastViewModel layer
  • Adopt new UICollectionViewDiffableSource
  • Improve UI

Author

Luís Costa - [email protected]

forecastapp's People

Contributors

lmbcosta avatar

Watchers

James Cloos avatar  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.