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

lfroms/clouds

Repository files navigation

Clouds
Clouds

A unique weather experience for iOS, written in Swift and built using SwiftUI. Open source.

GitHub issues GitHub contributors GitHub stars GitHub license Contributions welcome

About • Supported Regions • Getting Started • Contributing • License

Clouds screenshots

About

Clouds is a weather app, unlike any weather app. It's written in SwiftUI, a declarative framework for building user interfaces for iOS. Unlike most weather apps, Clouds uses a custom GraphQL-powered weather data aggregation service, Nimbus.

Vision & Goals

  • Simple. It should have a no-nonsense user interface that is easy for anyone to understand.
  • Beautiful. Not only should the user interface be easy to understand, it should also be pleasant to look at.
  • Trustworthy. Weather data should be accurate, and from trusted sources.
  • Unique. Clouds should be as different from other weather apps as possible. It should provide a 'breath of fresh air' for users.
  • Fast. It should boot instantly and weather data should appear as quickly as possible. The user should not need to worry about the data loading process.
  • Smooth. There should be virtually zero user interface bugs. Bugs are frustrating to the user.

Status

As of October 31, 2022, Clouds is sunset and is no longer available for download. However, the source code remains available and contributions are still welcome. For local development, you will need an instance of Nimbus running.

Supported Regions

Clouds' region compatibility largely depends on the regions in which Nimbus is supported. 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/clouds.git

Then, navigate into the cloned repository:

cd clouds

If it's your first time contributing, you'll need to register for a Mapbox account and create a new access token and add it to your ~/.netrc file. The article linked describes how to create such a file and how to format it. Setting up this credential is required to be able to download the Mapbox SDK Swift Package Manager package. This secret is automatically configured in GitHub Actions runs.

You can then open the Xcode project (named Clouds.xcodeproj) in Xcode.

Contributing

Code

If you have any improvements that you'd like to make to Clouds, 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. Current architecture and decisions are 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 SwiftLint. Please ensure that you've executed SwiftLint (or SwiftFormat for Xcode, at least) with the default ruleset before pushing your changes. Eventually, this will be configured to run in a GitHub Action.

Design

Are you a designer? Do you think parts of the app's design can be improved? Please open an issue with your design ideas! Clouds should be the best-looking weather app around. Try to keep the design language consistent. Your design should seamlessly fit in with the rest of the app.

Documentation

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

Localization

Right now, Clouds is only available in English (Canada). While this accounts for most users in the currently supported regions, it simply isn't enough to reach a global audience.

Releases

Clouds is released to the Apple App Store on a regular basis, provided that there are enough changes to justify a new release. Pressing bug fixes will be released promptly. GitHub releases correspond to App Store releases. Release notes will be collected in draft GitHub releases prior to submission. GitHub releases represent the cutoff for all code in a release, and any code pushed to master afterwards will be considered for the next release.

Fastlane is used to take automated screenshots for the App Store listing. Everything in the fastlane directory can be ignored, as there is a specific process for taking these screenshots that has not yet been documented.

License

Clouds is released under the MIT License.