Note: It will probably be a while before we get to this issue, but it can’t hurt to research early.
User story statement:
As a men’s golf team player / coach, I want to be able to easily download the golf drill app onto my Apple / Android mobile device. I want to be able to easily install the golf drill app by searching for it on the Apple / Android App store.
Background:
Why do we want it?
Currently, we use Expo Go for local development, in which we either:
Open the development version of the React Native mobile app on Android / iOS emulator, on the developer’s PC
Use an actual phone to scan a QR code that shows up on the terminal after compiling the React Native app locally on the developer’s PC. After being scanned, the dev build of the app is opened on the phone
Neither of the two above options is feasible for distributing the final version of the app to a whole team of golf players, which is why it is needed to actually deploy the golf drill app on the Android / Apple app stores.
Who is this for?
As referenced in the User Story statement, this issue is targeting golf team players / coach in the final production stage, at which time the app needs to be easy to install from the App store
Do we have data to support it?
The stakeholder (coach) has mentioned that as parts of his requirements, the app final version should be installable from the App store
It is much easier (especially at scale, with a whole team of players) to install an app through the App store than scanning a terminal for the Expo Go development build, so this makes sense
Solution / Requirements:
It should be possible to create a production-ready build of the app (for both Android and Apple) that can be tested locally
A stretch goal may be to integrate Github Actions with creating the production builds, for a full CI/CD pipeline
If needed, the app should be able to be updated periodically on the app stores
At minimum, the app’s production builds can be uploaded manually by the developers to the app stores
A stretch goal may be to integrate Github Actions with submitting builds to the app stores, for a full CI/CD pipeline
The app should be deployed on Android and Apple app stores
The app should be easy to download / install from app stores
The app should stay up on the app store (should not be taken down due to an inactive developer account, etc.)
Note that creating the production builds and submitting builds to app store are separate steps
Dependencies:
Are we waiting on other user stories or tasks to complete?
Before Creating Production Builds
Need to set up EAS CLI, the default Expo Go service for building / deploying apps (or we could try another service, needs more research)
The production building step itself can be tested locally (e.g. on Android or iOS emulator on PC) at any time and is not blocked per se by completion of other app features
It may be a good idea to test the production builds early even if the app is not feature complete, because we might catch some bugs early that way
These do cost money (one time fee of $25 and $99 annually, respectively, so may need to contact OSU for funding)
The app store submission step probably cannot be tested until all other features of the app are ready to go (including the build process), because we do not want to submit a half-finished app to the official Android / Apple App stores. Other tasks we are waiting on include:
Revamping our database schema (compared to last year’s codebase) to match golf coach’s drill requirements
Revamping our backend (compared to last year’s codebase) to match golf coach’s drill requirements
Revamping frontend UI (e.g. leaderboards and progress graphs) to match golf coach’s requirements
Are others user stories or tasks waiting on this issue to complete?
As stated above, the build step needs to be done before the app store submission step, but other than that, no
List of tasks and subtasks
[ ] Need to set up EAS CLI, the default Expo Go service for building / deploying apps (or we could try another service, needs more research)
[ ] Write up some documentation (including any credentials for EAS / Apple Developer / Google Play Developer / etc.) so that future devs / IT staff can continue to deploy updates to the app as needed in the future
Estimate
Optimistically, I think setting up the build step and app store submission step could take about a week each, and maybe another week if we want to integrate Github Actions for CI/CD (so ~3 weeks total)
Open Questions
It seems that if we use EAS (Expo Go default service for building and deploying), then Windows developer PC can deploy to Apple mobile app store (as Expo Go / React Native is cross platform), but will need to double check this, as not everyone on our team has the same PC operating system
Acceptance Criteria
App is deployed on Android and Apple app stores
App can be easily downloaded and installed from app stores
Adequate documentation is provided for any future IT admins / developers to be able to deploy updates in the future
Definition of done
Production build of app is tested locally (on both Android and Apple versions) and any major bugs are fixed before deploying to App stores
We will try to integrate automated unit testing if possible, e.g. with Jest and Playwright
Any bugs that appear after deployment to App stores are fixed ASAP and a new update will be deployed
Documentation for building and deployment is easy to read and understand by professor Rob Hess, our project partner (will be a litmus test for readability)
If we integrate a CI/CD pipeline with Github Actions, the YAML code for this should be well commented and reviewed by at least 2 other team members before merging to main branch
Note: It will probably be a while before we get to this issue, but it can’t hurt to research early.
User story statement:
Background:
Why do we want it?
Who is this for?
Do we have data to support it?
Solution / Requirements:
Design resources:
Dependencies:
Are we waiting on other user stories or tasks to complete?
Before Creating Production Builds
Before App Store Submission
Are others user stories or tasks waiting on this issue to complete?
List of tasks and subtasks
Estimate
Open Questions
Acceptance Criteria
Definition of done