diff --git a/.firebaserc b/.firebaserc index a46b46e..70a0429 100644 --- a/.firebaserc +++ b/.firebaserc @@ -1,5 +1,5 @@ { "projects": { - "default": "stanfordspezitemplateapp" + "default": "behavior" } } diff --git a/.firebaserc.license b/.firebaserc.license index 9f5551c..5e0d23c 100644 --- a/.firebaserc.license +++ b/.firebaserc.license @@ -1,4 +1,4 @@ -This source file is part of the Stanford Spezi Template Application open-source project +This source file is part of the Behavior based on the Stanford Spezi Template Application project SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) diff --git a/.github/workflows/beta-deployment.yml b/.github/workflows/beta-deployment.yml index 1ff3698..9043be9 100644 --- a/.github/workflows/beta-deployment.yml +++ b/.github/workflows/beta-deployment.yml @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # @@ -27,7 +27,7 @@ jobs: uses: StanfordSpezi/.github/.github/workflows/xcodebuild-or-fastlane.yml@v2 secrets: inherit with: - googleserviceinfoplistpath: 'TemplateApplication/Supporting Files/GoogleService-Info.plist' + googleserviceinfoplistpath: 'Behavior/Supporting Files/GoogleService-Info.plist' setupsigning: true fastlanelane: beta deployfirebase: diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 82a483f..6a6095e 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # @@ -25,9 +25,9 @@ jobs: uses: StanfordBDHG/.github/.github/workflows/markdown-link-check.yml@v2 buildandtest: name: Build and Test - uses: StanfordSpezi/.github/.github/workflows/xcodebuild-or-fastlane.yml@v2 + uses: CS342/.github/.github/workflows/xcodebuild-or-fastlane.yml@v2 with: - artifactname: TemplateApplication.xcresult + artifactname: Behavior.xcresult runsonlabels: '["macOS", "self-hosted"]' setupfirebaseemulator: true customcommand: "firebase emulators:exec 'fastlane test'" @@ -36,4 +36,4 @@ jobs: needs: buildandtest uses: StanfordBDHG/.github/.github/workflows/create-and-upload-coverage-report.yml@v2 with: - coveragereports: TemplateApplication.xcresult + coveragereports: Behavior.xcresult diff --git a/.github/workflows/documentation-deployment.yml b/.github/workflows/documentation-deployment.yml deleted file mode 100644 index 7236351..0000000 --- a/.github/workflows/documentation-deployment.yml +++ /dev/null @@ -1,61 +0,0 @@ -# -# This source file is part of the Stanford Spezi open-source project -# -# SPDX-FileCopyrightText: 2023 Stanford University and the project authors (see CONTRIBUTORS.md) -# -# SPDX-License-Identifier: MIT -# - -name: Documentation Deployment - -on: - push: - branches: - - main - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: "pages" - cancel-in-progress: true - -jobs: - deploydocs: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: macos-13 - steps: - - uses: actions/checkout@v4 - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable - - name: Check environment - run: | - xcodebuild -version - swift --version - echo "env.selfhosted: ${{ env.selfhosted }}" - - name: Build DocC - run: | - xcodebuild docbuild -scheme TemplateApplication \ - -derivedDataPath .derivedData \ - -destination 'generic/platform=iOS' \ - -skipPackagePluginValidation \ - CODE_SIGN_IDENTITY="" \ - CODE_SIGNING_REQUIRED=NO - $(xcrun --find docc) process-archive \ - transform-for-static-hosting .derivedData/Build/Products/Debug-iphoneos/TemplateApplication.doccarchive \ - --hosting-base-path SpeziTemplateApplication \ - --output-path .docs - echo "" > .docs/index.html - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: '.docs' - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index ba04bcf..813d962 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # @@ -12,7 +12,7 @@ .derivedData .build .docs -!TemplateApplication.xcodeproj +!Behavior.xcodeproj # IDE related folders .idea @@ -30,7 +30,7 @@ xcuserdata/ # Tests report.junit report.html -TemplateApplication.xcresult +Behavior.xcresult # Logs logs @@ -45,4 +45,4 @@ firebase-debug.*.log* .firebase/ # Swift Package List -TemplateApplication/package-list.json +Behavior/package-list.json diff --git a/.swiftlint.yml b/.swiftlint.yml index 9c6c5a8..e00f2bf 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # diff --git a/TemplateApplication.xcodeproj/project.pbxproj b/Behavior.xcodeproj/project.pbxproj similarity index 82% rename from TemplateApplication.xcodeproj/project.pbxproj rename to Behavior.xcodeproj/project.pbxproj index 2ca6636..72ad386 100644 --- a/TemplateApplication.xcodeproj/project.pbxproj +++ b/Behavior.xcodeproj/project.pbxproj @@ -8,15 +8,13 @@ /* Begin PBXBuildFile section */ 27FA29902A388E9B009CAC45 /* ModalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27FA298F2A388E9B009CAC45 /* ModalView.swift */; }; - 2F1AC9DF2B4E840E00C24973 /* TemplateApplication.docc in Sources */ = {isa = PBXBuildFile; fileRef = 2F1AC9DE2B4E840E00C24973 /* TemplateApplication.docc */; }; - 2F1B52CE2A4F5CCE003AE151 /* MockUploadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F1B52CD2A4F5CCE003AE151 /* MockUploadTests.swift */; }; + 2F1AC9DF2B4E840E00C24973 /* Behavior.docc in Sources */ = {isa = PBXBuildFile; fileRef = 2F1AC9DE2B4E840E00C24973 /* Behavior.docc */; }; 2F3D4ABC2A4E7C290068FB2F /* SpeziScheduler in Frameworks */ = {isa = PBXBuildFile; productRef = 2F3D4ABB2A4E7C290068FB2F /* SpeziScheduler */; }; 2F49B7762980407C00BCB272 /* Spezi in Frameworks */ = {isa = PBXBuildFile; productRef = 2F49B7752980407B00BCB272 /* Spezi */; }; - 2F4E237E2989A2FE0013F3D9 /* OnboardingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E237D2989A2FE0013F3D9 /* OnboardingTests.swift */; }; - 2F4E23832989D51F0013F3D9 /* TemplateApplicationTestingSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E23822989D51F0013F3D9 /* TemplateApplicationTestingSetup.swift */; }; - 2F4E23872989DB360013F3D9 /* ContactsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E23862989DB360013F3D9 /* ContactsTests.swift */; }; + 2F4E237E2989A2FE0013F3D9 /* LaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E237D2989A2FE0013F3D9 /* LaunchTests.swift */; }; + 2F4E23832989D51F0013F3D9 /* BehaviorTestingSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E23822989D51F0013F3D9 /* BehaviorTestingSetup.swift */; }; 2F4FC8D729EE69D300BFFE26 /* MockUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4FC8D629EE69D300BFFE26 /* MockUpload.swift */; }; - 2F5E32BD297E05EA003432F8 /* TemplateApplicationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F5E32BC297E05EA003432F8 /* TemplateApplicationDelegate.swift */; }; + 2F5E32BD297E05EA003432F8 /* BehaviorDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F5E32BC297E05EA003432F8 /* BehaviorDelegate.swift */; }; 2F6025CB29BBE70F0045459E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 2F6025CA29BBE70F0045459E /* GoogleService-Info.plist */; }; 2F65B44E2A3B8B0600A36932 /* NotificationPermissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F65B44D2A3B8B0600A36932 /* NotificationPermissions.swift */; }; 2FA0BFED2ACC977500E0EF83 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 2FA0BFEC2ACC977500E0EF83 /* Localizable.xcstrings */; }; @@ -43,8 +41,8 @@ 2FE5DC4E29EDD7FA004B9AB4 /* ScheduleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4829EDD7FA004B9AB4 /* ScheduleView.swift */; }; 2FE5DC4F29EDD7FA004B9AB4 /* EventContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4929EDD7FA004B9AB4 /* EventContext.swift */; }; 2FE5DC5029EDD7FA004B9AB4 /* EventContextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4A29EDD7FA004B9AB4 /* EventContextView.swift */; }; - 2FE5DC5129EDD7FA004B9AB4 /* TemplateApplicationTaskContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4B29EDD7FA004B9AB4 /* TemplateApplicationTaskContext.swift */; }; - 2FE5DC5229EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4C29EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift */; }; + 2FE5DC5129EDD7FA004B9AB4 /* BehaviorTaskContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4B29EDD7FA004B9AB4 /* BehaviorTaskContext.swift */; }; + 2FE5DC5229EDD7FA004B9AB4 /* BehaviorScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4C29EDD7FA004B9AB4 /* BehaviorScheduler.swift */; }; 2FE5DC5329EDD7FA004B9AB4 /* Bundle+Questionnaire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4D29EDD7FA004B9AB4 /* Bundle+Questionnaire.swift */; }; 2FE5DC6429EDD883004B9AB4 /* SpeziAccount in Frameworks */ = {isa = PBXBuildFile; productRef = 2FE5DC6329EDD883004B9AB4 /* SpeziAccount */; }; 2FE5DC6729EDD894004B9AB4 /* SpeziContact in Frameworks */ = {isa = PBXBuildFile; productRef = 2FE5DC6629EDD894004B9AB4 /* SpeziContact */; }; @@ -60,17 +58,15 @@ 2FE5DC9C29EDD9EF004B9AB4 /* XCTHealthKit in Frameworks */ = {isa = PBXBuildFile; productRef = 2FE5DC9B29EDD9EF004B9AB4 /* XCTHealthKit */; }; 2FE5DCB129EE6107004B9AB4 /* AccountOnboarding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DCAC29EE6107004B9AB4 /* AccountOnboarding.swift */; }; 2FF53D8B2A8725DE00042B76 /* SpeziMockWebService in Frameworks */ = {isa = PBXBuildFile; productRef = 2FF53D8A2A8725DE00042B76 /* SpeziMockWebService */; }; - 2FF53D8D2A8729D600042B76 /* TemplateApplicationStandard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF53D8C2A8729D600042B76 /* TemplateApplicationStandard.swift */; }; + 2FF53D8D2A8729D600042B76 /* BehaviorStandard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF53D8C2A8729D600042B76 /* BehaviorStandard.swift */; }; 5661551D2AB8384200209B80 /* SwiftPackageList in Frameworks */ = {isa = PBXBuildFile; productRef = 5661551C2AB8384200209B80 /* SwiftPackageList */; }; 566155292AB8447C00209B80 /* Package+LicenseType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 566155282AB8447C00209B80 /* Package+LicenseType.swift */; }; 5661552E2AB854C000209B80 /* PackageHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5661552D2AB854C000209B80 /* PackageHelper.swift */; }; 5680DD392AB8983D004E6D4A /* PackageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5680DD382AB8983D004E6D4A /* PackageCell.swift */; }; - 5680DD3E2AB8CD84004E6D4A /* ContributionsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5680DD3D2AB8CD84004E6D4A /* ContributionsTest.swift */; }; 56F6F2A02AB441930022FE5A /* ContributionsList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56F6F29F2AB441930022FE5A /* ContributionsList.swift */; }; - 653A2551283387FE005D4D48 /* TemplateApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A2550283387FE005D4D48 /* TemplateApplication.swift */; }; + 653A2551283387FE005D4D48 /* Behavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A2550283387FE005D4D48 /* Behavior.swift */; }; 653A255528338800005D4D48 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 653A255428338800005D4D48 /* Assets.xcassets */; }; - 653A256228338800005D4D48 /* TemplateApplicationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A256128338800005D4D48 /* TemplateApplicationTests.swift */; }; - 653A256C28338800005D4D48 /* SchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A256B28338800005D4D48 /* SchedulerTests.swift */; }; + 653A256228338800005D4D48 /* BehaviorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A256128338800005D4D48 /* BehaviorTests.swift */; }; 9733CFC62A8066DE001B7ABC /* SpeziOnboarding in Frameworks */ = {isa = PBXBuildFile; productRef = 2FE5DC8029EDD91D004B9AB4 /* SpeziOnboarding */; }; 9739A0C62AD7B5730084BEA5 /* FirebaseStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 9739A0C52AD7B5730084BEA5 /* FirebaseStorage */; }; 97D73D6A2AD860AD00B47FA0 /* SpeziFirebaseStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 97D73D692AD860AD00B47FA0 /* SpeziFirebaseStorage */; }; @@ -86,31 +82,29 @@ containerPortal = 653A2545283387FE005D4D48 /* Project object */; proxyType = 1; remoteGlobalIDString = 653A254C283387FE005D4D48; - remoteInfo = TemplateApplication; + remoteInfo = Behavior; }; 653A256828338800005D4D48 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 653A2545283387FE005D4D48 /* Project object */; proxyType = 1; remoteGlobalIDString = 653A254C283387FE005D4D48; - remoteInfo = TemplateApplication; + remoteInfo = Behavior; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 27FA298F2A388E9B009CAC45 /* ModalView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalView.swift; sourceTree = ""; }; - 2F1AC9DE2B4E840E00C24973 /* TemplateApplication.docc */ = {isa = PBXFileReference; lastKnownFileType = folder.documentationcatalog; path = TemplateApplication.docc; sourceTree = ""; }; - 2F1B52CD2A4F5CCE003AE151 /* MockUploadTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockUploadTests.swift; sourceTree = ""; }; - 2F4E237D2989A2FE0013F3D9 /* OnboardingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingTests.swift; sourceTree = ""; }; - 2F4E23822989D51F0013F3D9 /* TemplateApplicationTestingSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateApplicationTestingSetup.swift; sourceTree = ""; }; - 2F4E23862989DB360013F3D9 /* ContactsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsTests.swift; sourceTree = ""; }; + 2F1AC9DE2B4E840E00C24973 /* Behavior.docc */ = {isa = PBXFileReference; lastKnownFileType = folder.documentationcatalog; path = Behavior.docc; sourceTree = ""; }; + 2F4E237D2989A2FE0013F3D9 /* LaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchTests.swift; sourceTree = ""; }; + 2F4E23822989D51F0013F3D9 /* BehaviorTestingSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BehaviorTestingSetup.swift; sourceTree = ""; }; 2F4FC8D629EE69D300BFFE26 /* MockUpload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockUpload.swift; sourceTree = ""; }; - 2F5E32BC297E05EA003432F8 /* TemplateApplicationDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateApplicationDelegate.swift; sourceTree = ""; }; + 2F5E32BC297E05EA003432F8 /* BehaviorDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BehaviorDelegate.swift; sourceTree = ""; }; 2F6025CA29BBE70F0045459E /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 2F65B44D2A3B8B0600A36932 /* NotificationPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationPermissions.swift; sourceTree = ""; }; 2FA0BFEC2ACC977500E0EF83 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; - 2FAEC07F297F583900C11C42 /* TemplateApplication.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = TemplateApplication.entitlements; sourceTree = ""; }; - 2FC94CD4298B0A1D009C8209 /* TemplateApplication.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = TemplateApplication.xctestplan; sourceTree = ""; }; + 2FAEC07F297F583900C11C42 /* Behavior.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Behavior.entitlements; sourceTree = ""; }; + 2FC94CD4298B0A1D009C8209 /* Behavior.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = Behavior.xctestplan; sourceTree = ""; }; 2FC975A72978F11A00BA99FE /* Home.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Home.swift; sourceTree = ""; }; 2FE5DC2529EDD38A004B9AB4 /* Contacts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Contacts.swift; sourceTree = ""; }; 2FE5DC2A29EDD78D004B9AB4 /* AppIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AppIcon.png; sourceTree = ""; }; @@ -128,24 +122,22 @@ 2FE5DC4829EDD7FA004B9AB4 /* ScheduleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduleView.swift; sourceTree = ""; }; 2FE5DC4929EDD7FA004B9AB4 /* EventContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventContext.swift; sourceTree = ""; }; 2FE5DC4A29EDD7FA004B9AB4 /* EventContextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EventContextView.swift; sourceTree = ""; }; - 2FE5DC4B29EDD7FA004B9AB4 /* TemplateApplicationTaskContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateApplicationTaskContext.swift; sourceTree = ""; }; - 2FE5DC4C29EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateApplicationScheduler.swift; sourceTree = ""; }; + 2FE5DC4B29EDD7FA004B9AB4 /* BehaviorTaskContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BehaviorTaskContext.swift; sourceTree = ""; }; + 2FE5DC4C29EDD7FA004B9AB4 /* BehaviorScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BehaviorScheduler.swift; sourceTree = ""; }; 2FE5DC4D29EDD7FA004B9AB4 /* Bundle+Questionnaire.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Bundle+Questionnaire.swift"; sourceTree = ""; }; 2FE5DC5529EDD811004B9AB4 /* SocialSupportQuestionnaire.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = SocialSupportQuestionnaire.json; sourceTree = ""; }; 2FE5DCAC29EE6107004B9AB4 /* AccountOnboarding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountOnboarding.swift; sourceTree = ""; }; - 2FF53D8C2A8729D600042B76 /* TemplateApplicationStandard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateApplicationStandard.swift; sourceTree = ""; }; + 2FF53D8C2A8729D600042B76 /* BehaviorStandard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BehaviorStandard.swift; sourceTree = ""; }; 566155282AB8447C00209B80 /* Package+LicenseType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Package+LicenseType.swift"; sourceTree = ""; }; 5661552D2AB854C000209B80 /* PackageHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackageHelper.swift; sourceTree = ""; }; 5680DD382AB8983D004E6D4A /* PackageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackageCell.swift; sourceTree = ""; }; - 5680DD3D2AB8CD84004E6D4A /* ContributionsTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContributionsTest.swift; sourceTree = ""; }; 56F6F29F2AB441930022FE5A /* ContributionsList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContributionsList.swift; sourceTree = ""; }; - 653A254D283387FE005D4D48 /* TemplateApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TemplateApplication.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 653A2550283387FE005D4D48 /* TemplateApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateApplication.swift; sourceTree = ""; }; + 653A254D283387FE005D4D48 /* Behavior.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Behavior.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 653A2550283387FE005D4D48 /* Behavior.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Behavior.swift; sourceTree = ""; }; 653A255428338800005D4D48 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 653A255D28338800005D4D48 /* TemplateApplicationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TemplateApplicationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 653A256128338800005D4D48 /* TemplateApplicationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateApplicationTests.swift; sourceTree = ""; }; - 653A256728338800005D4D48 /* TemplateApplicationUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TemplateApplicationUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 653A256B28338800005D4D48 /* SchedulerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SchedulerTests.swift; sourceTree = ""; }; + 653A255D28338800005D4D48 /* BehaviorTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BehaviorTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 653A256128338800005D4D48 /* BehaviorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BehaviorTests.swift; sourceTree = ""; }; + 653A256728338800005D4D48 /* BehaviorUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BehaviorUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 653A258928339462005D4D48 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A9720E422ABB68CC00872D23 /* AccountSetupHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountSetupHeader.swift; sourceTree = ""; }; A9DFE8A82ABE551400428242 /* AccountButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountButton.swift; sourceTree = ""; }; @@ -213,10 +205,10 @@ 2FC9759D2978E30800BA99FE /* Supporting Files */ = { isa = PBXGroup; children = ( - 2FAEC07F297F583900C11C42 /* TemplateApplication.entitlements */, + 2FAEC07F297F583900C11C42 /* Behavior.entitlements */, 653A258928339462005D4D48 /* Info.plist */, 2F6025CA29BBE70F0045459E /* GoogleService-Info.plist */, - 2F1AC9DE2B4E840E00C24973 /* TemplateApplication.docc */, + 2F1AC9DE2B4E840E00C24973 /* Behavior.docc */, ); path = "Supporting Files"; sourceTree = ""; @@ -262,8 +254,8 @@ 2FE5DC4929EDD7FA004B9AB4 /* EventContext.swift */, 2FE5DC4A29EDD7FA004B9AB4 /* EventContextView.swift */, 2FE5DC4829EDD7FA004B9AB4 /* ScheduleView.swift */, - 2FE5DC4C29EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift */, - 2FE5DC4B29EDD7FA004B9AB4 /* TemplateApplicationTaskContext.swift */, + 2FE5DC4C29EDD7FA004B9AB4 /* BehaviorScheduler.swift */, + 2FE5DC4B29EDD7FA004B9AB4 /* BehaviorTaskContext.swift */, 27FA298F2A388E9B009CAC45 /* ModalView.swift */, ); path = Schedule; @@ -302,10 +294,10 @@ 653A2544283387FE005D4D48 = { isa = PBXGroup; children = ( - 2FC94CD4298B0A1D009C8209 /* TemplateApplication.xctestplan */, - 653A254F283387FE005D4D48 /* TemplateApplication */, - 653A256028338800005D4D48 /* TemplateApplicationTests */, - 653A256A28338800005D4D48 /* TemplateApplicationUITests */, + 2FC94CD4298B0A1D009C8209 /* Behavior.xctestplan */, + 653A254F283387FE005D4D48 /* Behavior */, + 653A256028338800005D4D48 /* BehaviorTests */, + 653A256A28338800005D4D48 /* BehaviorUITests */, 653A254E283387FE005D4D48 /* Products */, 653A258B283395A7005D4D48 /* Frameworks */, ); @@ -314,20 +306,20 @@ 653A254E283387FE005D4D48 /* Products */ = { isa = PBXGroup; children = ( - 653A254D283387FE005D4D48 /* TemplateApplication.app */, - 653A255D28338800005D4D48 /* TemplateApplicationTests.xctest */, - 653A256728338800005D4D48 /* TemplateApplicationUITests.xctest */, + 653A254D283387FE005D4D48 /* Behavior.app */, + 653A255D28338800005D4D48 /* BehaviorTests.xctest */, + 653A256728338800005D4D48 /* BehaviorUITests.xctest */, ); name = Products; sourceTree = ""; }; - 653A254F283387FE005D4D48 /* TemplateApplication */ = { + 653A254F283387FE005D4D48 /* Behavior */ = { isa = PBXGroup; children = ( - 653A2550283387FE005D4D48 /* TemplateApplication.swift */, - 2F5E32BC297E05EA003432F8 /* TemplateApplicationDelegate.swift */, - 2FF53D8C2A8729D600042B76 /* TemplateApplicationStandard.swift */, - 2F4E23822989D51F0013F3D9 /* TemplateApplicationTestingSetup.swift */, + 653A2550283387FE005D4D48 /* Behavior.swift */, + 2F5E32BC297E05EA003432F8 /* BehaviorDelegate.swift */, + 2FF53D8C2A8729D600042B76 /* BehaviorStandard.swift */, + 2F4E23822989D51F0013F3D9 /* BehaviorTestingSetup.swift */, 2FC975A72978F11A00BA99FE /* Home.swift */, A9720E412ABB68B300872D23 /* Account */, 2FE5DC2829EDD398004B9AB4 /* Onboarding */, @@ -340,27 +332,23 @@ 2FE5DC2D29EDD792004B9AB4 /* Resources */, 2FC9759D2978E30800BA99FE /* Supporting Files */, ); - path = TemplateApplication; + path = Behavior; sourceTree = ""; }; - 653A256028338800005D4D48 /* TemplateApplicationTests */ = { + 653A256028338800005D4D48 /* BehaviorTests */ = { isa = PBXGroup; children = ( - 653A256128338800005D4D48 /* TemplateApplicationTests.swift */, + 653A256128338800005D4D48 /* BehaviorTests.swift */, ); - path = TemplateApplicationTests; + path = BehaviorTests; sourceTree = ""; }; - 653A256A28338800005D4D48 /* TemplateApplicationUITests */ = { + 653A256A28338800005D4D48 /* BehaviorUITests */ = { isa = PBXGroup; children = ( - 2F4E237D2989A2FE0013F3D9 /* OnboardingTests.swift */, - 653A256B28338800005D4D48 /* SchedulerTests.swift */, - 2F4E23862989DB360013F3D9 /* ContactsTests.swift */, - 2F1B52CD2A4F5CCE003AE151 /* MockUploadTests.swift */, - 5680DD3D2AB8CD84004E6D4A /* ContributionsTest.swift */, + 2F4E237D2989A2FE0013F3D9 /* LaunchTests.swift */, ); - path = TemplateApplicationUITests; + path = BehaviorUITests; sourceTree = ""; }; 653A258B283395A7005D4D48 /* Frameworks */ = { @@ -383,9 +371,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 653A254C283387FE005D4D48 /* TemplateApplication */ = { + 653A254C283387FE005D4D48 /* Behavior */ = { isa = PBXNativeTarget; - buildConfigurationList = 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplication" */; + buildConfigurationList = 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "Behavior" */; buildPhases = ( 653A2549283387FE005D4D48 /* Sources */, 653A254A283387FE005D4D48 /* Frameworks */, @@ -397,7 +385,7 @@ dependencies = ( 566155222AB83CF200209B80 /* PBXTargetDependency */, ); - name = TemplateApplication; + name = Behavior; packageProductDependencies = ( 2F49B7752980407B00BCB272 /* Spezi */, 2FE5DC6329EDD883004B9AB4 /* SpeziAccount */, @@ -423,13 +411,13 @@ 97D73D692AD860AD00B47FA0 /* SpeziFirebaseStorage */, A9D83F952B083794000D0C78 /* SpeziFirebaseAccountStorage */, ); - productName = TemplateApplication; - productReference = 653A254D283387FE005D4D48 /* TemplateApplication.app */; + productName = Behavior; + productReference = 653A254D283387FE005D4D48 /* Behavior.app */; productType = "com.apple.product-type.application"; }; - 653A255C28338800005D4D48 /* TemplateApplicationTests */ = { + 653A255C28338800005D4D48 /* BehaviorTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplicationTests" */; + buildConfigurationList = 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "BehaviorTests" */; buildPhases = ( 653A255928338800005D4D48 /* Sources */, 653A255A28338800005D4D48 /* Frameworks */, @@ -440,14 +428,14 @@ dependencies = ( 653A255F28338800005D4D48 /* PBXTargetDependency */, ); - name = TemplateApplicationTests; - productName = TemplateApplicationTests; - productReference = 653A255D28338800005D4D48 /* TemplateApplicationTests.xctest */; + name = BehaviorTests; + productName = BehaviorTests; + productReference = 653A255D28338800005D4D48 /* BehaviorTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 653A256628338800005D4D48 /* TemplateApplicationUITests */ = { + 653A256628338800005D4D48 /* BehaviorUITests */ = { isa = PBXNativeTarget; - buildConfigurationList = 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplicationUITests" */; + buildConfigurationList = 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "BehaviorUITests" */; buildPhases = ( 653A256328338800005D4D48 /* Sources */, 653A256428338800005D4D48 /* Frameworks */, @@ -458,13 +446,13 @@ dependencies = ( 653A256928338800005D4D48 /* PBXTargetDependency */, ); - name = TemplateApplicationUITests; + name = BehaviorUITests; packageProductDependencies = ( 2FE5DC9829EDD9D9004B9AB4 /* XCTestExtensions */, 2FE5DC9B29EDD9EF004B9AB4 /* XCTHealthKit */, ); - productName = TemplateApplicationUITests; - productReference = 653A256728338800005D4D48 /* TemplateApplicationUITests.xctest */; + productName = BehaviorUITests; + productReference = 653A256728338800005D4D48 /* BehaviorUITests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; }; /* End PBXNativeTarget section */ @@ -490,7 +478,7 @@ }; }; }; - buildConfigurationList = 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "TemplateApplication" */; + buildConfigurationList = 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "Behavior" */; compatibilityVersion = "Xcode 13.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -521,9 +509,9 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 653A254C283387FE005D4D48 /* TemplateApplication */, - 653A255C28338800005D4D48 /* TemplateApplicationTests */, - 653A256628338800005D4D48 /* TemplateApplicationUITests */, + 653A254C283387FE005D4D48 /* Behavior */, + 653A255C28338800005D4D48 /* BehaviorTests */, + 653A256628338800005D4D48 /* BehaviorUITests */, ); }; /* End PBXProject section */ @@ -595,24 +583,24 @@ 2FE5DC4E29EDD7FA004B9AB4 /* ScheduleView.swift in Sources */, A9DFE8A92ABE551400428242 /* AccountButton.swift in Sources */, 2FE5DC3729EDD7CA004B9AB4 /* OnboardingFlow.swift in Sources */, - 2F1AC9DF2B4E840E00C24973 /* TemplateApplication.docc in Sources */, - 2FF53D8D2A8729D600042B76 /* TemplateApplicationStandard.swift in Sources */, + 2F1AC9DF2B4E840E00C24973 /* Behavior.docc in Sources */, + 2FF53D8D2A8729D600042B76 /* BehaviorStandard.swift in Sources */, 2FE5DC4729EDD7F2004B9AB4 /* CodableArray+RawRepresentable.swift in Sources */, A9720E432ABB68CC00872D23 /* AccountSetupHeader.swift in Sources */, 2FE5DC4029EDD7EE004B9AB4 /* FeatureFlags.swift in Sources */, 2FE5DC4629EDD7F2004B9AB4 /* Bundle+Image.swift in Sources */, 2FE5DC4F29EDD7FA004B9AB4 /* EventContext.swift in Sources */, 2FE5DC5029EDD7FA004B9AB4 /* EventContextView.swift in Sources */, - 2F4E23832989D51F0013F3D9 /* TemplateApplicationTestingSetup.swift in Sources */, + 2F4E23832989D51F0013F3D9 /* BehaviorTestingSetup.swift in Sources */, 2FE5DC5329EDD7FA004B9AB4 /* Bundle+Questionnaire.swift in Sources */, - 2FE5DC5129EDD7FA004B9AB4 /* TemplateApplicationTaskContext.swift in Sources */, + 2FE5DC5129EDD7FA004B9AB4 /* BehaviorTaskContext.swift in Sources */, 56F6F2A02AB441930022FE5A /* ContributionsList.swift in Sources */, 566155292AB8447C00209B80 /* Package+LicenseType.swift in Sources */, 5680DD392AB8983D004E6D4A /* PackageCell.swift in Sources */, - 2F5E32BD297E05EA003432F8 /* TemplateApplicationDelegate.swift in Sources */, - 2FE5DC5229EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift in Sources */, + 2F5E32BD297E05EA003432F8 /* BehaviorDelegate.swift in Sources */, + 2FE5DC5229EDD7FA004B9AB4 /* BehaviorScheduler.swift in Sources */, A9FE7AD02AA39BAB0077B045 /* AccountSheet.swift in Sources */, - 653A2551283387FE005D4D48 /* TemplateApplication.swift in Sources */, + 653A2551283387FE005D4D48 /* Behavior.swift in Sources */, 2FE5DC3629EDD7CA004B9AB4 /* HealthKitPermissions.swift in Sources */, 2F65B44E2A3B8B0600A36932 /* NotificationPermissions.swift in Sources */, 5661552E2AB854C000209B80 /* PackageHelper.swift in Sources */, @@ -625,7 +613,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653A256228338800005D4D48 /* TemplateApplicationTests.swift in Sources */, + 653A256228338800005D4D48 /* BehaviorTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -633,11 +621,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5680DD3E2AB8CD84004E6D4A /* ContributionsTest.swift in Sources */, - 2F4E23872989DB360013F3D9 /* ContactsTests.swift in Sources */, - 2F4E237E2989A2FE0013F3D9 /* OnboardingTests.swift in Sources */, - 2F1B52CE2A4F5CCE003AE151 /* MockUploadTests.swift in Sources */, - 653A256C28338800005D4D48 /* SchedulerTests.swift in Sources */, + 2F4E237E2989A2FE0013F3D9 /* LaunchTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -650,12 +634,12 @@ }; 653A255F28338800005D4D48 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 653A254C283387FE005D4D48 /* TemplateApplication */; + target = 653A254C283387FE005D4D48 /* Behavior */; targetProxy = 653A255E28338800005D4D48 /* PBXContainerItemProxy */; }; 653A256928338800005D4D48 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 653A254C283387FE005D4D48 /* TemplateApplication */; + target = 653A254C283387FE005D4D48 /* Behavior */; targetProxy = 653A256828338800005D4D48 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -729,7 +713,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = "TemplateApplication/Supporting Files/TemplateApplication.entitlements"; + CODE_SIGN_ENTITLEMENTS = "Behavior/Supporting Files/Behavior.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -737,33 +721,33 @@ DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "TemplateApplication/Supporting Files/Info.plist"; + INFOPLIST_FILE = "Behavior/Supporting Files/Info.plist"; INFOPLIST_KEY_NSCameraUsageDescription = "This message should never appear. Please adjust this when you start using camera information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; - INFOPLIST_KEY_NSHealthShareUsageDescription = "The Spezi Template Application uses the step count to demonstrate Spezi's integration with HealthKit."; - INFOPLIST_KEY_NSHealthUpdateUsageDescription = "The Spezi Template Application uses the step count to demonstrate Spezi's integration with HealthKit."; + INFOPLIST_KEY_NSHealthShareUsageDescription = "The Behavior uses the step count to demonstrate Spezi's integration with HealthKit."; + INFOPLIST_KEY_NSHealthUpdateUsageDescription = "The Behavior uses the step count to demonstrate Spezi's integration with HealthKit."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "This message should never appear. Please adjust this when you start using location information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "This message should never appear. Please adjust this when you start using location information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSMicrophoneUsageDescription = "This message should never appear. Please adjust this when you start using microphone information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSMotionUsageDescription = "This message should never appear. Please adjust this when you start using motion information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSSpeechRecognitionUsageDescription = "This message should never appear. Please adjust this when you start using speecg information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; + INFOPLIST_KEY_UIBehaviorlicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIBehaviorlicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - INFOPLIST_KEY_UITemplateApplicationlicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UITemplateApplicationlicationSupportsIndirectInputEvents = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplication; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2024.behavior; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = YES; + "SWIFT_ELicenseRef-Behavior_LOC_STRINGS" = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; @@ -781,12 +765,12 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplication.tests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2024.behavior.tests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-Behavior_LOC_STRINGS" = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TemplateApplication.app/TemplateApplication"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Behavior.app/Behavior"; }; name = Test; }; @@ -800,12 +784,12 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplicationuitests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2024.behavioruitests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-Behavior_LOC_STRINGS" = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = TemplateApplication; + TEST_TARGET_NAME = Behavior; }; name = Test; }; @@ -934,7 +918,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = "TemplateApplication/Supporting Files/TemplateApplication.entitlements"; + CODE_SIGN_ENTITLEMENTS = "Behavior/Supporting Files/Behavior.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -942,33 +926,33 @@ DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "TemplateApplication/Supporting Files/Info.plist"; + INFOPLIST_FILE = "Behavior/Supporting Files/Info.plist"; INFOPLIST_KEY_NSCameraUsageDescription = "This message should never appear. Please adjust this when you start using camera information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; - INFOPLIST_KEY_NSHealthShareUsageDescription = "The Spezi Template Application uses the step count to demonstrate Spezi's integration with HealthKit."; - INFOPLIST_KEY_NSHealthUpdateUsageDescription = "The Spezi Template Application uses the step count to demonstrate Spezi's integration with HealthKit."; + INFOPLIST_KEY_NSHealthShareUsageDescription = "The Behavior uses the step count to demonstrate Spezi's integration with HealthKit."; + INFOPLIST_KEY_NSHealthUpdateUsageDescription = "The Behavior uses the step count to demonstrate Spezi's integration with HealthKit."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "This message should never appear. Please adjust this when you start using location information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "This message should never appear. Please adjust this when you start using location information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSMicrophoneUsageDescription = "This message should never appear. Please adjust this when you start using microphone information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSMotionUsageDescription = "This message should never appear. Please adjust this when you start using motion information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSSpeechRecognitionUsageDescription = "This message should never appear. Please adjust this when you start using speecg information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; + INFOPLIST_KEY_UIBehaviorlicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIBehaviorlicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - INFOPLIST_KEY_UITemplateApplicationlicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UITemplateApplicationlicationSupportsIndirectInputEvents = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplication; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2024.behavior; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = YES; + "SWIFT_ELicenseRef-Behavior_LOC_STRINGS" = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; @@ -980,7 +964,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = "TemplateApplication/Supporting Files/TemplateApplication.entitlements"; + CODE_SIGN_ENTITLEMENTS = "Behavior/Supporting Files/Behavior.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; @@ -990,34 +974,34 @@ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 637867499T; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "TemplateApplication/Supporting Files/Info.plist"; + INFOPLIST_FILE = "Behavior/Supporting Files/Info.plist"; INFOPLIST_KEY_NSCameraUsageDescription = "This message should never appear. Please adjust this when you start using camera information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; - INFOPLIST_KEY_NSHealthShareUsageDescription = "The Spezi Template Application uses the step count to demonstrate Spezi's integration with HealthKit."; - INFOPLIST_KEY_NSHealthUpdateUsageDescription = "The Spezi Template Application uses the step count to demonstrate Spezi's integration with HealthKit."; + INFOPLIST_KEY_NSHealthShareUsageDescription = "The Behavior uses the step count to demonstrate Spezi's integration with HealthKit."; + INFOPLIST_KEY_NSHealthUpdateUsageDescription = "The Behavior uses the step count to demonstrate Spezi's integration with HealthKit."; INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "This message should never appear. Please adjust this when you start using location information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "This message should never appear. Please adjust this when you start using location information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSMicrophoneUsageDescription = "This message should never appear. Please adjust this when you start using microphone information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSMotionUsageDescription = "This message should never appear. Please adjust this when you start using motion information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; INFOPLIST_KEY_NSSpeechRecognitionUsageDescription = "This message should never appear. Please adjust this when you start using speecg information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect."; + INFOPLIST_KEY_UIBehaviorlicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIBehaviorlicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - INFOPLIST_KEY_UITemplateApplicationlicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UITemplateApplicationlicationSupportsIndirectInputEvents = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplication; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2024.behavior; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "Spezi Template Application"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "CS342 2024 Behavior"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = YES; + "SWIFT_ELicenseRef-Behavior_LOC_STRINGS" = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; @@ -1035,12 +1019,12 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplication.tests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2024.behavior.tests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-Behavior_LOC_STRINGS" = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TemplateApplication.app/TemplateApplication"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Behavior.app/Behavior"; }; name = Debug; }; @@ -1055,12 +1039,12 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplication.tests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2024.behavior.tests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-Behavior_LOC_STRINGS" = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TemplateApplication.app/TemplateApplication"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Behavior.app/Behavior"; }; name = Release; }; @@ -1074,12 +1058,12 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplicationuitests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2024.behavioruitests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-Behavior_LOC_STRINGS" = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = TemplateApplication; + TEST_TARGET_NAME = Behavior; }; name = Debug; }; @@ -1093,19 +1077,19 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplicationuitests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2024.behavioruitests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-Behavior_LOC_STRINGS" = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = TemplateApplication; + TEST_TARGET_NAME = Behavior; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "TemplateApplication" */ = { + 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "Behavior" */ = { isa = XCConfigurationList; buildConfigurations = ( 653A256F28338800005D4D48 /* Debug */, @@ -1115,7 +1099,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplication" */ = { + 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "Behavior" */ = { isa = XCConfigurationList; buildConfigurations = ( 653A257228338800005D4D48 /* Debug */, @@ -1125,7 +1109,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplicationTests" */ = { + 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "BehaviorTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 653A257528338800005D4D48 /* Debug */, @@ -1135,7 +1119,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplicationUITests" */ = { + 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "BehaviorUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( 653A257828338800005D4D48 /* Debug */, diff --git a/Behavior.xcodeproj/project.pbxproj.license b/Behavior.xcodeproj/project.pbxproj.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior.xcodeproj/project.pbxproj.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Behavior.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from TemplateApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Behavior.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/Behavior.xcodeproj/project.xcworkspace/contents.xcworkspacedata.license b/Behavior.xcodeproj/project.xcworkspace/contents.xcworkspacedata.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior.xcodeproj/project.xcworkspace/contents.xcworkspacedata.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Behavior.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Behavior.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Behavior.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist.license b/Behavior.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Behavior.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to Behavior.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/Behavior.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.license b/Behavior.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xcodeproj/xcshareddata/xcschemes/TemplateApplication.xcscheme b/Behavior.xcodeproj/xcshareddata/xcschemes/Behavior.xcscheme similarity index 78% rename from TemplateApplication.xcodeproj/xcshareddata/xcschemes/TemplateApplication.xcscheme rename to Behavior.xcodeproj/xcshareddata/xcschemes/Behavior.xcscheme index f5e6644..e1f44cd 100644 --- a/TemplateApplication.xcodeproj/xcshareddata/xcschemes/TemplateApplication.xcscheme +++ b/Behavior.xcodeproj/xcshareddata/xcschemes/Behavior.xcscheme @@ -15,9 +15,9 @@ + BuildableName = "Behavior.app" + BlueprintName = "Behavior" + ReferencedContainer = "container:Behavior.xcodeproj"> @@ -29,7 +29,7 @@ shouldUseLaunchSchemeArgsEnv = "YES"> @@ -39,9 +39,9 @@ + BuildableName = "BehaviorTests.xctest" + BlueprintName = "BehaviorTests" + ReferencedContainer = "container:Behavior.xcodeproj"> + BuildableName = "BehaviorUITests.xctest" + BlueprintName = "BehaviorUITests" + ReferencedContainer = "container:Behavior.xcodeproj"> @@ -71,9 +71,9 @@ + BuildableName = "Behavior.app" + BlueprintName = "Behavior" + ReferencedContainer = "container:Behavior.xcodeproj"> @@ -110,9 +110,9 @@ + BuildableName = "Behavior.app" + BlueprintName = "Behavior" + ReferencedContainer = "container:Behavior.xcodeproj"> diff --git a/Behavior.xcodeproj/xcshareddata/xcschemes/Behavior.xcscheme.license b/Behavior.xcodeproj/xcshareddata/xcschemes/Behavior.xcscheme.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior.xcodeproj/xcshareddata/xcschemes/Behavior.xcscheme.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xctestplan b/Behavior.xctestplan similarity index 59% rename from TemplateApplication.xctestplan rename to Behavior.xctestplan index 5d65ec1..cafb397 100644 --- a/TemplateApplication.xctestplan +++ b/Behavior.xctestplan @@ -10,24 +10,24 @@ ], "defaultOptions" : { "targetForVariableExpansion" : { - "containerPath" : "container:TemplateApplication.xcodeproj", + "containerPath" : "container:Behavior.xcodeproj", "identifier" : "653A254C283387FE005D4D48", - "name" : "TemplateApplication" + "name" : "Behavior" } }, "testTargets" : [ { "target" : { - "containerPath" : "container:TemplateApplication.xcodeproj", + "containerPath" : "container:Behavior.xcodeproj", "identifier" : "653A255C28338800005D4D48", - "name" : "TemplateApplicationTests" + "name" : "BehaviorTests" } }, { "target" : { - "containerPath" : "container:TemplateApplication.xcodeproj", + "containerPath" : "container:Behavior.xcodeproj", "identifier" : "653A256628338800005D4D48", - "name" : "TemplateApplicationUITests" + "name" : "BehaviorUITests" } } ], diff --git a/Behavior.xctestplan.license b/Behavior.xctestplan.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior.xctestplan.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Account/AccountButton.swift b/Behavior/Account/AccountButton.swift similarity index 87% rename from TemplateApplication/Account/AccountButton.swift rename to Behavior/Account/AccountButton.swift index ca53d00..dc1bf32 100644 --- a/TemplateApplication/Account/AccountButton.swift +++ b/Behavior/Account/AccountButton.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Account/AccountSetupHeader.swift b/Behavior/Account/AccountSetupHeader.swift similarity index 90% rename from TemplateApplication/Account/AccountSetupHeader.swift rename to Behavior/Account/AccountSetupHeader.swift index b89cf1c..124a033 100644 --- a/TemplateApplication/Account/AccountSetupHeader.swift +++ b/Behavior/Account/AccountSetupHeader.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Account/AccountSheet.swift b/Behavior/Account/AccountSheet.swift similarity index 96% rename from TemplateApplication/Account/AccountSheet.swift rename to Behavior/Account/AccountSheet.swift index f5bfaf1..8f93ff6 100644 --- a/TemplateApplication/Account/AccountSheet.swift +++ b/Behavior/Account/AccountSheet.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/TemplateApplication.swift b/Behavior/Behavior.swift similarity index 76% rename from TemplateApplication/TemplateApplication.swift rename to Behavior/Behavior.swift index 301a6e7..3a86553 100644 --- a/TemplateApplication/TemplateApplication.swift +++ b/Behavior/Behavior.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -12,8 +12,8 @@ import SwiftUI @main -struct TemplateApplication: App { - @UIApplicationDelegateAdaptor(TemplateApplicationDelegate.self) var appDelegate +struct Behavior: App { + @UIApplicationDelegateAdaptor(BehaviorDelegate.self) var appDelegate @AppStorage(StorageKeys.onboardingFlowComplete) var completedOnboardingFlow = false diff --git a/TemplateApplication/TemplateApplicationDelegate.swift b/Behavior/BehaviorDelegate.swift similarity index 90% rename from TemplateApplication/TemplateApplicationDelegate.swift rename to Behavior/BehaviorDelegate.swift index 0862aa9..3009e2f 100644 --- a/TemplateApplication/TemplateApplicationDelegate.swift +++ b/Behavior/BehaviorDelegate.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -18,9 +18,9 @@ import SpeziScheduler import SwiftUI -class TemplateApplicationDelegate: SpeziAppDelegate { +class BehaviorDelegate: SpeziAppDelegate { override var configuration: Configuration { - Configuration(standard: TemplateApplicationStandard()) { + Configuration(standard: BehaviorStandard()) { if !FeatureFlags.disableFirebase { AccountConfiguration(configuration: [ .requires(\.userId), @@ -53,7 +53,7 @@ class TemplateApplicationDelegate: SpeziAppDelegate { healthKit } - TemplateApplicationScheduler() + BehaviorScheduler() OnboardingDataSource() } } diff --git a/TemplateApplication/TemplateApplicationStandard.swift b/Behavior/BehaviorStandard.swift similarity index 92% rename from TemplateApplication/TemplateApplicationStandard.swift rename to Behavior/BehaviorStandard.swift index cd6fe37..19da498 100644 --- a/TemplateApplication/TemplateApplicationStandard.swift +++ b/Behavior/BehaviorStandard.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -22,8 +22,8 @@ import SpeziQuestionnaire import SwiftUI -actor TemplateApplicationStandard: Standard, EnvironmentAccessible, HealthKitConstraint, OnboardingConstraint, AccountStorageConstraint { - enum TemplateApplicationStandardError: Error { +actor BehaviorStandard: Standard, EnvironmentAccessible, HealthKitConstraint, OnboardingConstraint, AccountStorageConstraint { + enum BehaviorStandardError: Error { case userNotAuthenticatedYet } @@ -36,13 +36,13 @@ actor TemplateApplicationStandard: Standard, EnvironmentAccessible, HealthKitCon @AccountReference var account: Account - private let logger = Logger(subsystem: "TemplateApplication", category: "Standard") + private let logger = Logger(subsystem: "Behavior", category: "Standard") private var userDocumentReference: DocumentReference { get async throws { guard let details = await account.details else { - throw TemplateApplicationStandardError.userNotAuthenticatedYet + throw BehaviorStandardError.userNotAuthenticatedYet } return Self.userCollection.document(details.accountId) @@ -52,7 +52,7 @@ actor TemplateApplicationStandard: Standard, EnvironmentAccessible, HealthKitCon private var userBucketReference: StorageReference { get async throws { guard let details = await account.details else { - throw TemplateApplicationStandardError.userNotAuthenticatedYet + throw BehaviorStandardError.userNotAuthenticatedYet } return Storage.storage().reference().child("users/\(details.accountId)") @@ -62,7 +62,7 @@ actor TemplateApplicationStandard: Standard, EnvironmentAccessible, HealthKitCon init() { if !FeatureFlags.disableFirebase { - _accountStorage = Dependency(wrappedValue: FirestoreAccountStorage(storeIn: TemplateApplicationStandard.userCollection)) + _accountStorage = Dependency(wrappedValue: FirestoreAccountStorage(storeIn: BehaviorStandard.userCollection)) } } diff --git a/TemplateApplication/TemplateApplicationTestingSetup.swift b/Behavior/BehaviorTestingSetup.swift similarity index 75% rename from TemplateApplication/TemplateApplicationTestingSetup.swift rename to Behavior/BehaviorTestingSetup.swift index b0b98ee..0c40b58 100644 --- a/TemplateApplication/TemplateApplicationTestingSetup.swift +++ b/Behavior/BehaviorTestingSetup.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -9,7 +9,7 @@ import SwiftUI -private struct TemplateAppTestingSetup: ViewModifier { +private struct BehaviorAppTestingSetup: ViewModifier { @AppStorage(StorageKeys.onboardingFlowComplete) var completedOnboardingFlow = false @@ -29,6 +29,6 @@ private struct TemplateAppTestingSetup: ViewModifier { extension View { func testingSetup() -> some View { - self.modifier(TemplateAppTestingSetup()) + self.modifier(BehaviorAppTestingSetup()) } } diff --git a/TemplateApplication/Contacts/Contacts.swift b/Behavior/Contacts/Contacts.swift similarity index 93% rename from TemplateApplication/Contacts/Contacts.swift rename to Behavior/Contacts/Contacts.swift index e9b5a75..5a7a160 100644 --- a/TemplateApplication/Contacts/Contacts.swift +++ b/Behavior/Contacts/Contacts.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -11,7 +11,7 @@ import SpeziContact import SwiftUI -/// Displays the contacts for the Spezi Template Application. +/// Displays the contacts for the Behavior. struct Contacts: View { let contacts = [ Contact( diff --git a/TemplateApplication/Contributions/ContributionsList.swift b/Behavior/Contributions/ContributionsList.swift similarity index 93% rename from TemplateApplication/Contributions/ContributionsList.swift rename to Behavior/Contributions/ContributionsList.swift index 86f967c..c61880e 100644 --- a/TemplateApplication/Contributions/ContributionsList.swift +++ b/Behavior/Contributions/ContributionsList.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Contributions/Package+LicenseType.swift b/Behavior/Contributions/Package+LicenseType.swift similarity index 97% rename from TemplateApplication/Contributions/Package+LicenseType.swift rename to Behavior/Contributions/Package+LicenseType.swift index 7301c0a..4554f76 100644 --- a/TemplateApplication/Contributions/Package+LicenseType.swift +++ b/Behavior/Contributions/Package+LicenseType.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Contributions/PackageCell.swift b/Behavior/Contributions/PackageCell.swift similarity index 95% rename from TemplateApplication/Contributions/PackageCell.swift rename to Behavior/Contributions/PackageCell.swift index d64780a..b009ee6 100644 --- a/TemplateApplication/Contributions/PackageCell.swift +++ b/Behavior/Contributions/PackageCell.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Contributions/PackageHelper.swift b/Behavior/Contributions/PackageHelper.swift similarity index 85% rename from TemplateApplication/Contributions/PackageHelper.swift rename to Behavior/Contributions/PackageHelper.swift index 11e6e7d..eb3b721 100644 --- a/TemplateApplication/Contributions/PackageHelper.swift +++ b/Behavior/Contributions/PackageHelper.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Helper/Binding+Negate.swift b/Behavior/Helper/Binding+Negate.swift similarity index 78% rename from TemplateApplication/Helper/Binding+Negate.swift rename to Behavior/Helper/Binding+Negate.swift index 2c2d49d..c50355b 100644 --- a/TemplateApplication/Helper/Binding+Negate.swift +++ b/Behavior/Helper/Binding+Negate.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Helper/Bundle+Image.swift b/Behavior/Helper/Bundle+Image.swift similarity index 90% rename from TemplateApplication/Helper/Bundle+Image.swift rename to Behavior/Helper/Bundle+Image.swift index 96ae842..edcf5c2 100644 --- a/TemplateApplication/Helper/Bundle+Image.swift +++ b/Behavior/Helper/Bundle+Image.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Helper/CodableArray+RawRepresentable.swift b/Behavior/Helper/CodableArray+RawRepresentable.swift similarity index 86% rename from TemplateApplication/Helper/CodableArray+RawRepresentable.swift rename to Behavior/Helper/CodableArray+RawRepresentable.swift index 913af05..5dad9bf 100644 --- a/TemplateApplication/Helper/CodableArray+RawRepresentable.swift +++ b/Behavior/Helper/CodableArray+RawRepresentable.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Home.swift b/Behavior/Home.swift similarity index 88% rename from TemplateApplication/Home.swift rename to Behavior/Home.swift index 00004b2..81e40af 100644 --- a/TemplateApplication/Home.swift +++ b/Behavior/Home.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -65,8 +65,8 @@ struct HomeView: View { .set(\.name, value: PersonNameComponents(givenName: "Leland", familyName: "Stanford")) return HomeView() - .previewWith(standard: TemplateApplicationStandard()) { - TemplateApplicationScheduler() + .previewWith(standard: BehaviorStandard()) { + BehaviorScheduler() MockWebService() AccountConfiguration(building: details, active: MockUserIdPasswordAccountService()) } @@ -75,8 +75,8 @@ struct HomeView: View { #Preview { CommandLine.arguments.append("--disableFirebase") // make sure the MockWebService is displayed return HomeView() - .previewWith(standard: TemplateApplicationStandard()) { - TemplateApplicationScheduler() + .previewWith(standard: BehaviorStandard()) { + BehaviorScheduler() MockWebService() AccountConfiguration { MockUserIdPasswordAccountService() diff --git a/TemplateApplication/MockUpload/MockUpload.swift b/Behavior/MockUpload/MockUpload.swift similarity index 88% rename from TemplateApplication/MockUpload/MockUpload.swift rename to Behavior/MockUpload/MockUpload.swift index 7a99959..c9b7535 100644 --- a/TemplateApplication/MockUpload/MockUpload.swift +++ b/Behavior/MockUpload/MockUpload.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Onboarding/AccountOnboarding.swift b/Behavior/Onboarding/AccountOnboarding.swift similarity index 94% rename from TemplateApplication/Onboarding/AccountOnboarding.swift rename to Behavior/Onboarding/AccountOnboarding.swift index cbf1074..780b49a 100644 --- a/TemplateApplication/Onboarding/AccountOnboarding.swift +++ b/Behavior/Onboarding/AccountOnboarding.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Onboarding/Consent.swift b/Behavior/Onboarding/Consent.swift similarity index 87% rename from TemplateApplication/Onboarding/Consent.swift rename to Behavior/Onboarding/Consent.swift index cb97700..c127e19 100644 --- a/TemplateApplication/Onboarding/Consent.swift +++ b/Behavior/Onboarding/Consent.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -42,7 +42,7 @@ struct Consent: View { OnboardingStack { Consent() } - .previewWith(standard: TemplateApplicationStandard()) { + .previewWith(standard: BehaviorStandard()) { OnboardingDataSource() } } diff --git a/TemplateApplication/Onboarding/HealthKitPermissions.swift b/Behavior/Onboarding/HealthKitPermissions.swift similarity index 94% rename from TemplateApplication/Onboarding/HealthKitPermissions.swift rename to Behavior/Onboarding/HealthKitPermissions.swift index 036bbde..3edab32 100644 --- a/TemplateApplication/Onboarding/HealthKitPermissions.swift +++ b/Behavior/Onboarding/HealthKitPermissions.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -70,7 +70,7 @@ struct HealthKitPermissions: View { OnboardingStack { HealthKitPermissions() } - .previewWith(standard: TemplateApplicationStandard()) { + .previewWith(standard: BehaviorStandard()) { HealthKit() } } diff --git a/TemplateApplication/Onboarding/InterestingModules.swift b/Behavior/Onboarding/InterestingModules.swift similarity index 93% rename from TemplateApplication/Onboarding/InterestingModules.swift rename to Behavior/Onboarding/InterestingModules.swift index 77f655d..f4dc131 100644 --- a/TemplateApplication/Onboarding/InterestingModules.swift +++ b/Behavior/Onboarding/InterestingModules.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Onboarding/NotificationPermissions.swift b/Behavior/Onboarding/NotificationPermissions.swift similarity index 92% rename from TemplateApplication/Onboarding/NotificationPermissions.swift rename to Behavior/Onboarding/NotificationPermissions.swift index d4af500..18e5ba1 100644 --- a/TemplateApplication/Onboarding/NotificationPermissions.swift +++ b/Behavior/Onboarding/NotificationPermissions.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -12,7 +12,7 @@ import SwiftUI struct NotificationPermissions: View { - @Environment(TemplateApplicationScheduler.self) private var scheduler + @Environment(BehaviorScheduler.self) private var scheduler @Environment(OnboardingNavigationPath.self) private var onboardingNavigationPath @State private var notificationProcessing = false @@ -71,7 +71,7 @@ struct NotificationPermissions: View { NotificationPermissions() } .previewWith { - TemplateApplicationScheduler() + BehaviorScheduler() } } #endif diff --git a/TemplateApplication/Onboarding/OnboardingFlow.swift b/Behavior/Onboarding/OnboardingFlow.swift similarity index 84% rename from TemplateApplication/Onboarding/OnboardingFlow.swift rename to Behavior/Onboarding/OnboardingFlow.swift index a6ee1f9..e7c885b 100644 --- a/TemplateApplication/Onboarding/OnboardingFlow.swift +++ b/Behavior/Onboarding/OnboardingFlow.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -13,10 +13,10 @@ import SpeziOnboarding import SwiftUI -/// Displays an multi-step onboarding flow for the Spezi Template Application. +/// Displays an multi-step onboarding flow for the Behavior. struct OnboardingFlow: View { @Environment(HealthKit.self) private var healthKitDataSource - @Environment(TemplateApplicationScheduler.self) private var scheduler + @Environment(BehaviorScheduler.self) private var scheduler @AppStorage(StorageKeys.onboardingFlowComplete) private var completedOnboardingFlow = false @@ -66,14 +66,14 @@ struct OnboardingFlow: View { #Preview { OnboardingFlow() .environment(Account(MockUserIdPasswordAccountService())) - .previewWith(standard: TemplateApplicationStandard()) { + .previewWith(standard: BehaviorStandard()) { OnboardingDataSource() HealthKit() AccountConfiguration { MockUserIdPasswordAccountService() } - TemplateApplicationScheduler() + BehaviorScheduler() } } #endif diff --git a/TemplateApplication/Onboarding/Welcome.swift b/Behavior/Onboarding/Welcome.swift similarity index 94% rename from TemplateApplication/Onboarding/Welcome.swift rename to Behavior/Onboarding/Welcome.swift index 00620be..f2cf95d 100644 --- a/TemplateApplication/Onboarding/Welcome.swift +++ b/Behavior/Onboarding/Welcome.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Resources/AppIcon.png b/Behavior/Resources/AppIcon.png similarity index 100% rename from TemplateApplication/Resources/AppIcon.png rename to Behavior/Resources/AppIcon.png diff --git a/Behavior/Resources/AppIcon.png.license b/Behavior/Resources/AppIcon.png.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Resources/AppIcon.png.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/Behavior/Resources/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from TemplateApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json rename to Behavior/Resources/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/Behavior/Resources/Assets.xcassets/AccentColor.colorset/Contents.json.license b/Behavior/Resources/Assets.xcassets/AccentColor.colorset/Contents.json.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Resources/Assets.xcassets/AccentColor.colorset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png b/Behavior/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png similarity index 100% rename from TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png rename to Behavior/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png diff --git a/Behavior/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png.license b/Behavior/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Behavior/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Behavior/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Behavior/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json.license b/Behavior/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/Contents.json b/Behavior/Resources/Assets.xcassets/Contents.json similarity index 100% rename from TemplateApplication/Resources/Assets.xcassets/Contents.json rename to Behavior/Resources/Assets.xcassets/Contents.json diff --git a/Behavior/Resources/Assets.xcassets/Contents.json.license b/Behavior/Resources/Assets.xcassets/Contents.json.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Resources/Assets.xcassets/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/ConsentDocument.md b/Behavior/Resources/ConsentDocument.md similarity index 100% rename from TemplateApplication/Resources/ConsentDocument.md rename to Behavior/Resources/ConsentDocument.md diff --git a/Behavior/Resources/ConsentDocument.md.license b/Behavior/Resources/ConsentDocument.md.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Resources/ConsentDocument.md.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Localizable.xcstrings b/Behavior/Resources/Localizable.xcstrings similarity index 98% rename from TemplateApplication/Resources/Localizable.xcstrings rename to Behavior/Resources/Localizable.xcstrings index 4747562..58cd655 100644 --- a/TemplateApplication/Resources/Localizable.xcstrings +++ b/Behavior/Resources/Localizable.xcstrings @@ -36,7 +36,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "The Template Application demonstrates the usage of the Firebase Account Module." + "value" : "The Behavior demonstrates the usage of the Firebase Account Module." } } } @@ -109,7 +109,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "The following list contains all Swift Package dependencies of the SpeziTemplateApplication." + "value" : "The following list contains all Swift Package dependencies of the SpeziBehavior." } } } @@ -535,7 +535,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "Spezi\nTemplate Application" + "value" : "Spezi\nBehavior" } } } diff --git a/Behavior/Resources/Localizable.xcstrings.license b/Behavior/Resources/Localizable.xcstrings.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Resources/Localizable.xcstrings.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/SocialSupportQuestionnaire.json b/Behavior/Resources/SocialSupportQuestionnaire.json similarity index 100% rename from TemplateApplication/Resources/SocialSupportQuestionnaire.json rename to Behavior/Resources/SocialSupportQuestionnaire.json diff --git a/Behavior/Resources/SocialSupportQuestionnaire.json.license b/Behavior/Resources/SocialSupportQuestionnaire.json.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Resources/SocialSupportQuestionnaire.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Schedule/TemplateApplicationScheduler.swift b/Behavior/Schedule/BehaviorScheduler.swift similarity index 64% rename from TemplateApplication/Schedule/TemplateApplicationScheduler.swift rename to Behavior/Schedule/BehaviorScheduler.swift index aa6626f..63c3fc3 100644 --- a/TemplateApplication/Schedule/TemplateApplicationScheduler.swift +++ b/Behavior/Schedule/BehaviorScheduler.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -10,13 +10,13 @@ import Foundation import SpeziScheduler -/// A `Scheduler` using the ``TemplateApplicationTaskContext`` to schedule and manage tasks and events in the -/// Spezi Template Application. -typealias TemplateApplicationScheduler = Scheduler +/// A `Scheduler` using the ``BehaviorTaskContext`` to schedule and manage tasks and events in the +/// Behavior. +typealias BehaviorScheduler = Scheduler -extension TemplateApplicationScheduler { - static var socialSupportTask: SpeziScheduler.Task { +extension BehaviorScheduler { + static var socialSupportTask: SpeziScheduler.Task { let dateComponents: DateComponents if FeatureFlags.testSchedule { // Adds a task at the current time for UI testing if the `--testSchedule` feature flag is set @@ -38,11 +38,11 @@ extension TemplateApplicationScheduler { end: .numberOfEvents(365) ), notifications: true, - context: TemplateApplicationTaskContext.questionnaire(Bundle.main.questionnaire(withName: "SocialSupportQuestionnaire")) + context: BehaviorTaskContext.questionnaire(Bundle.main.questionnaire(withName: "SocialSupportQuestionnaire")) ) } - /// Creates a default instance of the ``TemplateApplicationScheduler`` by scheduling the tasks listed below. + /// Creates a default instance of the ``BehaviorScheduler`` by scheduling the tasks listed below. convenience init() { self.init(tasks: [Self.socialSupportTask]) } diff --git a/TemplateApplication/Schedule/TemplateApplicationTaskContext.swift b/Behavior/Schedule/BehaviorTaskContext.swift similarity index 80% rename from TemplateApplication/Schedule/TemplateApplicationTaskContext.swift rename to Behavior/Schedule/BehaviorTaskContext.swift index 58c2356..51aacfc 100644 --- a/TemplateApplication/Schedule/TemplateApplicationTaskContext.swift +++ b/Behavior/Schedule/BehaviorTaskContext.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -10,10 +10,10 @@ import Foundation import ModelsR4 -/// The context attached to each task in the Spezi Template Application. +/// The context attached to each task in the Behavior. /// /// We currently only support `Questionnaire`s, more cases can be added in the future. -enum TemplateApplicationTaskContext: Codable, Identifiable { +enum BehaviorTaskContext: Codable, Identifiable { /// The task should display a `Questionnaire`. case questionnaire(Questionnaire) /// The task is used for UI testing. diff --git a/TemplateApplication/Schedule/Bundle+Questionnaire.swift b/Behavior/Schedule/Bundle+Questionnaire.swift similarity index 87% rename from TemplateApplication/Schedule/Bundle+Questionnaire.swift rename to Behavior/Schedule/Bundle+Questionnaire.swift index bc94d92..892f047 100644 --- a/TemplateApplication/Schedule/Bundle+Questionnaire.swift +++ b/Behavior/Schedule/Bundle+Questionnaire.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Schedule/EventContext.swift b/Behavior/Schedule/EventContext.swift similarity index 73% rename from TemplateApplication/Schedule/EventContext.swift rename to Behavior/Schedule/EventContext.swift index 475bac0..6511f95 100644 --- a/TemplateApplication/Schedule/EventContext.swift +++ b/Behavior/Schedule/EventContext.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -11,7 +11,7 @@ import SpeziScheduler struct EventContext: Comparable, Identifiable { let event: Event - let task: Task + let task: Task var id: Event.ID { diff --git a/TemplateApplication/Schedule/EventContextView.swift b/Behavior/Schedule/EventContextView.swift similarity index 94% rename from TemplateApplication/Schedule/EventContextView.swift rename to Behavior/Schedule/EventContextView.swift index efcbc96..fe9d80c 100644 --- a/TemplateApplication/Schedule/EventContextView.swift +++ b/Behavior/Schedule/EventContextView.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -65,7 +65,7 @@ struct EventContextView: View { #if DEBUG #Preview(traits: .sizeThatFitsLayout) { - let task = TemplateApplicationScheduler.socialSupportTask + let task = BehaviorScheduler.socialSupportTask return EventContextView( eventContext: EventContext( diff --git a/TemplateApplication/Schedule/ModalView.swift b/Behavior/Schedule/ModalView.swift similarity index 89% rename from TemplateApplication/Schedule/ModalView.swift rename to Behavior/Schedule/ModalView.swift index ba68331..133b8bf 100644 --- a/TemplateApplication/Schedule/ModalView.swift +++ b/Behavior/Schedule/ModalView.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Schedule/ScheduleView.swift b/Behavior/Schedule/ScheduleView.swift similarity index 91% rename from TemplateApplication/Schedule/ScheduleView.swift rename to Behavior/Schedule/ScheduleView.swift index d79f822..601c359 100644 --- a/TemplateApplication/Schedule/ScheduleView.swift +++ b/Behavior/Schedule/ScheduleView.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // @@ -13,8 +13,8 @@ import SwiftUI struct ScheduleView: View { - @Environment(TemplateApplicationStandard.self) private var standard - @Environment(TemplateApplicationScheduler.self) private var scheduler + @Environment(BehaviorStandard.self) private var standard + @Environment(BehaviorScheduler.self) private var scheduler @State private var eventContextsByDate: [Date: [EventContext]] = [:] @State private var presentedContext: EventContext? @@ -121,8 +121,8 @@ struct ScheduleView: View { #if DEBUG #Preview("ScheduleView") { ScheduleView(presentingAccount: .constant(false)) - .previewWith(standard: TemplateApplicationStandard()) { - TemplateApplicationScheduler() + .previewWith(standard: BehaviorStandard()) { + BehaviorScheduler() AccountConfiguration { MockUserIdPasswordAccountService() } diff --git a/TemplateApplication/SharedContext/FeatureFlags.swift b/Behavior/SharedContext/FeatureFlags.swift similarity index 90% rename from TemplateApplication/SharedContext/FeatureFlags.swift rename to Behavior/SharedContext/FeatureFlags.swift index 29e4e56..3dbe11b 100644 --- a/TemplateApplication/SharedContext/FeatureFlags.swift +++ b/Behavior/SharedContext/FeatureFlags.swift @@ -1,12 +1,12 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // // SPDX-License-Identifier: MIT // -/// A collection of feature flags for the Template Application. +/// A collection of feature flags for the Behavior. enum FeatureFlags { /// Skips the onboarding flow to enable easier development of features in the application and to allow UI tests to skip the onboarding flow. static let skipOnboarding = CommandLine.arguments.contains("--skipOnboarding") diff --git a/TemplateApplication/SharedContext/StorageKeys.swift b/Behavior/SharedContext/StorageKeys.swift similarity index 86% rename from TemplateApplication/SharedContext/StorageKeys.swift rename to Behavior/SharedContext/StorageKeys.swift index 3136734..b1f456b 100644 --- a/TemplateApplication/SharedContext/StorageKeys.swift +++ b/Behavior/SharedContext/StorageKeys.swift @@ -1,5 +1,5 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // diff --git a/TemplateApplication/Supporting Files/TemplateApplication.entitlements b/Behavior/Supporting Files/Behavior.entitlements similarity index 100% rename from TemplateApplication/Supporting Files/TemplateApplication.entitlements rename to Behavior/Supporting Files/Behavior.entitlements diff --git a/Behavior/Supporting Files/Behavior.entitlements.license b/Behavior/Supporting Files/Behavior.entitlements.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Supporting Files/Behavior.entitlements.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/GoogleService-Info.plist b/Behavior/Supporting Files/GoogleService-Info.plist similarity index 89% rename from TemplateApplication/Supporting Files/GoogleService-Info.plist rename to Behavior/Supporting Files/GoogleService-Info.plist index f7699ba..25bab18 100644 --- a/TemplateApplication/Supporting Files/GoogleService-Info.plist +++ b/Behavior/Supporting Files/GoogleService-Info.plist @@ -13,9 +13,9 @@ PLIST_VERSION 1 BUNDLE_ID - edu.stanford.spezi.templateapplication + edu.stanford.cs342.2024.behavior PROJECT_ID - stanfordspezitemplateapp + behavior STORAGE_BUCKET STORAGE_BUCKET IS_ADS_ENABLED diff --git a/TemplateApplication/Supporting Files/GoogleService-Info.plist.license b/Behavior/Supporting Files/GoogleService-Info.plist.license similarity index 56% rename from TemplateApplication/Supporting Files/GoogleService-Info.plist.license rename to Behavior/Supporting Files/GoogleService-Info.plist.license index 9f5551c..5e0d23c 100644 --- a/TemplateApplication/Supporting Files/GoogleService-Info.plist.license +++ b/Behavior/Supporting Files/GoogleService-Info.plist.license @@ -1,4 +1,4 @@ -This source file is part of the Stanford Spezi Template Application open-source project +This source file is part of the Behavior based on the Stanford Spezi Template Application project SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) diff --git a/TemplateApplication/Supporting Files/Info.plist b/Behavior/Supporting Files/Info.plist similarity index 100% rename from TemplateApplication/Supporting Files/Info.plist rename to Behavior/Supporting Files/Info.plist diff --git a/Behavior/Supporting Files/Info.plist.license b/Behavior/Supporting Files/Info.plist.license new file mode 100644 index 0000000..2fed641 --- /dev/null +++ b/Behavior/Supporting Files/Info.plist.license @@ -0,0 +1,6 @@ + +This source file is part of the Behavior based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplicationTests/TemplateApplicationTests.swift b/BehaviorTests/BehaviorTests.swift similarity index 51% rename from TemplateApplicationTests/TemplateApplicationTests.swift rename to BehaviorTests/BehaviorTests.swift index 731c1a9..f4198a5 100644 --- a/TemplateApplicationTests/TemplateApplicationTests.swift +++ b/BehaviorTests/BehaviorTests.swift @@ -1,16 +1,16 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the Behavior based on the Stanford Spezi Template Application project // // SPDX-FileCopyrightText: 2023 Stanford University // // SPDX-License-Identifier: MIT // -@testable import TemplateApplication +@testable import Behavior import XCTest -class TemplateApplicationTests: XCTestCase { +class BehaviorTests: XCTestCase { func testExample() throws { XCTAssertTrue(true) } diff --git a/BehaviorUITests/LaunchTests.swift b/BehaviorUITests/LaunchTests.swift new file mode 100644 index 0000000..48cf941 --- /dev/null +++ b/BehaviorUITests/LaunchTests.swift @@ -0,0 +1,28 @@ +// +// This source file is part of the Behavior based on the Stanford Spezi Template Application project +// +// SPDX-FileCopyrightText: 2023 Stanford University +// +// SPDX-License-Identifier: MIT +// + +import XCTest + + +class LaunchTests: XCTestCase { + override func setUpWithError() throws { + try super.setUpWithError() + + continueAfterFailure = false + + let app = XCUIApplication() + app.launchArguments = ["--skipOnboarding"] + app.launch() + } + + + func testApplicationLaunch() throws { + let app = XCUIApplication() + XCTAssertEqual(app.state, .runningForeground) + } +} diff --git a/CITATION.cff b/CITATION.cff index 7d68827..05f9f7b 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # @@ -18,6 +18,4 @@ authors: - family-names: "Aalami" given-names: "Oliver" orcid: "https://orcid.org/0000-0002-7799-2429" -title: "Spezi Template Application" -doi: doi.org/10.5281/zenodo.7600783 -url: "https://github.com/StanfordSpezi/SpeziTemplateApplication" +title: "Behavior" diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 4bae8d7..8df84f3 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,6 +1,6 @@ -Template Application Contributors +Behavior Contributors ================================= * [Paul Schmiedmayer](https://github.com/PSchmiedmayer) diff --git a/Gemfile b/Gemfile index 3c25e0f..97ded09 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # diff --git a/Gemfile.lock.license b/Gemfile.lock.license index 8ffe29f..2fed641 100644 --- a/Gemfile.lock.license +++ b/Gemfile.lock.license @@ -1,5 +1,5 @@ -This source file is part of the Stanford Spezi Template Application open-source project +This source file is part of the Behavior based on the Stanford Spezi Template Application project SPDX-FileCopyrightText: 2023 Stanford University diff --git a/README.md b/README.md index 30fd08a..05e2d9a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Spezi Template Application +# Behavior -[![Beta Deployment](https://github.com/StanfordSpezi/SpeziTemplateApplication/actions/workflows/beta-deployment.yml/badge.svg)](https://github.com/StanfordSpezi/SpeziTemplateApplication/actions/workflows/beta-deployment.yml) -[![codecov](https://codecov.io/gh/StanfordSpezi/SpeziTemplateApplication/branch/main/graph/badge.svg?token=9fvSAiFJUY)](https://codecov.io/gh/StanfordSpezi/SpeziTemplateApplication) -[![DOI](https://zenodo.org/badge/589846478.svg)](https://zenodo.org/badge/latestdoi/589846478) +This repository contains the Behavior. +The Behavior is using the [Spezi](https://github.com/StanfordSpezi/Spezi) ecosystem and builds on top of the [Stanford Spezi Template Application](https://github.com/StanfordSpezi/SpeziTemplateApplication). -This repository contains the Spezi Template Application. -It demonstrates using the [Spezi](https://github.com/StanfordSpezi/Spezi) ecosystem and builds on top of the [Stanford Biodesign Digital Health Template Application](https://github.com/StanfordBDHG/TemplateApplication). +> [!NOTE]  +> Do you want to learn more about the Stanford Spezi Template Application and how to use, extend, and modify this application? Check out the [Stanford Spezi Template Application documentation](https://stanfordspezi.github.io/SpeziTemplateApplication) -> [!NOTE] -> Do you want to try out the Spezi Template Application? You can download it to your iOS device using [TestFlight](https://testflight.apple.com/join/ipEezBY1)! +## Behavior Features -## Application Content +*Provide a comprehensive description of your application, including figures showing the application. You can learn more on how to structure a README in the [Stanford Spezi Documentation Guide](https://swiftpackageindex.com/stanfordspezi/spezi/documentation/spezi/documentation-guide)* -The following screenshots show a wide variety of features based on Spezi Modules that are part of the Spezi Template Application. - -|![A screen displaying welcome information.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/Welcome.png#gh-light-mode-only) ![A screen displaying welcome information.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/Welcome~dark.png#gh-dark-mode-only)|![A screen showing an overview of the modules used in the Spezi Template Application.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules.png#gh-light-mode-only) ![A screen showing an overview of the modules used in the Spezi Template Application.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules~dark.png#gh-dark-mode-only)|![A screen displaying the consent view.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/Consent.png#gh-light-mode-only) ![A screen displaying the consent view.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/Consent~dark.png#gh-dark-mode-only) -|:--:|:--:|:--:| -|Welcome View|Interesting Modules|Consent Signature| - -|![HealthKit Onboarding Flow](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess.png#gh-light-mode-only) ![HealthKit Onboarding Flow](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess~dark.png#gh-dark-mode-only)|![Permissions screen of the HealthKit framework](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet.png#gh-light-mode-only) ![Permissions screen of the HealthKit framework](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet~dark.png#gh-dark-mode-only)|![A screen displaying the Scheduler UI.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Schedule/Schedule.png#gh-light-mode-only) ![A screen displaying the Scheduler UI.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Schedule/Schedule~dark.png#gh-dark-mode-only) -|:--:|:--:|:--:| -|HealthKit Access|Granular HealthKit Share Control|Schedule Tasks| - -|![Onboarding screen showing the Notifications permission screen.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Schedule/Notifications.png#gh-light-mode-only) ![Onboarding screen showing the Notifications permission screen.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Schedule/Notifications~dark.png#gh-dark-mode-only)|![A screen showing a questionnaire using ResearchKit.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Schedule/Questionnaire.png#gh-light-mode-only) ![A screen showing a questionnaire using ResearchKit.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Schedule/Questionnaire~dark.png#gh-dark-mode-only)|![The scheduler screen showing the completed UI](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete.png#gh-light-mode-only) ![The scheduler screen showing the completed UI](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete~dark.png#gh-dark-mode-only) -|:--:|:--:|:--:| -|Trigger Local Notifications|Display Questionnaires|Keep Track of Tasks| - -|![A screen displaying the Contact UI.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Context/Contacts.png#gh-light-mode-only) ![A screen displaying the Contact UI.](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Context/Contacts~dark.png#gh-dark-mode-only)|![License information to list all used Swift Packages](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Context/License.png#gh-light-mode-only) ![License information to list all used Swift Packages](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Context/License~dark.png#gh-dark-mode-only)|![User Interface of the Mock Web Service](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Context/Request.png#gh-light-mode-only) ![User Interface of the Mock Web Service](TemplateApplication/Supporting%20Files/TemplateApplication.docc/Resources/Context/Request~dark.png#gh-dark-mode-only) -|:--:|:--:|:--:| -|Contact Information|License Information|Mock Web Service Requests| - -> [!NOTE] -> You can find all the used Spezi Modules in the [Stanford Spezi GitHub Organization](https://github.com/StanfordSpezi). - -The [DocC documentation of the Spezi Template Application contains information on how to use the application as the basis for your Spezi-based application, run the application, and modify the application](https://stanfordspezi.github.io/SpeziTemplateApplication). ## Contributing -Contributions to this project are welcome. Please make sure to read the [contribution guidelines](https://github.com/StanfordSpezi/.github/blob/main/CONTRIBUTING.md) and the [contributor covenant code of conduct](https://github.com/StanfordSpezi/.github/blob/main/CODE_OF_CONDUCT.md) first. - -This project is based on [ContinuousDelivery Example by Paul Schmiedmayer](https://github.com/PSchmiedmayer/ContinousDelivery) and the [Stanford Biodesign Digital Health Template Application](https://github.com/StanfordBDHG/TemplateApplication) provided using the MIT license. +*Ensure that you add an adequate contribution section to this README.* ## License This project is licensed under the MIT License. See [Licenses](LICENSES) for more information. - -![Spezi Footer](https://raw.githubusercontent.com/StanfordSpezi/.github/main/assets/FooterLight.png#gh-light-mode-only) -![Spezi Footer](https://raw.githubusercontent.com/StanfordSpezi/.github/main/assets/FooterDark.png#gh-dark-mode-only) diff --git a/Scripts/TEMPLATEREADME.md b/Scripts/TEMPLATEREADME.md deleted file mode 100644 index edf8df8..0000000 --- a/Scripts/TEMPLATEREADME.md +++ /dev/null @@ -1,32 +0,0 @@ - - -# Spezi Template Application - -This repository contains the Spezi Template Application. -The Spezi Template Application is using the [Spezi](https://github.com/StanfordSpezi/Spezi) ecosystem and builds on top of the [{{SSTA}}](https://github.com/StanfordSpezi/Spezi{{TA}}). - -> [!NOTE]  -> Do you want to learn more about the {{SSTA}} and how to use, extend, and modify this application? Check out the [{{SSTA}} documentation](https://stanfordspezi.github.io/Spezi{{TA}}) - - -## Spezi Template Application Features - -*Provide a comprehensive description of your application, including figures showing the application. You can learn more on how to structure a README in the [Stanford Spezi Documentation Guide](https://swiftpackageindex.com/stanfordspezi/spezi/documentation/spezi/documentation-guide)* - - -## Contributing - -*Ensure that you add an adequate contribution section to this README.* - - -## License - -This project is licensed under the MIT License. See [Licenses](LICENSES) for more information. diff --git a/Scripts/create.sh b/Scripts/create.sh deleted file mode 100644 index c2d845d..0000000 --- a/Scripts/create.sh +++ /dev/null @@ -1,196 +0,0 @@ -#!/bin/bash -# -# This source file is part of the Stanford Spezi Template Application open-source project -# -# SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) -# -# SPDX-License-Identifier: MIT -# - -export LC_CTYPE=UTF-8 -export LANG=en_US.UTF-8 -export LC_ALL=en_US.UTF-8 - - -# Function to display an error message, show the help, and exit -error_exit_help() { - echo "Error: $1" >&2 - show_help - exit 1 -} - -# Function to display help message -show_help() { - echo "Usage: $0 --name --bundleIdentifier [--provisioningProfile ]" - echo - echo "Options:" - echo " --name Name of the application. (required)" - echo " --bundleIdentifier The iOS bundle identifier of the application. (required)" - echo " --provisioningProfile The name of the iOS provisioning profile to build the application. (optional, defaults to the value of --name)" - echo " --help Display this help and exit." -} - -# Initialize variables -appName="" -bundleIdentifier="" -provisioningProfile="" - -# Parse named arguments -while [[ $# -gt 0 ]]; do - case "$1" in - --name) - appName="$2" - shift # past argument - shift # past value - ;; - --bundleIdentifier) - bundleIdentifier="$2" - shift # past argument - shift # past value - ;; - --provisioningProfile) - provisioningProfile="$2" - shift # past argument - shift # past value - ;; - --help) - show_help - exit 0 - ;; - *) - error_exit_help "Unknown option: $1" - ;; - esac -done - -# Check for required arguments -if [ -z "$appName" ]; then - error_exit_help "The --name argument is required." -fi - -if [ -z "$bundleIdentifier" ]; then - error_exit_help "The --bundleIdentifier argument is required." -fi - -# Set default value for provisioningProfile if not provided -if [ -z "$provisioningProfile" ]; then - provisioningProfile="$appName" -fi - -# Remove spaces from appName -appNameNoSpaces="${appName// /}" - -# Convert appName to lowercase and remove spaces -appNameLowerNoSpaces=$(echo "$appName" | tr '[:upper:]' '[:lower:]' | tr -d ' ') - -# Testing the input: -echo "Application Name: $appName" -echo "Bundle Identifier: $bundleIdentifier" -echo "Provisioning Profile: $provisioningProfile" -echo "Application Name (No Spaces): $appNameNoSpaces" -echo "Application Name (Lowercase, No Spaces): $appNameLowerNoSpaces" - -# Rename the bundle identifier: -oldBundleIdentifierEscaped=$(sed 's:/:\\/:g' <<< "edu.stanford.spezi.templateapplication") -bundleIdentifierEscaped=$(sed 's:/:\\/:g' <<< "$bundleIdentifier") - -find . -type f -not \( -path '*/.git/*' \) -not \( -path '*/Scripts/create.sh' \) -exec grep -Iq . {} \; -print | while read -r file; do - sed -i '' "s/${oldBundleIdentifierEscaped}/${bundleIdentifierEscaped}/g" "$file" || echo "Failed to process $file" -done - - -# Rename the provisioning profile: -oldProvisioningProfileEscaped=$(sed 's:/:\\/:g' <<< "\"Spezi Template Application\"") -provisioningProfileEscaped=$(sed 's:/:\\/:g' <<< "\"$provisioningProfile\"") - -sed -i '' "s/${oldProvisioningProfileEscaped}/${provisioningProfileEscaped}/g" "./fastlane/Fastfile" -sed -i '' "s/${oldProvisioningProfileEscaped}/${provisioningProfileEscaped}/g" "./TemplateApplication.xcodeproj/project.pbxproj" - - -# Firebase project name: -firebaseProjectNameEscaped=$(sed 's:/:\\/:g' <<< "stanfordspezitemplateapp") -appNameLowerNoSpacesEscaped=$(sed 's:/:\\/:g' <<< "$appNameLowerNoSpaces") - -sed -i '' "s/${firebaseProjectNameEscaped}/${appNameLowerNoSpacesEscaped}/g" ".firebaserc" -sed -i '' "s/${firebaseProjectNameEscaped}/${appNameLowerNoSpacesEscaped}/g" "./TemplateApplication/Supporting Files/GoogleService-Info.plist" - - -# Rename project and code: -projectNameLowercaseEscaped=$(sed 's:/:\\/:g' <<< "templateapplication") -headerFileEscaped=$(sed 's:/:\\/:g' <<< "Stanford Spezi Template Application open-source") -projectNameNoSpacesEscaped=$(sed 's:/:\\/:g' <<< "TemplateApplication") -projectNameSpeziEscaped=$(sed 's:/:\\/:g' <<< "Spezi Template Application") -projectNameEscaped=$(sed 's:/:\\/:g' <<< "Template Application") -templateEscaped=$(sed 's:/:\\/:g' <<< "Template") -sstaEscaped=$(sed 's:/:\\/:g' <<< "{{SSTA}}") -taEscaped=$(sed 's:/:\\/:g' <<< "{{TA}}") - -sstaFullEscaped=$(sed 's:/:\\/:g' <<< "Stanford Spezi Template Application") -taFullEscaped=$(sed 's:/:\\/:g' <<< "TemplateApplication") -newHeaderFileEscaped=$(sed 's:/:\\/:g' <<< "$appName based on the $sstaEscaped") -appNameEscaped=$(sed 's:/:\\/:g' <<< "$appName") -appNameNoSpacesEscaped=$(sed 's:/:\\/:g' <<< "$appNameNoSpaces") - -find . -type f -not \( -path '*/.git/*' \) -not \( -path '*/Scripts/create.sh' \) -exec grep -Iq . {} \; -print | while read -r file; do - sed -i '' "s/${projectNameLowercaseEscaped}/${appNameLowerNoSpacesEscaped}/g" "$file" || echo "Failed to process $file" - sed -i '' "s/${headerFileEscaped}/${newHeaderFileEscaped}/g" "$file" || echo "Failed to process $file" - sed -i '' "s/${projectNameNoSpacesEscaped}/${appNameNoSpacesEscaped}/g" "$file" || echo "Failed to process $file" - sed -i '' "s/${projectNameSpeziEscaped}/${appNameEscaped}/g" "$file" || echo "Failed to process $file" - sed -i '' "s/${projectNameEscaped}/${appNameEscaped}/g" "$file" || echo "Failed to process $file" - sed -i '' "s/${templateEscaped}/${appNameNoSpacesEscaped}/g" "$file" || echo "Failed to process $file" - sed -i '' "s/${sstaEscaped}/${sstaFullEscaped}/g" "$file" || echo "Failed to process $file" - sed -i '' "s/${taEscaped}/${taFullEscaped}/g" "$file" || echo "Failed to process $file" -done - -# Remove the repo link and DOI from the citation file: -# Specify the file name -citationFile="CITATION.cff" -total_lines=$(wc -l < "$citationFile") -lines_to_keep=$((total_lines - 2)) - -# Check if the file has more than 3 lines -if [ "$lines_to_keep" -ge 1 ]; then - # Output the first N lines to a temporary file - head -n "$lines_to_keep" "$citationFile" > ".$citationFile" - # Replace the original file with the temporary file - mv ".$citationFile" "$citationFile" -else - echo "$citationFile has less than 3 lines, nothing will be removed." -fi - - -# Rename files and directories -# Function to recursively rename directories -rename_directories() { - base_dir=$1 - find "$base_dir" -depth -type d -name "*${projectNameNoSpacesEscaped}*" | while read -r dir; do - new_dir=$(echo "$dir" | sed "s/${projectNameNoSpacesEscaped}/${appNameNoSpacesEscaped}/g") - mv "$dir" "$new_dir" - # Prevent reprocessing of already renamed directories - rename_directories "$new_dir" - done -} - -# Rename directories -rename_directories "." - -# Rename files -find . -type f -name "*${projectNameNoSpacesEscaped}*" | while read -r file; do - new_file=$(echo "$file" | sed "s/${projectNameNoSpacesEscaped}/${appNameNoSpacesEscaped}/g") - # Check if the new file path's directory exists before moving - new_dir=$(dirname "$new_file") - if [ -d "$new_dir" ]; then - mv "$file" "$new_file" - fi -done - -# Remove the DocC documentation, Figures, and replace the README with a placeholder README -rm -rf "./${appNameNoSpacesEscaped}/Supporting Files/${appNameNoSpacesEscaped}.docc" -mv "./Scripts/TEMPLATEREADME.md" "./README.md" - -linkCheckDisabledEscaped=$(sed 's:/:\\/:g' <<< "") -sed -i '' "s/${linkCheckDisabledEscaped}//g" "./README.md" - - -rm -rf "./Scripts" -rm -f "./.github/workflows/documentation-deployment.yml" diff --git a/Scripts/setup.sh b/Scripts/setup.sh deleted file mode 100644 index 351de55..0000000 --- a/Scripts/setup.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/s -# -# This source file is part of the Stanford Spezi Template Application open-source project -# -# SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) -# -# SPDX-License-Identifier: MIT -# - -# Script to document and automate the installation of software needed for the Spezi Template Application -# -# It is required that Xcode is installed on the macOS instance. - -# 1. Install homebrew -export NONINTERACTIVE=1 -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile -eval "$(/opt/homebrew/bin/brew shellenv)" - - -# 2. Install tools -brew install java -sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk -echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc - -brew install node -brew install firebase-cli -brew install fastlane -# Set the local correctly to work with fastlane -echo 'export LC_ALL=en_US.UTF-8' >> ~/.zshrc -echo 'export LANG=en_US.UTF-8' >> ~/.zshrc - -brew install swiftlint - -brew install git-lfs -git lfs install -git lfs install --system - -brew tap FelixHerrmann/tap -brew install swift-package-list - -# Ensure that everything on the system is up-to-date -brew upgrade - - -# 3. Test and start the firebase emulator -firebase emulators:exec --project test "echo 'Firebase emulator installed and started successfully!'" diff --git a/TemplateApplication.xcodeproj/project.pbxproj.license b/TemplateApplication.xcodeproj/project.pbxproj.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication.xcodeproj/project.pbxproj.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata.license b/TemplateApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist.license b/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.license b/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xcodeproj/xcshareddata/xcschemes/TemplateApplication.xcscheme.license b/TemplateApplication.xcodeproj/xcshareddata/xcschemes/TemplateApplication.xcscheme.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication.xcodeproj/xcshareddata/xcschemes/TemplateApplication.xcscheme.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication.xctestplan.license b/TemplateApplication.xctestplan.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication.xctestplan.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/AppIcon.png.license b/TemplateApplication/Resources/AppIcon.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Resources/AppIcon.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json.license b/TemplateApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png.license b/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json.license b/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/Contents.json.license b/TemplateApplication/Resources/Assets.xcassets/Contents.json.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Resources/Assets.xcassets/Contents.json.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/ConsentDocument.md.license b/TemplateApplication/Resources/ConsentDocument.md.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Resources/ConsentDocument.md.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Localizable.xcstrings.license b/TemplateApplication/Resources/Localizable.xcstrings.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Resources/Localizable.xcstrings.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/SocialSupportQuestionnaire.json.license b/TemplateApplication/Resources/SocialSupportQuestionnaire.json.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Resources/SocialSupportQuestionnaire.json.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/Info.plist.license b/TemplateApplication/Supporting Files/Info.plist.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/Info.plist.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Create.md b/TemplateApplication/Supporting Files/TemplateApplication.docc/Create.md deleted file mode 100644 index a0b4da9..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Create.md +++ /dev/null @@ -1,55 +0,0 @@ -# Create Your Spezi-based Application - - - -How to create your own Spezi-based application based on the Spezi Template Application. - - -## 1. Create Your Own Repository - -You can create your own Spezi-based application by creating a new GitHub repo and [using the Stanford Spezi Template Application as a template](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template). - -> Tip: Spezi is completely independent of the Spezi Template Application or any other setup. You can always import one or more Spezi modules in any Swift and SwiftUI-based application. - - -## 2. Change The Name and Key Information - -The Spezi Template application repository provides a convenient script to rename all aspects of the Spezi Template Application to your application name, update the bundle identifier, and remove unused documentation and files that are not needed for your own project. - -The shell script can be called as follows: -```bash -$ sh Scripts/create.sh --name --bundleIdentifier [--provisioningProfile ] -``` - -Argument | Description ---- | --- -`--name` | Name of the application. (required) -`--bundleIdentifier` | The iOS bundle identifier of the application. (required) -`--provisioningProfile` | The name of the iOS provisioning profile to build the application. (optional, defaults to the value of --name). -`--help` | Display help and exit. - -The following example shows renaming the application to "My Spezi App": - -```bash -$ sh Scripts/create.sh --name "My Spezi App" --bundleIdentifier "edu.stanford.spezi.myapp" -``` - -## 3. Setup the Continous Integration and Delivery Setup - -Continuous integration (CI) and continuous delivery (CD) are essential to automatically test and deploy your application at any time. -Each Spezi Template Application-based Spezi app already has the necessary infrastructure in place; the Spezi Template Application includes continuous integration (CI) and continuous delivery (CD) setup: -- Automatically build and test the application on every pull request before deploying it. Suppose your organization doesn't have a self-hosted macOS runner modeled after the setup in the [StanfordBDHG ContinuousIntegration](https://github.com/StanfordBDHG/ContinousIntegration) setup. In that case, you will need to remove the `runsonlabels` arguments in the `build-and-test.yml` file to ensure that the build runs on the default macOS runners provided by GitHub. -- An automated setup to deploy the application to TestFlight every time there is a new commit on the repository's main branch. You will need to provide the provisioning profile and other GitHub secrets to make them available to the GitHub Action. -- 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. -- Deploy documentation of the application to GitHub pages with every commit to the main branch. - -Please refer to the [Stanford Biodesign Digital Health Template Application](https://github.com/StanfordBDHG/TemplateApplication) and the [ContinuousDelivery Example by Paul Schmiedmayer](https://github.com/PSchmiedmayer/ContinousDelivery) for more background about the CI and CD setup for the Spezi Template Application. diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Modify.md b/TemplateApplication/Supporting Files/TemplateApplication.docc/Modify.md deleted file mode 100644 index a485ca3..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Modify.md +++ /dev/null @@ -1,105 +0,0 @@ -# Start Development of Your Spezi-based Application - - - -Overview of the different parts of the Spezi Template Application-based Spezi app and how to modify them to your needs. - -> Important: Please first follow the instructions on how to install all the necessary software to build, run, and modify the application () and how to create your own Spezi-based application based on the Spezi Template Application (). - - -## Onboarding Flow - -The onboarding contains different steps. -It uses the [**Spezi Onboarding** module](https://github.com/StanfordSpezi/SpeziOnboarding) to display different onboarding-related views like the information about the application, a consent screen, and a screen to display a HealthKit consent view. - -@Row(numberOfColumns: 4) { - @Column(size: 1) { - @Image(source: "Welcome", alt: "A screen displaying welcome information.") { - You can find and modify the welcome messages in the ``Welcome`` view. - } - } - @Column(size: 1) { - @Image(source: "InterestingModules", alt: "A screen showing an overview of the modules used in the Spezi Template Application.") { - You can find and modify the sequential onboarding information in the ``InterestingModules`` view. - } - } - @Column(size: 1) { - @Image(source: "Consent", alt: "A screen displaying the consent view.") { - You can find and modify the consent setup and surrounding user interface in the ``Consent`` view. - } - } -} - -The application also automatically pulls and processes HealthKit data types that are defined in the ``TemplateApplicationDelegate`` using the [**Spezi HealthKit** module](https://github.com/StanfordSpezi/SpeziHealthKit). - -@Row(numberOfColumns: 4) { - @Column(size: 1) { - @Image(source: "HealthKitAccess", alt: "HealthKit Onboarding Flow") { - You can find and modify the HealthKit onboarding flow in the ``HealthKitPermissions`` view. - } - } - @Column(size: 1) { - @Image(source: "HealthKitSheet", alt: "Permissions screen of the HealthKit framework") { - You can define which elements should be pulled from HealthKit in the ``TemplateApplicationDelegate``. - } - } -} - -## Schedule & Questionnaires - -The scheduler part of the application provides the functionality to schedule a recurring task and bind it to an action, e.g., displaying a questionnaire. -It uses the [**Spezi Scheduler**](https://github.com/StanfordSpezi/SpeziScheduler) and [**Spezi Questionnaire**](https://github.com/StanfordSpezi/SpeziQuestionnaire) modules to schedule the tasks as defined in the `TemplateApplicationScheduler`. - -@Row(numberOfColumns: 4) { - @Column(size: 1) { - @Image(source: "Schedule", alt: "A screen displaying the Scheduler UI.") { - The elements that are displayed as part of a schedule are defined in the ``TemplateApplicationTaskContext`` and displayed using the ``EventContextView`` and logic in the ``ScheduleView``. - } - } - @Column(size: 1) { - @Image(source: "Notifications", alt: "Onboarding screen showing the Notifications permission screen.") { - You can find and modify the scheduled tasks, including local notifications, by changing the configuration and setup in the ``TemplateApplicationScheduler``. - } - } - @Column(size: 1) { - @Image(source: "Questionnaire", alt: "A screen showing a questionnaire using ResearchKit.") { - The questionnaire content is defined using the FHIR questionnaire information found in the `Resources` folder and defined by the ``TemplateApplicationScheduler``. - } - } - @Column(size: 1) { - @Image(source: "ScheduleComplete", alt: "The scheduler screen showing the completed UI") { - The [**Spezi Scheduler**](https://github.com/StanfordSpezi/SpeziScheduler) module keeps track of the completion state and due dates of tasks and events. - } - } -} - - -## Additional Application - -The [**Spezi Contacts** module](https://github.com/StanfordSpezi/SpeziContact) uses the contact-related views provided by Spezi. - -@Row(numberOfColumns: 4) { - @Column(size: 1) { - @Image(source: "Contacts", alt: "A screen displaying the Contact UI.") { - You can find and modify the contact information in the ``Contacts`` view. - } - } - @Column(size: 1) { - @Image(source: "License", alt: "License information to list all used Swift Packages") { - You can investigate the ``ContributionsList`` to learn how the application loads and displays the license information. - } - } - @Column(size: 1) { - @Image(source: "Request", alt: "User Interface of the Mock Web Service") { - If Firebase is disabled, the Mock Web Service allows you to see the requests that would be sent to a web service. - } - } -} diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account.png deleted file mode 100644 index a607eeb..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account~dark.png deleted file mode 100644 index 36d9519..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Account~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login.png deleted file mode 100644 index 4c240db..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login~dark.png deleted file mode 100644 index e24cfe1..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/Login~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount.png deleted file mode 100644 index 5d14995..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount~dark.png deleted file mode 100644 index 7b8b784..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Account/NewAccount~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts.png deleted file mode 100644 index ae7581f..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts~dark.png deleted file mode 100644 index a1ebd71..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Contacts~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License.png deleted file mode 100644 index d0b1854..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License~dark.png deleted file mode 100644 index c1b8f78..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/License~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request.png deleted file mode 100644 index e1ec526..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request~dark.png deleted file mode 100644 index d11e5b0..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Context/Request~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent.png deleted file mode 100644 index f36de82..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent~dark.png deleted file mode 100644 index 7053c90..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Consent~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess.png deleted file mode 100644 index 9649ca2..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess~dark.png deleted file mode 100644 index 52d2f36..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitAccess~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet.png deleted file mode 100644 index 11aa55f..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet~dark.png deleted file mode 100644 index c0c62f3..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/HealthKitSheet~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules.png deleted file mode 100644 index 88307a4..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules~dark.png deleted file mode 100644 index c1206ba..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/InterestingModules~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome.png deleted file mode 100644 index 25bbe2a..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome~dark.png deleted file mode 100644 index 222a72d..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Onboarding/Welcome~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications.png deleted file mode 100644 index 104e2b6..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications~dark.png deleted file mode 100644 index 5a21b21..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Notifications~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire.png deleted file mode 100644 index d0be49d..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire~dark.png deleted file mode 100644 index db8dfe2..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Questionnaire~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule.png deleted file mode 100644 index 39fa9b9..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete.png deleted file mode 100644 index 5340701..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete~dark.png deleted file mode 100644 index 4a81661..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/ScheduleComplete~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule~dark.png deleted file mode 100644 index ba1e669..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Schedule/Schedule~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI.png deleted file mode 100644 index 2c1a82b..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI~dark.png deleted file mode 100644 index 02c7dcf..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseCLI~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb.png deleted file mode 100644 index 8ed1663..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb~dark.png deleted file mode 100644 index 8ab43dd..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/FirebaseWeb~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run.png deleted file mode 100644 index a1dbb28..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run~dark.png deleted file mode 100644 index 7874d1e..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Run~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme.png deleted file mode 100644 index 36fbc09..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme~dark.png deleted file mode 100644 index 8354e92..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Scheme~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode.png deleted file mode 100644 index 8f881e8..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode~dark.png b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode~dark.png deleted file mode 100644 index 9ccde1f..0000000 Binary files a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode~dark.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode~dark.png.license b/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode~dark.png.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Resources/Setup/Xcode~dark.png.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/Setup.md b/TemplateApplication/Supporting Files/TemplateApplication.docc/Setup.md deleted file mode 100644 index 2c70108..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Setup.md +++ /dev/null @@ -1,150 +0,0 @@ -# Build And Run a Spezi Template Application-based Application - - - -How to install all the nescessary software to build, run, and modify your Spezi Template Application-base Spezi app. - -## 1. Install Xcode - -Applications for the Apple ecosystem are written in the [Swift programming language](https://swift.org). -The framework for developing the user interface for mobile applications in Swift is called [SwiftUI](https://developer.apple.com/xcode/swiftui/). -You will need access to a macOS-based machine to build and run the Swift-based Spezi Template Application. - -Please ensure that your Mac meets the following criteria and that you install or update the software on your Mac accordingly. - - -### macOS - Sonoma 14.2 Or Newer - -The Mac needs to run macOS Sonoma 14.2 or newer. Please [update to the latest operating system version following the Apple-provided instructions](https://support.apple.com/en-us/HT201541). - -You can verify that you run the latest macOS version by clicking on the Apple Logo on the top left of your screen and selecting "About this Mac". You can see the macOS version number in the specs list under your Mac picture. - - -### Xcode - 15.2 Or Newer - -Xcode is the integrated development environment (IDE) that is required to build and run Swift-based iOS applications. -You need to have Xcode 15.2 or later installed. -[You can install Xcode using the Mac AppStore](https://apps.apple.com/us/app/xcode/id497799835). - -Please open Xcode and follow the instructions to finish the installation. - -You can verify that you run the latest version of Xcode and everything is installed if you can see the "Welcome to Xcode" screen when you open Xcode, showing 15.2 or newer as the version number. - -@Image(source: "Xcode", alt: "Screenshot showing the Welcome to Xcode window.") - -You can learn more about Xcode, including [creating an Xcode project for an app](https://developer.apple.com/documentation/xcode/creating-an-xcode-project-for-an-app), information about the IDE interface by following the instructions on [creating your app's interface with SwiftUI](https://developer.apple.com/documentation/xcode/creating-your-app-s-interface-with-swiftui) & [Previewing your app's interface in Xcode](https://developer.apple.com/documentation/xcode/previewing-your-apps-interface-in-xcode). - - -## 2. Install Helper Tools - -The Spezi Template Application and applications derived from it provide a pre-configured setup of integrated tools that make the development of applications easier and enforce best practices during the development of your application. - -We provide a simple setup script that installs essential tools like [homebrew](https://brew.sh) (macOS package manager), [swiftlint](https://github.com/realm/SwiftLint) (automated checking of your source code for programmatic and stylistic errors), [git LFS](https://git-lfs.com) (Git extension for versioning large files), and [swift-package-list](https://github.com/FelixHerrmann/swift-package-list) (automatically give credit to all dependencies in the application user interface). -The script also installs the [Google Firebase emulator and command line interface (CLI)](https://firebase.google.com/docs/cli), including java, node, and other dependencies needed to execute the Firebase emulator to allow you to locally test your application's future cloud connection without setting up a cloud firebase project. - -You can simply run the script by opening up your macOS [Terminal](https://support.apple.com/guide/terminal/open-or-quit-terminal-apd5265185d-f365-44cb-8b09-71a064a42125/mac) and executing the following command: -```bash -$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/StanfordSpezi/SpeziTemplateApplication/HEAD/Scripts/setup.sh)" -``` - -> Tip: If you don't feel comfortable running the setup script, you can [inspect the script yourself](https://raw.githubusercontent.com/StanfordSpezi/SpeziTemplateApplication/HEAD/Scripts/setup.sh) and use the commands in the script to install the required software yourself selectively. - - -## 3. Run The Application - -[Google Firebase](https://firebase.google.com) is a set of backend cloud computing services and application development platforms provided by Google. -It hosts databases, services, authentication, and integration for a variety of applications, including mobile applications like the Spezi Template Application. -Stanford provides its version of a Firebase instance in the form of the [Stanford mHealth platform](https://med.stanford.edu/mhealth.html). -We use Firebase and the mHealt platform as the default integrated cloud provided in the Spezi Template Application. - -> Tip: Spezi itself is independent of any cloud provider or platform! Spezi offers different modules to connect to cloud providers, including [Spezi Firebase](https://github.com/StanfordSpezi/SpeziFirebase), which is the cloud provider demonstrated in the Spezi Template Application. - - -### Alternative A: Get Started without Firebase - -You can start using the application without a cloud connection if you enable the `--disableFirebase` feature flag, enabled by default when opening the Xcode project. - -The application includes feature flags that can be configured in the [scheme editor in Xcode](https://help.apple.com/xcode/mac/11.4/index.html?localePath=en.lproj#/dev0bee46f46) and selecting your application scheme (default **TemplateApplication**), the **Run** configuration, and to switch to the **Arguments** tab to add, enable, disable, or remove arguments passed on launch. - -@Image(source: "Scheme", alt: "Screenshot showing the application scheme Run configuration's launch arguments.") - -The login and account setup is skipped in this configuration. - - -### Alternative B: Firebase Setup - -The application also provides a [Firebase Firestore](https://firebase.google.com/docs/firestore)-based data upload and [Firebase Authentication](https://firebase.google.com/docs/auth) login & sign-up. -It is required to have the [Firebase Emulator Suite](https://firebase.google.com/docs/emulator-suite) to be up and running to use these features to build and test the application locally. -The setup script described above installs the [Firebase Emulator Suite](https://firebase.google.com/docs/emulator-suite). - -> Important: You do not have to make any modifications to the Firebase configuration, log into the `Firebase` CLI using your Google account, or create a project in Firebase to run, build, and test the application! - -Navigate to the root folder of this setup containing your **.xcodeproj** file ([using `cd` in your terminal](https://tutorials.codebar.io/command-line/introduction/tutorial.html)) and startup the [Firebase Emulator Suite](https://firebase.google.com/docs/emulator-suite) in your [Terminal](https://support.apple.com/guide/terminal/open-or-quit-terminal-apd5265185d-f365-44cb-8b09-71a064a42125/mac) using -```bash -$ firebase emulators:start -``` - -@Image(source: "FirebaseCLI", alt: "Screenshot showing the terminal and the running Firebase Emulators.") - -After the emulators have started up, you can run the application in your simulator to build, test, and run the application and see the results show up in Firebase. - -@Image(source: "FirebaseWeb", alt: "Screenshot showing Safari and the Firebase Emulators web interface.") - - -### Run the App - -You can build and run the application using [Xcode](https://developer.apple.com/xcode/) by opening up the **.xcodeproj** file in the root of the repository. - -You can follow the Apple Documentation on [Building and running an app](https://developer.apple.com/documentation/xcode/building-and-running-an-app) to run the application in the iOS simulator right on your Mac. - -@Row(numberOfColumns: 4) { - @Column(size: 3) { - @Image(source: "Run", alt: "Press the run button in the upper left corner to run the app.") { - Press the run button in the upper left corner to run the app. - } - } - @Column { - @Image(source: "Welcome", alt: "The Spezi Template Application running in the iOS Simulator.") { - The Spezi Template Application running in the iOS Simulator. - } - } -} - -## 4. Modify The Application - -> Tip: You can learn more about changing up the code if the application and customizing your Spezi Template Application-based app in the article. - - -### Firebase Cloud Setup - -If you want to connect your project to a development or production Firebase cloud project, you can provide your [`GoogleService-Info.plist`](https://firebase.google.com/docs/ios/setup) in a base 64 representation in the [GitHub secrets](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions) (`GOOGLE_SERVICE_INFO_PLIST_BASE64`) of your project where it is picked up and loaded in the configured path setup in the [`beta-deployment.yml`] [GitHub Action](https://docs.github.com/en/actions) using the `googleserviceinfoplistpath` parameter that needs to be adapted to your project structure. - -You can generate a base 64 representation of a file after you [navigated into the folder](https://en.wikipedia.org/wiki/Cd_(command)#Usage) where you have downloaded your [`GoogleService-Info.plist`](https://firebase.google.com/docs/ios/setup) file to. -```shell -base64 -i GoogleService-Info.plist -``` - -> Warning: We do **not recommend** to commit your Firebase secrets and configuration file to your project. While one can extract the file from the deployed application, we encourage open-source projects to make it clear to contributors to set up their own Firebase project if they plan to build and deploy a version of an open-source project. - -The deployment requires you to store your Google service account JSON credentials in a base 64 representation in the `GOOGLE_APPLICATION_CREDENTIALS_BASE64`. You can learn more about how to generate the JSON in the [Firebase documentation](https://firebase.google.com/docs/app-distribution/authenticate-service-account). The service account must have the minimally required permissions (not the `Firebase App Distribution Admin` role) as documented at https://firebase.google.com/docs/projects/iam/roles-predefined for your deployment needs and setup. - -Be sure to update your `.firebaserc` project name and placeholder `GoogleService-Info.plist` project identifier to always reflect the name of your project and all security rules to reflect any changes in your application. - - -### Other Configuration Options - -The application also includes the following feature flags that can be configured in the [scheme editor in Xcode](https://help.apple.com/xcode/mac/11.4/index.html?localePath=en.lproj#/dev0bee46f46) and selecting your 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. - -> Tip: You can learn how to add, modify, and remove feature flags that are passed to the application when it is started in the [Customizing the build schemes for a project](https://developer.apple.com/documentation/xcode/customizing-the-build-schemes-for-a-project#Specify-launch-arguments-and-environment-variables) tutorial in the [*Specify launch arguments and environment variables* section](https://developer.apple.com/documentation/xcode/customizing-the-build-schemes-for-a-project#Specify-launch-arguments-and-environment-variables). diff --git a/TemplateApplication/Supporting Files/TemplateApplication.docc/TemplateApplication.md b/TemplateApplication/Supporting Files/TemplateApplication.docc/TemplateApplication.md deleted file mode 100644 index 99ffbad..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/TemplateApplication.md +++ /dev/null @@ -1,92 +0,0 @@ -# ``TemplateApplication`` - - - -Template to provide a starting point for Spezi-based applications. - -## Overview - -The Spezi Template Application demonstrates using the [Spezi](https://github.com/StanfordSpezi/Spezi) ecosystem and builds on top of the [Stanford Biodesign Digital Health Template Application](https://github.com/StanfordBDHG/TemplateApplication). - -> Tip: Do you want to try out the Spezi Template Application? You can download it to your iOS device using [TestFlight](https://testflight.apple.com/join/ipEezBY1)! - -The following screenshots show a wide variety of features based on Spezi Modules that are part of the Spezi Template Application. - -@Row(numberOfColumns: 3) { - @Column(size: 1) { - @Image(source: "Welcome", alt: "A screen displaying welcome information.") { - Welcome View. - } - } - @Column(size: 1) { - @Image(source: "InterestingModules", alt: "A screen showing an overview of the modules used in the Spezi Template Application.") { - Interesting Modules - } - } - @Column(size: 1) { - @Image(source: "Consent", alt: "A screen displaying the consent view.") { - Consent Signature. - } - } -} -@Row(numberOfColumns: 3) { - @Column(size: 1) { - @Image(source: "HealthKitAccess", alt: "HealthKit Onboarding Flow") { - HealthKit Access. - } - } - @Column(size: 1) { - @Image(source: "HealthKitSheet", alt: "Permissions screen of the HealthKit framework") { - Granular HealthKit Share Control. - } - } - @Column(size: 1) { - @Image(source: "Schedule", alt: "A screen displaying the Scheduler UI.") { - Schedule Tasks. - } - } -} -@Row(numberOfColumns: 3) { - @Column(size: 1) { - @Image(source: "Notifications", alt: "Onboarding screen showing the Notifications permission screen.") { - Trigger Local Notifications. - } - } - @Column(size: 1) { - @Image(source: "Questionnaire", alt: "A screen showing a questionnaire using ResearchKit.") { - Display Questionnaires. - } - } - @Column(size: 1) { - @Image(source: "ScheduleComplete", alt: "The scheduler screen showing the completed UI") { - Keep Track of Tasks. - } - } -} -@Row(numberOfColumns: 3) { - @Column(size: 1) { - @Image(source: "Contacts", alt: "A screen displaying the Contact UI.") { - Contact Information. - } - } - @Column(size: 1) { - @Image(source: "License", alt: "License information to list all used Swift Packages") { - License Information. - } - } - @Column(size: 1) { - @Image(source: "Request", alt: "User Interface of the Mock Web Service") { - Mock Web Service Requests. - } - } -} - -> Tip: You can find all the used Spezi Modules in the [Stanford Spezi GitHub Organization](https://github.com/StanfordSpezi). diff --git a/TemplateApplication/Supporting Files/TemplateApplication.entitlements.license b/TemplateApplication/Supporting Files/TemplateApplication.entitlements.license deleted file mode 100644 index 8ffe29f..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.entitlements.license +++ /dev/null @@ -1,6 +0,0 @@ - -This source file is part of the Stanford Spezi Template Application open-source project - -SPDX-FileCopyrightText: 2023 Stanford University - -SPDX-License-Identifier: MIT diff --git a/TemplateApplicationUITests/ContactsTests.swift b/TemplateApplicationUITests/ContactsTests.swift deleted file mode 100644 index 672ebc3..0000000 --- a/TemplateApplicationUITests/ContactsTests.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// This source file is part of the Stanford Spezi Template Application open-source project -// -// SPDX-FileCopyrightText: 2023 Stanford University -// -// SPDX-License-Identifier: MIT -// - -import XCTest - - -class ContactsTests: XCTestCase { - override func setUpWithError() throws { - try super.setUpWithError() - - continueAfterFailure = false - - let app = XCUIApplication() - app.launchArguments = ["--skipOnboarding"] - app.launch() - } - - - func testContacts() throws { - let app = XCUIApplication() - - XCTAssertTrue(app.tabBars["Tab Bar"].buttons["Contacts"].waitForExistence(timeout: 2)) - app.tabBars["Tab Bar"].buttons["Contacts"].tap() - - XCTAssertTrue(app.staticTexts["Contact: Leland Stanford"].waitForExistence(timeout: 2)) - - XCTAssertTrue(app.buttons["Call"].waitForExistence(timeout: 2)) - XCTAssertTrue(app.buttons["Text"].waitForExistence(timeout: 2)) - XCTAssertTrue(app.buttons["Email"].waitForExistence(timeout: 2)) - XCTAssertTrue(app.buttons["Website"].waitForExistence(timeout: 2)) - - XCTAssertTrue(app.buttons["Address: 450 Serra Mall\nStanford CA 94305\nUSA"].waitForExistence(timeout: 2)) - } -} diff --git a/TemplateApplicationUITests/ContributionsTest.swift b/TemplateApplicationUITests/ContributionsTest.swift deleted file mode 100644 index 99227a7..0000000 --- a/TemplateApplicationUITests/ContributionsTest.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// This source file is part of the Stanford Spezi Template Application open-source project -// -// SPDX-FileCopyrightText: 2023 Stanford University -// -// SPDX-License-Identifier: MIT -// - -import XCTest - - -final class ContributionsTest: XCTestCase { - override func setUpWithError() throws { - try super.setUpWithError() - - try disablePasswordAutofill() - - continueAfterFailure = false - - let app = XCUIApplication() - app.launchArguments = ["--showOnboarding"] - app.deleteAndLaunch(withSpringboardAppName: "TemplateApplication") - } - - func testLicenseInformationPage() throws { - let app = XCUIApplication() - - // complete onboarding so user is logged in - try app.conductOnboardingIfNeeded(email: "leland@contributions.stanford.edu") - - - XCTAssertTrue(app.buttons["Your Account"].waitForExistence(timeout: 6.0)) - app.buttons["Your Account"].tap() - - XCTAssertTrue(app.buttons["License Information"].waitForExistence(timeout: 2)) - app.buttons["License Information"].tap() - // Test if the sheet opens by checking if the title of the sheet is present - XCTAssertTrue(app.staticTexts["This project is licensed under the MIT License."].waitForExistence(timeout: 2)) - XCTAssertTrue(app.buttons["Repository Link"].waitForExistence(timeout: 2)) - } -} diff --git a/TemplateApplicationUITests/MockUploadTests.swift b/TemplateApplicationUITests/MockUploadTests.swift deleted file mode 100644 index 298caa0..0000000 --- a/TemplateApplicationUITests/MockUploadTests.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// This source file is part of the Stanford Spezi Template Application open-source project -// -// SPDX-FileCopyrightText: 2023 Stanford University -// -// SPDX-License-Identifier: MIT -// - -import XCTest - - -class MockUploadTestsTests: XCTestCase { - override func setUpWithError() throws { - try super.setUpWithError() - - continueAfterFailure = false - - let app = XCUIApplication() - app.launchArguments = ["--skipOnboarding", "--disableFirebase"] - app.launch() - } - - - func testMockUpload() throws { - let app = XCUIApplication() - - XCTAssertTrue(app.tabBars["Tab Bar"].buttons["Mock Web Service"].waitForExistence(timeout: 2)) - app.tabBars["Tab Bar"].buttons["Mock Web Service"].tap() - - XCTAssertTrue(app.staticTexts["Mock Requests"].waitForExistence(timeout: 2)) - } -} diff --git a/TemplateApplicationUITests/OnboardingTests.swift b/TemplateApplicationUITests/OnboardingTests.swift deleted file mode 100644 index c3c2873..0000000 --- a/TemplateApplicationUITests/OnboardingTests.swift +++ /dev/null @@ -1,227 +0,0 @@ -// -// This source file is part of the Stanford Spezi Template Application open-source project -// -// SPDX-FileCopyrightText: 2023 Stanford University -// -// SPDX-License-Identifier: MIT -// - -import XCTest -import XCTestExtensions -import XCTHealthKit - - -class OnboardingTests: XCTestCase { - override func setUpWithError() throws { - try super.setUpWithError() - - try disablePasswordAutofill() - - continueAfterFailure = false - - let app = XCUIApplication() - app.launchArguments = ["--showOnboarding"] - app.deleteAndLaunch(withSpringboardAppName: "TemplateApplication") - } - - - func testOnboardingFlow() throws { - let app = XCUIApplication() - let email = "leland@onboarding.stanford.edu" - - try app.navigateOnboardingFlow(email: email) - - app.assertOnboardingComplete() - try app.assertAccountInformation(email: email) - } - - func testOnboardingFlowRepeated() throws { - let app = XCUIApplication() - app.launchArguments = ["--showOnboarding", "--disableFirebase"] - app.terminate() - app.launch() - - try app.navigateOnboardingFlow() - app.assertOnboardingComplete() - - app.terminate() - - // Second onboarding round shouldn't display HealthKit and Notification authorizations anymore - app.activate() - - try app.navigateOnboardingFlow(repeated: true) - // Do not show HealthKit and Notification authorization view again - app.assertOnboardingComplete() - } -} - - -extension XCUIApplication { - func conductOnboardingIfNeeded(email: String = "leland@stanford.edu") throws { - let app = XCUIApplication() - - if app.staticTexts["Spezi\nTemplate Application"].waitForExistence(timeout: 5) { - try app.navigateOnboardingFlow(email: email) - } - } - - fileprivate func navigateOnboardingFlow( - email: String = "leland@stanford.edu", - repeated skippedIfRepeated: Bool = false - ) throws { - try navigateOnboardingFlowWelcome() - try navigateOnboardingFlowInterestingModules() - if staticTexts["Your Account"].waitForExistence(timeout: 5) { - try navigateOnboardingAccount(email: email) - } - if staticTexts["Consent"].waitForExistence(timeout: 5) { - try navigateOnboardingFlowConsent() - } - if !skippedIfRepeated { - try navigateOnboardingFlowHealthKitAccess() - try navigateOnboardingFlowNotification() - } - } - - private func navigateOnboardingFlowWelcome() throws { - XCTAssertTrue(staticTexts["Spezi\nTemplate Application"].waitForExistence(timeout: 5)) - - XCTAssertTrue(buttons["Learn More"].waitForExistence(timeout: 2)) - buttons["Learn More"].tap() - } - - private func navigateOnboardingFlowInterestingModules() throws { - XCTAssertTrue(staticTexts["Interesting Modules"].waitForExistence(timeout: 5)) - - for _ in 1..<4 { - XCTAssertTrue(buttons["Next"].waitForExistence(timeout: 2)) - buttons["Next"].tap() - } - - XCTAssertTrue(buttons["Next"].waitForExistence(timeout: 2)) - buttons["Next"].tap() - } - - private func navigateOnboardingAccount(email: String) throws { - guard !buttons["Next"].waitForExistence(timeout: 5) else { - buttons["Next"].tap() - return - } - - XCTAssertTrue(buttons["Signup"].waitForExistence(timeout: 2)) - buttons["Signup"].tap() - - XCTAssertTrue(staticTexts["Create a new Account"].waitForExistence(timeout: 2)) - - try collectionViews.textFields["E-Mail Address"].enter(value: email) - try collectionViews.secureTextFields["Password"].enter(value: "StanfordRocks") - try textFields["enter first name"].enter(value: "Leland") - try textFields["enter last name"].enter(value: "Stanford") - - XCTAssertTrue(collectionViews.buttons["Signup"].waitForExistence(timeout: 2)) - collectionViews.buttons["Signup"].tap() - - sleep(3) - - if staticTexts["HealthKit Access"].waitForExistence(timeout: 5) && navigationBars.buttons["Back"].waitForExistence(timeout: 5) { - navigationBars.buttons["Back"].tap() - - XCTAssertTrue(staticTexts["Leland Stanford"].waitForExistence(timeout: 2)) - XCTAssertTrue(staticTexts[email].waitForExistence(timeout: 2)) - - XCTAssertTrue(buttons["Next"].waitForExistence(timeout: 2)) - buttons["Next"].tap() - } - } - - private func navigateOnboardingFlowConsent() throws { - XCTAssertTrue(staticTexts["Consent"].waitForExistence(timeout: 5)) - - XCTAssertTrue(staticTexts["First Name"].waitForExistence(timeout: 2)) - try textFields["Enter your first name ..."].enter(value: "Leland") - - XCTAssertTrue(staticTexts["Last Name"].waitForExistence(timeout: 2)) - try textFields["Enter your last name ..."].enter(value: "Stanford") - - XCTAssertTrue(scrollViews["Signature Field"].waitForExistence(timeout: 2)) - scrollViews["Signature Field"].swipeRight() - - XCTAssertTrue(buttons["I Consent"].waitForExistence(timeout: 2)) - buttons["I Consent"].tap() - } - - private func navigateOnboardingFlowHealthKitAccess() throws { - XCTAssertTrue(staticTexts["HealthKit Access"].waitForExistence(timeout: 5)) - - XCTAssertTrue(buttons["Grant Access"].waitForExistence(timeout: 2)) - buttons["Grant Access"].tap() - - try handleHealthKitAuthorization() - } - - private func navigateOnboardingFlowNotification() throws { - XCTAssertTrue(staticTexts["Notifications"].waitForExistence(timeout: 5)) - - XCTAssertTrue(buttons["Allow Notifications"].waitForExistence(timeout: 2)) - buttons["Allow Notifications"].tap() - - let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard") - let alertAllowButton = springboard.buttons["Allow"] - if alertAllowButton.waitForExistence(timeout: 5) { - alertAllowButton.tap() - } - } - - fileprivate func assertOnboardingComplete() { - let tabBar = tabBars["Tab Bar"] - XCTAssertTrue(tabBar.buttons["Schedule"].waitForExistence(timeout: 2)) - XCTAssertTrue(tabBar.buttons["Contacts"].waitForExistence(timeout: 2)) - } - - fileprivate func assertAccountInformation(email: String) throws { - XCTAssertTrue(navigationBars.buttons["Your Account"].waitForExistence(timeout: 2)) - navigationBars.buttons["Your Account"].tap() - - XCTAssertTrue(staticTexts["Account Overview"].waitForExistence(timeout: 5.0)) - XCTAssertTrue(staticTexts["Leland Stanford"].exists) - XCTAssertTrue(staticTexts[email].exists) - XCTAssertTrue(staticTexts["Gender Identity, Choose not to answer"].exists) - - - XCTAssertTrue(navigationBars.buttons["Close"].waitForExistence(timeout: 0.5)) - navigationBars.buttons["Close"].tap() - - XCTAssertTrue(navigationBars.buttons["Your Account"].waitForExistence(timeout: 2)) - navigationBars.buttons["Your Account"].tap() - - XCTAssertTrue(navigationBars.buttons["Edit"].waitForExistence(timeout: 2)) - navigationBars.buttons["Edit"].tap() - - usleep(500_00) - XCTAssertFalse(navigationBars.buttons["Close"].exists) - - XCTAssertTrue(buttons["Delete Account"].waitForExistence(timeout: 2)) - buttons["Delete Account"].tap() - - let alert = "Are you sure you want to delete your account?" - XCTAssertTrue(alerts[alert].waitForExistence(timeout: 6.0)) - alerts[alert].buttons["Delete"].tap() - - XCTAssertTrue(alerts["Authentication Required"].waitForExistence(timeout: 2.0)) - XCTAssertTrue(alerts["Authentication Required"].secureTextFields["Password"].waitForExistence(timeout: 0.5)) - typeText("StanfordRocks") // the password field has focus already - XCTAssertTrue(alerts["Authentication Required"].buttons["Login"].waitForExistence(timeout: 0.5)) - alerts["Authentication Required"].buttons["Login"].tap() - - sleep(2) - - // Login - try textFields["E-Mail Address"].enter(value: email) - try secureTextFields["Password"].enter(value: "StanfordRocks") - - XCTAssertTrue(buttons["Login"].waitForExistence(timeout: 0.5)) - buttons["Login"].tap() - - XCTAssertTrue(alerts["Invalid Credentials"].waitForExistence(timeout: 2.0)) - } -} diff --git a/TemplateApplicationUITests/SchedulerTests.swift b/TemplateApplicationUITests/SchedulerTests.swift deleted file mode 100644 index c69d84e..0000000 --- a/TemplateApplicationUITests/SchedulerTests.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// This source file is part of the Stanford Spezi Template Application open-source project -// -// SPDX-FileCopyrightText: 2023 Stanford University -// -// SPDX-License-Identifier: MIT -// - -import XCTest -import XCTestExtensions - - -class SchedulerTests: XCTestCase { - override func setUpWithError() throws { - try super.setUpWithError() - - continueAfterFailure = false - - let app = XCUIApplication() - app.launchArguments = ["--skipOnboarding", "--testSchedule"] - app.deleteAndLaunch(withSpringboardAppName: "TemplateApplication") - } - - - func testScheduler() throws { - let app = XCUIApplication() - - XCTAssertTrue(app.tabBars["Tab Bar"].buttons["Schedule"].waitForExistence(timeout: 2)) - app.tabBars["Tab Bar"].buttons["Schedule"].tap() - - XCTAssertTrue(app.staticTexts["Start Questionnaire"].waitForExistence(timeout: 2)) - app.staticTexts["Start Questionnaire"].tap() - - XCTAssertTrue(app.staticTexts["Social Support"].waitForExistence(timeout: 2)) - } -} diff --git a/codecov.yml b/codecov.yml index 8110181..13e820b 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # @@ -29,8 +29,8 @@ coverage: target: auto threshold: 5.0 ignore: -- ^TemplateApplicationUITests.* -- ^TemplateApplicationTests.* +- ^BehaviorUITests.* +- ^BehaviorTests.* parsers: gcov: branch_detection: diff --git a/fastlane/.gitignore b/fastlane/.gitignore index 6c81710..20682f7 100644 --- a/fastlane/.gitignore +++ b/fastlane/.gitignore @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # diff --git a/fastlane/Appfile b/fastlane/Appfile index 214ae7c..2a7b04b 100644 --- a/fastlane/Appfile +++ b/fastlane/Appfile @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # @@ -9,5 +9,5 @@ # For more information about the Appfile, see: # https://docs.fastlane.tools/advanced/#appfile -app_identifier "edu.stanford.spezi.templateapplication" # The bundle identifier of your app +app_identifier "edu.stanford.cs342.2024.behavior" # The bundle identifier of your app apple_id ENV["APPLE_ID"] # Your Apple email address \ No newline at end of file diff --git a/fastlane/Fastfile b/fastlane/Fastfile index ce180ba..a04c36a 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,5 +1,5 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the Behavior based on the Stanford Spezi Template Application project # # SPDX-FileCopyrightText: 2023 Stanford University # @@ -49,7 +49,7 @@ platform :ios do xcargs: "-skipPackagePluginValidation", export_options: { provisioningProfiles: { - "edu.stanford.spezi.templateapplication" => "Spezi Template Application" + "edu.stanford.cs342.2024.behavior" => "CS342 2024 Behavior" } } ) diff --git a/fastlane/README.md.license b/fastlane/README.md.license index 8ffe29f..2fed641 100644 --- a/fastlane/README.md.license +++ b/fastlane/README.md.license @@ -1,5 +1,5 @@ -This source file is part of the Stanford Spezi Template Application open-source project +This source file is part of the Behavior based on the Stanford Spezi Template Application project SPDX-FileCopyrightText: 2023 Stanford University diff --git a/firebase.json.license b/firebase.json.license index 9f5551c..5e0d23c 100644 --- a/firebase.json.license +++ b/firebase.json.license @@ -1,4 +1,4 @@ -This source file is part of the Stanford Spezi Template Application open-source project +This source file is part of the Behavior based on the Stanford Spezi Template Application project SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) diff --git a/firebasestorage.rules.license b/firebasestorage.rules.license index 9f5551c..5e0d23c 100644 --- a/firebasestorage.rules.license +++ b/firebasestorage.rules.license @@ -1,4 +1,4 @@ -This source file is part of the Stanford Spezi Template Application open-source project +This source file is part of the Behavior based on the Stanford Spezi Template Application project SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) diff --git a/firestore.rules.license b/firestore.rules.license index 9f5551c..5e0d23c 100644 --- a/firestore.rules.license +++ b/firestore.rules.license @@ -1,4 +1,4 @@ -This source file is part of the Stanford Spezi Template Application open-source project +This source file is part of the Behavior based on the Stanford Spezi Template Application project SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md)