A powerful weather data aggregation service, written in Ruby and built using Ruby on Rails. Open source.
About • Supported Regions • Getting Started • Contributing • License
Nimbus is a weather data aggregation service, much like Dark Sky's API, or OpenWeatherMap's API. It's written in Ruby using Ruby on Rails. Nimbus uses GraphQL to efficiently serve weather data to mobile and web applications alike. Nimbus was designed to work hand-in-hand with Clouds, a unique weather app written in SwiftUI.
- Fast. It should serve data as quickly as possible.
- Efficient. Using GraphQL, Nimbus only serves (and processes) the requested data, and should not waste compute time.
- Trustworthy. Weather data should be accurate, and from trusted sources.
- Global. Nimbus should (eventually) be able to serve data from any location on the planet.
Currently, the following regions are supported:
- Canada via Environment Canada
Radar regions are independent from weather regions. Currently, the following data sources are supported:
- MSC GeoMet (Environment and Climate Change Canada)
- RainViewer, which provides global radar imagery.
To get started, you'll need to pull the source code. Find yourself a working directory, and clone this repo to it. I recommend using GitHub Desktop.
Otherwise, pull it using the git
CLI:
git clone https://github.com/lfroms/nimbus.git
Then, navigate into the cloned repository:
cd nimbus
If you are unfamiliar with Rails, you should follow the Getting Started Guide to learn how to get Rails running on your system before starting.
Once everything is installed, set up the database:
rails db:setup
Then, load the weather regions:
rails c
Stations::EnvironmentCanada::StationListSyncService.execute
Finally, you can start the server:
rails s
Once the server is booted, you can query the GraphQL endpoint at localhost:3000/graphql
.
If you have any improvements that you'd like to make to Nimbus, please create a branch and open a pull request! This project is meant to be community-driven. It cannot evolve without your help! Please be mindful of the software architecture. It can't be maintained if you're the only person that is able to understand what it does. When in doubt, try to mimic the existing architecture. If you think that the architecture can be improved, please open an issue. Architecture and decisions should be documented in the Wiki.
Oh, and please write tests. There aren't any tests right now, but I simply don't have the capacity to write them. All new contributions should be tested.
Code should be linted using RuboCop. Please ensure that you've executed rubocop -A
before pushing your changes.
Nimbus needs better documentation! The Wiki sure could use some help. Think the README needs some more information? Add it!
Nimbus is deployed to Heroku on a regular basis, provided that there are enough changes to justify a new deploy. Pressing bug fixes will be deployed promptly. Before deploying and merging code, all changes should be tested on the staging server. Tag @lfroms to request that your pull request be deployed to the staging server.
Nimbus is released under the MIT License.