React Native Weather App w. Realm, Redux, ReasonReact & Forecast.io
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.circleci
__mocks__
__tests__
android
app
assets
ios
screenshots
.babelrc
.buckconfig
.eslintrc
.flowconfig
.gitattributes
.gitignore
.watchmanconfig
app.json
bsconfig.json
index.js
package-lock.json
package.json
readme.md

readme.md

Solar logo

Solar

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

CircleCI

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 forecast.io 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.

Features

Screenshots

Example 1 Example 2 Example 3 Example 4