Aura Weather App - katman22/pumanawa_kam GitHub Wiki

Aura Weather

What’s new

New Features

  • Tap to see forecast details. Short forecast is hidden by default. Tapping the screen icon will open the short description.
  • Themes were added. Tapping the paint palette will cycle through available themes
  • Hourly forecast contains up to 4 days of information along with additional fields on expansion for dew point and humidity as well as the short forecast.
  • User can now remove items in recent history
  • Recent history items can become favorites
  • Favorites will load by default when app has been reopened

Initial Release

  • Index page with location search options.
  • Full forecast available along with satellite imagery.
  • Features in app include;
  1. tap to zoom,
  2. add recent searches,
  3. find location,
  4. hourly forecast,
  5. update forecast on demand.

Features:

  • Current and 7-day weather forecasts
  • Interactive radar map
  • Location-based conditions
  • Fast, lightweight design
  • Powered by trusted sources like NOAA

Aura Weather is ideal for skiers, hikers, travelers, and anyone who needs weather without distraction.

Android ScreenShots

Screenshot Screenshot Screenshot Screenshot Screenshot

iPhone ScreenShots

Screenshot Screenshot Screenshot Screenshot Screenshot

Development notes

Building for dev

Devs need an apk from Expo to build locally and see local server updates. If production version aab is installed it will need to be uinstalled prior to running the Dev built apk.

If there are issues with seeing changes make it onto a phone a removal of the nmp modules and rebuild can often correct this. That and a clear cache on rebuild are the first options a dev needs to complete.

rm -rf node_modules .expo .expo-shared package-lock.json

npm install

npx expo start --clear

πŸ› οΈ Build & Release Process

This page documents how we build, test, and release the Aura Weather app using Expo and EAS (Expo Application Services).

πŸ“¦ Build Profiles

Profile Purpose Notes
preview Internal testing Uses test ads and test tokens
production Public release build Uses live AdMob IDs and secure tokens

JWT information is held in eas config. We also use SecureStore through Expo where possible. There were some issues reading token on load from SecureStore so the JWT is added on build. It IS possible for a decompile to show keys. Security side if we do get additional / excessive traffic a change to the key is a config item on the server. This means we have a quick response if there are security concerns.

πŸ”§ Build Commands

πŸ§ͺ Internal Testing

eas build -p android --profile preview

πŸ§ͺ Closed Testing

eas build -p android --profile production

Once build is complete login to Dev Play Console

Go to 'Closed Testing' track > Manage track > Create new release.

Add the new AAB file. Add any notes or copy from a previous release. Submit for review.

Note: Builds are set to auto release on approval from google. Submit and wait on validation (13-15 mins). If validation passes submit for approval. Any issues found on submit need to be addresed prior to being able to submit for review.

🍏 Submitting to Apple

npx eas build --platform ios --profile production

npx eas submit --platform ios --profile production

Note: IOS folder is present so Info.plist MUST be updated if submitting a new version to the Apple Store.

<key>CFBundleShortVersionString</key>
<string>2.0.0</string>

When build is complete and IOS build is uploaded to Apple Go to the App and click the + next to the Heading iOS APP. The + will not be there unless a new build is available. Click plus > Select latest build > Click next and follow instructions until you can submit the build for review.

Note: Not currently doing ANY Test Flight testing. Its all happening on the fly for iOS but we do have a large group for Android and have caught all the reported iOS bugs on Android also.

Apple Connect Store

Select the app, in the tope left corner click the + and select

Builds take a typical 13mins.

All Builds

  1. Use environment i.e. 'production, 'preview'; settings in eas.json
  2. Good for internal or closed testing.
  3. AdMob test unit IDs active.

πŸ“ eas.json


{ "cli": { "version": ">= 3.0.0" }, "build": { "preview": { "developmentClient": false, "distribution": "internal", "android": { "autoIncrement": true }, "env": { "API_JWT_TOKEN": "your_test_jwt_token" } }, "production": { "developmentClient": false, "distribution": "store", "android": { "autoIncrement": true }, "env": { "API_JWT_TOKEN": "your_prod_jwt_token" } } } }

Also using ENV file so we have updates there needed to.

API_JWT_TOKEN={Prod token}

API_SERVER=https://pumanawa-kam.onrender.com/api/v1. # for local http://192.168.11.60:3000/api/v1/ #

Note: A physical device I.E. phone in hand; is preferred to test. Once a server is booted developer can npx expo start and use phone camera to scan QR and receive latest build from local development server. Admob creates issues with native react components and will fail builds if ran from typical npx expo start I.E. not a development build.

πŸ“€ Uploading to Google Play

After build completes:

  • Download the .aab file from Expo
  • Go to Google Play Console
  • Upload the .aab under the appropriate track:
  • Internal testing
  • Closed testing
  • Production

Going through Play Console and troubleshooting configuration is an entirely different WIKI. :-)

βœ… Version Management

  • Version codes auto-increment with each EAS build
  • You can confirm version change in terminal output or on Play Console
  • Optional: manually bump version name in app.config.js if needed

🍏 iOS build failed:

Compatible versions of some pods could not be resolved. You are seeing this error because either:

  • Some of the pods used in your project depend on different versions of the same pod. See logs for more information.
  • If you are caching Podfile.lock using "cache" field in eas.json, then versions there might not match required values in Podspecs of some installed libraries. To fix this, you can re-run build command with "--clear-cache" option, or select "Clear cache and retry build" on the build page.

For this error you want to clear cache and potentially rebuild all Pods.

Try a clear cache first.

npx eas build --platform ios --profile production --clear-cache

Rebuilding Pods if needed.

cd ios

rm -rf Pods Podfile.lock

pod install --repo-update

⚠️ **GitHub.com Fallback** ⚠️