Skip to content
WeatherRules iOS App
Swift Other
  1. Swift 98.8%
  2. Other 1.2%
Branch: public-master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE
App
Docs
Pods
Scripts
Settings.bundle
WhatToWear.xcodeproj
WhatToWear.xcworkspace
readme-assets
.codeclimate.yml
.gitignore
Gemfile
Gemfile.lock
LICENSE
Podfile
Podfile.lock
README.md
codecov.yml

README.md

WeatherRules Header Image

Screenshots

iTunes App Store GitHub top language GitHub Bitrise Maintainability

This repo contains the entire WeatherRules iOS app, available here on the iOS App Store.

This repo is meant as a portfolio piece and an example of my code, you won't be able to just build and run it as it's missing API Keys among other things.

Screenshots

iPhone X Screenshots

Today Forecast Measurements Conditions Rules Today Extensions Time Settings Rule Groups Past Forecasts Future Forecasts Settings

iPhone 8 Plus Screenshots

Today Forecast Measurements Conditions Rules Today Extensions Time Settings Rule Groups Past Forecasts Future Forecasts Settings

iPad Screenshots

Today Forecast Measurements Conditions Rules Today Extensions Time Settings Rule Groups Past Forecasts Future Forecasts Settings

Organisation

Architecture diagram

The app is split into a number of frameworks/targets

  • WhatToWear: Main App Target
  • RulesExtension: Rules Today Extension
  • ForecastExtension: Forecast Today Extension
  • ExtensionCore: Code that is shared between the Today Extensions
  • CoreUI: Reuseable UI components
  • Assets: Images used throughout the app
  • Charts: Components used for making charts/graphs
  • Networking: Networking components for making API calls primarily
  • CoreComponents: Common objects used in multiple places that don't fit elsewhere
  • Models: Model objects, whether they be from the DarkSky API or elsewhere
  • Core: Mostly Extensions of Apple frameworks that are used everywhere
  • ErrorRecorder: Wrapper for sending non-fatal errors to AppCenter (as custom events) as well as Analytics.
  • Environment: Splitting Dev/Prod environments

Other Highlights

Unit tests

There is a small-ish test suite of ~300 tests using the Quick and Nimble BDD frameworks.

Assets

All images (except App Icons and Launch images) are in the Assets framework and I use R.swift for compile-time checking of them.

Linting

I use SwiftLint to lint this project, the config file can be found here.

Usage

If you really want to build and run it you'll need to sort out:

  • DarkSky API Keys
  • AppCenter API Keys
  • Code-signing settings
You can’t perform that action at this time.