Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Solar logo


A personal project exploring React Native, Realm, Redux & ReasonReact. (iOS only - Android WIP).


Get Started

  • Make sure you have React Native installed React Native Docs
  • Make sure you have CocoaPods installed CocoaPods
  • Clone repo
  • cd solar
  • Setup and install ReasonML and BuckleScript Guide
  • Run npm install alternatively yarn install
  • Create a .env file in the project root
  • Get a API key and set FORECAST_API=[key] in .env
  • Get a Google Places for iOS API key and set PLACES_API=[key] in .env. Get it here: Google Places iOS
  • Navigate to ios folder, cd ios and run pod install
  • Compile ReasonReact components to js. Run npm run build or yarn run build
  • For iOS Run project using react-native run-ios
  • For Android run project using react-native run-android
  • For additional logging run react-native log-[platform], e.g. react-native log-ios while running app in simulator/emulator.

About the project

Solar is a side-project created for the learning experience while sharing the result as the project develops. It started as an exploration of React Native, Realm and Redux. I then decided to convert the project file-by-file to ReasonML. I designed the application in Fall 2016, then built a prototype and then decided to try to build an actual working version that could not only benefit myself, but also others. Besides being on GitHub the actual application is also available in the iOS app store as Solar Weather Collection.

Why ReasonReact?

I wanted to explore a static and safe type system with a fairly familiar syntax. ReasonReact offers the ability to convert component-by-component, which is very convenient to slowly get familiar with syntax and mindset by taking on smaller parts of the codebase while converting to ReasonML. ReasonML is then compiled to JavaScript (using BuckleScript backed by OCaml), which enables great interoperability.



Example 1 Example 2 Example 3 Example 4

You can’t perform that action at this time.