Giter VIP home page Giter VIP logo

clouds's Introduction

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

Get Clouds on the Apple App Store

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.

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. This secret is automatically configured in GitHub Actions runs.

Clouds primarily uses Swift Package Manager to manage dependencies. However, some dependences (namely the Mapbox SDK) are installed using Carthage. If you don't already have Carthage installed, you should install it before proceeding. Once Carthage is installed, run the following command to install the dependencies. Make sure you include the --use-netrc option to use the credentials you configured earlier.

carthage bootstrap --platform ios --use-netrc

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.