Skip to content
This repository has been archived by the owner on Nov 14, 2022. It is now read-only.
/ solar-weather Public archive

React Native Weather App w. Realm, Redux, ReasonReact & Forecast.io

Notifications You must be signed in to change notification settings

Thomas0c/solar-weather

Repository files navigation

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