Home

Awesome

Pilgrim is a pure Swift successor to Typhoon!!

Typhoon uses the Objective-C runtime to collect metadata and instantiate objects. It powers thousands of Objective-C applications but it is not all that great for modern Swift.

Pilgrim (https://github.com/appsquickly/pilgrim) is a pure Swift successor to Typhoon. It is easy to migrate your Typhoon apps to Pilgrim. There's a pilgrim sample app here.


Pocket Forecast (Swift)

An example application built with <a href ="http://typhoonframework.org/">Typhoon</a>.

Features:

NB: The free weather API that we were using no longer includes forecast information, so this won't be displayed in the app until we find an alternative. The concepts remain the same.

Running the sample:

Exercises

  1. Study the <a href="https://github.com/typhoon-framework/Typhoon-Swift-Example/blob/master/PocketForecast/Assembly/CoreComponents.swift">core components</a>, <a href="https://github.com/typhoon-framework/Typhoon-Swift-Example/blob/master/PocketForecast/Assembly/ApplicationAssembly.swift">view controllers</a> and <a href="https://github.com/typhoon-framework/Typhoon-Swift-Example/blob/master/PocketForecast/Assembly/ThemeAssembly.swift">themes</a>. Notice how the framework allows you to group related components together. Notice how dependency injection allows for centralized configuration, at the same time as using aggressive memory management. (With default prototype-scope, components will go away whenever they're not being used).
  2. Study the <a href="https://github.com/typhoon-framework/Typhoon-Swift-Example/tree/master/PocketForecastTests/Integration">test cases</a>. Imagine that you needed to use one service URL for integration tests and another for production. How would you do it?
  3. Imagine that you decided to save the list of cities that the user wants to get reports for to iCloud, instead of locally on the device. Notice how you'd only need to change one line of code to supply your new implementation in place of the old one. And you'd be able to reuse the existing test cases.
  4. Imagine that you'd like to integrate with other weather data providers, and let the user choose at runtime. How would you do it?
  5. Try writing the same Application without dependency injection. What would the code look like?

The App

Weather Report Weather Report Weather Report

I'm blown away!

Typhoon is a non-profit, community driven project. We only ask that if you've found it useful to star us on Github or send a tweet mentioning us (<a href="https://twitter.com/appsquickly">@appsquickly</a>). If you've written Typhoon related blog or tutorial, or published a new Typhoon powered app, we'd certainly be happy to hear about that too.

Typhoon is sponsored and lead by <a href="http://appsquick.ly">AppsQuick.ly</a> with <a href="https://github.com/appsquickly/Typhoon/graphs/contributors">contributions from around the world</a>.

***Thanks @hongcheng for the excellent <a href="https://github.com/honcheng/PaperFold-for-iOS">Paperfold</a> animation, and @michaeljbishop for the <a href="https://github.com/michaeljbishop/NGAParallaxMotion">parallax effect</a>. ***