byaruhaf / Atlas

weather app using the openweathermap.org API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Atlas

License: MPL 2.0 Platforms Swift Version PRs Welcome Twitter

Overview

Atlas is a partial demo of a weather app using the openweathermap.org API. This branch was Compiled with Xcode 14.2.0, and Swift 5.7 and supports iOS 16 and above.

Project Documentation generate using Apples DocC can be accessed using this link Documentation

Secrets Management

This app requires a 3rd party API key from https://openweathermap.org. You can get your own free key by signing up for an account, then creating a new API Key here:

https://home.openweathermap.org/api_keys

Next you'll right-click on the Configuration folder in the Xcode sidebar, and select Reveal in Finder. Duplicate the file secrets.template.xcconfig and rename it to secrets.xcconfig. Then edit the file and enter your API Key there.

Implementation Details

App Navigation & Function

First Tab: Current

Shows the current temperature at the users current location

Cloudy Sunny Rainy
Navigation Navigation Navigation

Second Tab: Favorites

Allows the user to add, remove, view and save temperature in his/her favorite cities. The user can also swipe to a map view to view his/her favorite cities on a map.

Adding Favorites Swipe To Map View Removing Favorites
Navigation Navigation Navigation

Third Tab: Settings

Allows the user to set the image theme for the first tab the choice is between the sea images and the forest images. Allows the user to set the App Icon. User can choose between a "Cloud Icon" & "Temperature Icon"

Navigation

Persistence

The Apps Persistence is implemented using UserDefaults. UserDefaults is used to store the users favorite cities and last time the users current location weather data was updated

Refresh Frequency

The App fetch's the weather data for the current location of the device every time the user opens the application. The App also fetch's the weather data every time the user moves it from the background to the foreground. For efficiency the background to the foreground update only happens the ten minutes or more have passed.

The user can also use Pull to refresh to fetch the weather data for the current location.

Security

  • Secret Management API Keys are Stored in Xcode Configuration
  • SSL/Certificate Pinning using Intermediate Certificate Authority (CA) certificates for openweathermap.org

Logging

Proper logging using Apple unified logging system using the Logger type

Continuous Integration & Deployment

Atlas uses Xcode Cloud to perform continuous integration and deployment. Every push to the github repo is Built, Tested, Archive and Deploy to testflight for internal testing. If any file changes Xcode Cloud will create a new build of the Atlas app on TestFlight.

Xcode Cloud

Coding Style

SwiftLint runs as part of the build process in the local Xcode & Xcode Cloud, and errors/warnings are surfaced in Xcode as well.

Code coverage integration

With Unit & UI Testing the code coverage is 64%

Known issues

About

weather app using the openweathermap.org API

License:Mozilla Public License 2.0


Languages

Language:Swift 99.1%Language:Shell 0.9%