This repository contains the U-STEP application build by the CS342 2023 Utah Team.
It demonstrates using the Spezi framework template and builds on top of the Spezi Template Application.
The application uses a modularized structure enabled by using the Swift Package Manager.
The application uses the Spezi FHIR
standard to provide a shared repository for data exchanged between different modules using the FHIR
standard.
You can learn more about the Spezi standards-based software architecture in the Spezi documentation.
You can build and run the application using Xcode by opening up the Utah.xcodeproj.
The application provides a Firebase Firestore-based data upload and Firebase Authentication login & sign-up. It is required to have the Firebase Emulator Suite to be up and running to use these features to build and test the application locally. Please follow the installation instructions.
You do not have to make any modifications to the Firebase configuration, login into the firebase
CLI using your Google account, or create a project in firebase to run, build, and test the application!
Startup the Firebase Emulator Suite using
$ firebase emulators:start --only auth,firestore
After the emulators have started up, you can run the application in your simulator to build, test, and run the application.
The application includes the following feature flags that can be configured in the scheme editor in Xcode and selecting the Utah scheme, the Run configuration, and to switch to the Arguments tab to add, enable, disable, or remove the following arguments passed on launch:
--skipOnboarding
: Skips the onboarding flow to enable easier development of features in the application and to allow UI tests to skip the onboarding flow.--showOnboarding
: Always show the onboarding when the application is launched. Makes it easy to modify and test the onboarding flow without the need to manually remove the application or reset the simulator.--disableFirebase
: Disables the Firebase interactions, including the login/sign-up step and the Firebase Firestore upload.--useFirebaseEmulator
: Defines if the application should connect to the local firebase emulator. Always set to true when using the iOS simulator.
The application includes continuous integration (CI) and continuous delivery (CD) setup.
- Automatically build and test the application on every pull request before deploying it.
- An automated setup to deploy the application to TestFlight every time there is a new commit on the repository's main branch.
- Ensure a coherent code style by checking the conformance to the SwiftLint rules defined in
.swiftlint.yml
on every pull request and commit. - Ensure conformance to the REUSE Specification to property license the application and all related code.
Please refer to the Spezi Template Application and the ContinousDelivery Example by Paul Schmiedmayer for more background about the CI and CD setup for the Spezi Template Application.
This project is based on ContinousDelivery Example by Paul Schmiedmayer, and Spezi Template Application provided using the MIT license.
You can find a list of contributors in the CONTRIBUTORS.md file.
The U-STEP application is licensed under the MIT license.