Skip to content
This repository has been archived by the owner on May 23, 2023. It is now read-only.

lfroms/nimbus

Repository files navigation


Nimbus

A powerful weather data aggregation service, written in Ruby and built using Ruby on Rails. Open source.

GitHub issues GitHub contributors GitHub stars GitHub license Contributions welcome

AboutSupported RegionsGetting StartedContributingLicense

About

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.

Vision & Goals

  • 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.

Supported Regions

Currently, the following regions are supported:

Radar

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.

Getting Started

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.

Contributing

Code

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.

Documentation

Nimbus needs better documentation! The Wiki sure could use some help. Think the README needs some more information? Add it!

Deployment

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.

License

Nimbus is released under the MIT License.

About

⛈ Powerful weather data aggregation for mobile applications.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks