diff --git a/.firebaserc b/.firebaserc index a46b46e..88fa0f4 100644 --- a/.firebaserc +++ b/.firebaserc @@ -1,5 +1,5 @@ { "projects": { - "default": "stanfordspezitemplateapp" + "default": "cs342-2025-example-app" } } diff --git a/.firebaserc.license b/.firebaserc.license index 9f5551c..68b80a8 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 CS342 Example Application 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 537701e..fee04fa 100644 --- a/.github/workflows/beta-deployment.yml +++ b/.github/workflows/beta-deployment.yml @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # @@ -36,11 +36,11 @@ jobs: iosapptestflightdeployment: name: iOS App TestFlight Deployment needs: buildandtest - uses: StanfordSpezi/.github/.github/workflows/xcodebuild-or-fastlane.yml@v2 + uses: CS342/.github/.github/workflows/xcodebuild-or-fastlane.yml@v2 permissions: contents: read with: - googleserviceinfoplistpath: 'TemplateApplication/Supporting Files/GoogleService-Info.plist' + googleserviceinfoplistpath: 'CS342ExampleApplication/Supporting Files/GoogleService-Info.plist' setupsigning: true fastlanelane: beta secrets: inherit diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 931d965..835fbe3 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # @@ -20,11 +20,11 @@ concurrency: jobs: 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 permissions: contents: read with: - artifactname: TemplateApplication.xcresult + artifactname: CS342ExampleApplication.xcresult runsonlabels: '["macOS", "self-hosted"]' setupfirebaseemulator: true customcommand: "firebase emulators:exec 'fastlane test'" @@ -35,6 +35,6 @@ jobs: permissions: contents: read with: - coveragereports: TemplateApplication.xcresult + coveragereports: CS342ExampleApplication.xcresult secrets: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/documentation-deployment.yml b/.github/workflows/documentation-deployment.yml deleted file mode 100644 index 7d33253..0000000 --- a/.github/workflows/documentation-deployment.yml +++ /dev/null @@ -1,33 +0,0 @@ -# -# This source file is part of the Stanford Spezi Template Application 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 - pull_request: - workflow_dispatch: - -concurrency: - group: Documentation-Deployment-${{ github.ref }} - cancel-in-progress: true - -jobs: - docs: - name: Documentation Deployment - uses: StanfordBDHG/.github/.github/workflows/docc-github-pages.yml@v2 - permissions: - contents: read - pages: write - id-token: write - with: - scheme: 'TemplateApplication' - dryrun: ${{ github.ref_name != 'main' }} - xcodeversion: "16.1" # Temporary workaround for: https://github.com/actions/runner-images/issues/11335. Remove when resolved. diff --git a/.github/workflows/monthly-markdown-link-check.yml.yml b/.github/workflows/monthly-markdown-link-check.yml.yml index 812b899..b25602b 100644 --- a/.github/workflows/monthly-markdown-link-check.yml.yml +++ b/.github/workflows/monthly-markdown-link-check.yml.yml @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University and the project authors (see CONTRIBUTORS.md) +# SPDX-FileCopyrightText: 2025 Stanford University and the project authors (see CONTRIBUTORS.md) # # SPDX-License-Identifier: MIT # diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 3e70968..596a21b 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -30,7 +30,7 @@ jobs: contents: read periphery: name: Periphery - uses: StanfordSpezi/.github/.github/workflows/periphery.yml@v2 + uses: CS342/.github/.github/workflows/periphery.yml@v2 permissions: contents: read with: diff --git a/.gitignore b/.gitignore index ba04bcf..718a5fc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # @@ -12,7 +12,7 @@ .derivedData .build .docs -!TemplateApplication.xcodeproj +!CS342ExampleApplication.xcodeproj # IDE related folders .idea @@ -30,7 +30,7 @@ xcuserdata/ # Tests report.junit report.html -TemplateApplication.xcresult +CS342ExampleApplication.xcresult # Logs logs @@ -45,4 +45,4 @@ firebase-debug.*.log* .firebase/ # Swift Package List -TemplateApplication/package-list.json +CS342ExampleApplication/package-list.json diff --git a/.periphery.yml b/.periphery.yml index de6f840..f6964a3 100644 --- a/.periphery.yml +++ b/.periphery.yml @@ -1,15 +1,15 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # -project: TemplateApplication.xcodeproj +project: CS342ExampleApplication.xcodeproj schemes: -- TemplateApplication +- CS342ExampleApplication targets: -- TemplateApplication -- TemplateApplicationTests -- TemplateApplicationUITests +- CS342ExampleApplication +- CS342ExampleApplicationTests +- CS342ExampleApplicationUITests diff --git a/.reuse/dep5 b/.reuse/dep5 index c3f7405..c1824ca 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -1,6 +1,6 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Files: TemplateApplication.xcodeproj/* +Files: CS342ExampleApplication.xcodeproj/* Copyright: 2024 Stanford University and the project authors (see CONTRIBUTORS.md) License: MIT -Comment: All Xcode Project Configuration Files are part of the Stanford Spezi Template Application open-source project. +Comment: All Xcode Project Configuration Files are part of the CS342 Example Application based on the Stanford Spezi Template Application project. diff --git a/.swiftlint.yml b/.swiftlint.yml index 9c6c5a8..9b62f33 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # diff --git a/CITATION.cff b/CITATION.cff index d44fdd4..6dc3970 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # @@ -27,6 +27,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: "CS342 Example Application" diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 4bae8d7..c93dfc8 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,14 +1,14 @@ -Template Application Contributors +CS342 Example Application Contributors ================================= * [Paul Schmiedmayer](https://github.com/PSchmiedmayer) diff --git a/TemplateApplication.xcodeproj/project.pbxproj b/CS342ExampleApplication.xcodeproj/project.pbxproj similarity index 85% rename from TemplateApplication.xcodeproj/project.pbxproj rename to CS342ExampleApplication.xcodeproj/project.pbxproj index 1a9c1c0..ac277c3 100644 --- a/TemplateApplication.xcodeproj/project.pbxproj +++ b/CS342ExampleApplication.xcodeproj/project.pbxproj @@ -7,13 +7,13 @@ objects = { /* Begin PBXBuildFile section */ - 2F1AC9DF2B4E840E00C24973 /* TemplateApplication.docc in Sources */ = {isa = PBXBuildFile; fileRef = 2F1AC9DE2B4E840E00C24973 /* TemplateApplication.docc */; }; + 2F1AC9DF2B4E840E00C24973 /* CS342ExampleApplication.docc in Sources */ = {isa = PBXBuildFile; fileRef = 2F1AC9DE2B4E840E00C24973 /* CS342ExampleApplication.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 */; }; + 2F4E23832989D51F0013F3D9 /* CS342ExampleApplicationTestingSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E23822989D51F0013F3D9 /* CS342ExampleApplicationTestingSetup.swift */; }; 2F4E23872989DB360013F3D9 /* ContactsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E23862989DB360013F3D9 /* ContactsTests.swift */; }; - 2F5E32BD297E05EA003432F8 /* TemplateApplicationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F5E32BC297E05EA003432F8 /* TemplateApplicationDelegate.swift */; }; + 2F5E32BD297E05EA003432F8 /* CS342ExampleApplicationDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F5E32BC297E05EA003432F8 /* CS342ExampleApplicationDelegate.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 */; }; @@ -34,7 +34,7 @@ 2FE5DC4029EDD7EE004B9AB4 /* FeatureFlags.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC3E29EDD7ED004B9AB4 /* FeatureFlags.swift */; }; 2FE5DC4129EDD7EE004B9AB4 /* StorageKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC3F29EDD7EE004B9AB4 /* StorageKeys.swift */; }; 2FE5DC4E29EDD7FA004B9AB4 /* ScheduleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4829EDD7FA004B9AB4 /* ScheduleView.swift */; }; - 2FE5DC5229EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4C29EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift */; }; + 2FE5DC5229EDD7FA004B9AB4 /* CS342ExampleApplicationScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DC4C29EDD7FA004B9AB4 /* CS342ExampleApplicationScheduler.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 */; }; @@ -49,13 +49,13 @@ 2FE5DC9929EDD9D9004B9AB4 /* XCTestExtensions in Frameworks */ = {isa = PBXBuildFile; productRef = 2FE5DC9829EDD9D9004B9AB4 /* XCTestExtensions */; }; 2FE5DC9C29EDD9EF004B9AB4 /* XCTHealthKit in Frameworks */ = {isa = PBXBuildFile; productRef = 2FE5DC9B29EDD9EF004B9AB4 /* XCTHealthKit */; }; 2FE5DCB129EE6107004B9AB4 /* AccountOnboarding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE5DCAC29EE6107004B9AB4 /* AccountOnboarding.swift */; }; - 2FF53D8D2A8729D600042B76 /* TemplateApplicationStandard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF53D8C2A8729D600042B76 /* TemplateApplicationStandard.swift */; }; + 2FF53D8D2A8729D600042B76 /* CS342ExampleApplicationStandard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF53D8C2A8729D600042B76 /* CS342ExampleApplicationStandard.swift */; }; 5680DD3E2AB8CD84004E6D4A /* ContributionsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5680DD3D2AB8CD84004E6D4A /* ContributionsTest.swift */; }; 56E708352BB06B7100B08F0A /* SpeziLicense in Frameworks */ = {isa = PBXBuildFile; productRef = 56E708342BB06B7100B08F0A /* SpeziLicense */; }; 56E7083B2BB06F6F00B08F0A /* SwiftPackageList in Frameworks */ = {isa = PBXBuildFile; productRef = 56E7083A2BB06F6F00B08F0A /* SwiftPackageList */; }; - 653A2551283387FE005D4D48 /* TemplateApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A2550283387FE005D4D48 /* TemplateApplication.swift */; }; + 653A2551283387FE005D4D48 /* CS342ExampleApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A2550283387FE005D4D48 /* CS342ExampleApplication.swift */; }; 653A255528338800005D4D48 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 653A255428338800005D4D48 /* Assets.xcassets */; }; - 653A256228338800005D4D48 /* TemplateApplicationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A256128338800005D4D48 /* TemplateApplicationTests.swift */; }; + 653A256228338800005D4D48 /* CS342ExampleApplicationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A256128338800005D4D48 /* CS342ExampleApplicationTests.swift */; }; 653A256C28338800005D4D48 /* SchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A256B28338800005D4D48 /* SchedulerTests.swift */; }; 9733CFC62A8066DE001B7ABC /* SpeziOnboarding in Frameworks */ = {isa = PBXBuildFile; productRef = 2FE5DC8029EDD91D004B9AB4 /* SpeziOnboarding */; }; 9739A0C62AD7B5730084BEA5 /* FirebaseStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 9739A0C52AD7B5730084BEA5 /* FirebaseStorage */; }; @@ -78,28 +78,28 @@ containerPortal = 653A2545283387FE005D4D48 /* Project object */; proxyType = 1; remoteGlobalIDString = 653A254C283387FE005D4D48; - remoteInfo = TemplateApplication; + remoteInfo = CS342ExampleApplication; }; 653A256828338800005D4D48 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 653A2545283387FE005D4D48 /* Project object */; proxyType = 1; remoteGlobalIDString = 653A254C283387FE005D4D48; - remoteInfo = TemplateApplication; + remoteInfo = CS342ExampleApplication; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 2F1AC9DE2B4E840E00C24973 /* TemplateApplication.docc */ = {isa = PBXFileReference; lastKnownFileType = folder.documentationcatalog; path = TemplateApplication.docc; sourceTree = ""; }; + 2F1AC9DE2B4E840E00C24973 /* CS342ExampleApplication.docc */ = {isa = PBXFileReference; lastKnownFileType = folder.documentationcatalog; path = CS342ExampleApplication.docc; 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 = ""; }; + 2F4E23822989D51F0013F3D9 /* CS342ExampleApplicationTestingSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CS342ExampleApplicationTestingSetup.swift; sourceTree = ""; }; 2F4E23862989DB360013F3D9 /* ContactsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsTests.swift; sourceTree = ""; }; - 2F5E32BC297E05EA003432F8 /* TemplateApplicationDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateApplicationDelegate.swift; sourceTree = ""; }; + 2F5E32BC297E05EA003432F8 /* CS342ExampleApplicationDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CS342ExampleApplicationDelegate.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 /* CS342ExampleApplication.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = CS342ExampleApplication.entitlements; sourceTree = ""; }; + 2FC94CD4298B0A1D009C8209 /* CS342ExampleApplication.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = CS342ExampleApplication.xctestplan; sourceTree = ""; }; 2FC975A72978F11A00BA99FE /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.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 = ""; }; @@ -112,18 +112,18 @@ 2FE5DC3E29EDD7ED004B9AB4 /* FeatureFlags.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeatureFlags.swift; sourceTree = ""; }; 2FE5DC3F29EDD7EE004B9AB4 /* StorageKeys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageKeys.swift; sourceTree = ""; }; 2FE5DC4829EDD7FA004B9AB4 /* ScheduleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduleView.swift; sourceTree = ""; }; - 2FE5DC4C29EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TemplateApplicationScheduler.swift; sourceTree = ""; }; + 2FE5DC4C29EDD7FA004B9AB4 /* CS342ExampleApplicationScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CS342ExampleApplicationScheduler.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 /* CS342ExampleApplicationStandard.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CS342ExampleApplicationStandard.swift; sourceTree = ""; }; 5680DD3D2AB8CD84004E6D4A /* ContributionsTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContributionsTest.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 /* CS342ExampleApplication.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CS342ExampleApplication.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 653A2550283387FE005D4D48 /* CS342ExampleApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CS342ExampleApplication.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; }; + 653A255D28338800005D4D48 /* CS342ExampleApplicationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CS342ExampleApplicationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 653A256128338800005D4D48 /* CS342ExampleApplicationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CS342ExampleApplicationTests.swift; sourceTree = ""; }; + 653A256728338800005D4D48 /* CS342ExampleApplicationUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CS342ExampleApplicationUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 653A256B28338800005D4D48 /* SchedulerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SchedulerTests.swift; sourceTree = ""; }; 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 = ""; }; @@ -189,10 +189,10 @@ 2FC9759D2978E30800BA99FE /* Supporting Files */ = { isa = PBXGroup; children = ( - 2FAEC07F297F583900C11C42 /* TemplateApplication.entitlements */, + 2FAEC07F297F583900C11C42 /* CS342ExampleApplication.entitlements */, 653A258928339462005D4D48 /* Info.plist */, 2F6025CA29BBE70F0045459E /* GoogleService-Info.plist */, - 2F1AC9DE2B4E840E00C24973 /* TemplateApplication.docc */, + 2F1AC9DE2B4E840E00C24973 /* CS342ExampleApplication.docc */, ); path = "Supporting Files"; sourceTree = ""; @@ -237,7 +237,7 @@ 2FE5DC4D29EDD7FA004B9AB4 /* Bundle+Questionnaire.swift */, 2FE5DC4829EDD7FA004B9AB4 /* ScheduleView.swift */, A98FF2B02CD131F500DFC949 /* EventView.swift */, - 2FE5DC4C29EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift */, + 2FE5DC4C29EDD7FA004B9AB4 /* CS342ExampleApplicationScheduler.swift */, ); path = Schedule; sourceTree = ""; @@ -254,10 +254,10 @@ 653A2544283387FE005D4D48 = { isa = PBXGroup; children = ( - 2FC94CD4298B0A1D009C8209 /* TemplateApplication.xctestplan */, - 653A254F283387FE005D4D48 /* TemplateApplication */, - 653A256028338800005D4D48 /* TemplateApplicationTests */, - 653A256A28338800005D4D48 /* TemplateApplicationUITests */, + 2FC94CD4298B0A1D009C8209 /* CS342ExampleApplication.xctestplan */, + 653A254F283387FE005D4D48 /* CS342ExampleApplication */, + 653A256028338800005D4D48 /* CS342ExampleApplicationTests */, + 653A256A28338800005D4D48 /* CS342ExampleApplicationUITests */, 653A254E283387FE005D4D48 /* Products */, 653A258B283395A7005D4D48 /* Frameworks */, ); @@ -266,21 +266,21 @@ 653A254E283387FE005D4D48 /* Products */ = { isa = PBXGroup; children = ( - 653A254D283387FE005D4D48 /* TemplateApplication.app */, - 653A255D28338800005D4D48 /* TemplateApplicationTests.xctest */, - 653A256728338800005D4D48 /* TemplateApplicationUITests.xctest */, + 653A254D283387FE005D4D48 /* CS342ExampleApplication.app */, + 653A255D28338800005D4D48 /* CS342ExampleApplicationTests.xctest */, + 653A256728338800005D4D48 /* CS342ExampleApplicationUITests.xctest */, ); name = Products; sourceTree = ""; }; - 653A254F283387FE005D4D48 /* TemplateApplication */ = { + 653A254F283387FE005D4D48 /* CS342ExampleApplication */ = { isa = PBXGroup; children = ( 2FC975A72978F11A00BA99FE /* HomeView.swift */, - 653A2550283387FE005D4D48 /* TemplateApplication.swift */, - 2F5E32BC297E05EA003432F8 /* TemplateApplicationDelegate.swift */, - 2FF53D8C2A8729D600042B76 /* TemplateApplicationStandard.swift */, - 2F4E23822989D51F0013F3D9 /* TemplateApplicationTestingSetup.swift */, + 653A2550283387FE005D4D48 /* CS342ExampleApplication.swift */, + 2F5E32BC297E05EA003432F8 /* CS342ExampleApplicationDelegate.swift */, + 2FF53D8C2A8729D600042B76 /* CS342ExampleApplicationStandard.swift */, + 2F4E23822989D51F0013F3D9 /* CS342ExampleApplicationTestingSetup.swift */, A9720E412ABB68B300872D23 /* Account */, 2FE5DC2729EDD38D004B9AB4 /* Contacts */, A9A3DCC62C75CB8D00FC9B69 /* Firestore */, @@ -290,18 +290,18 @@ 2FE5DC3C29EDD7DA004B9AB4 /* SharedContext */, 2FC9759D2978E30800BA99FE /* Supporting Files */, ); - path = TemplateApplication; + path = CS342ExampleApplication; sourceTree = ""; }; - 653A256028338800005D4D48 /* TemplateApplicationTests */ = { + 653A256028338800005D4D48 /* CS342ExampleApplicationTests */ = { isa = PBXGroup; children = ( - 653A256128338800005D4D48 /* TemplateApplicationTests.swift */, + 653A256128338800005D4D48 /* CS342ExampleApplicationTests.swift */, ); - path = TemplateApplicationTests; + path = CS342ExampleApplicationTests; sourceTree = ""; }; - 653A256A28338800005D4D48 /* TemplateApplicationUITests */ = { + 653A256A28338800005D4D48 /* CS342ExampleApplicationUITests */ = { isa = PBXGroup; children = ( 2F4E237D2989A2FE0013F3D9 /* OnboardingTests.swift */, @@ -309,7 +309,7 @@ 2F4E23862989DB360013F3D9 /* ContactsTests.swift */, 5680DD3D2AB8CD84004E6D4A /* ContributionsTest.swift */, ); - path = TemplateApplicationUITests; + path = CS342ExampleApplicationUITests; sourceTree = ""; }; 653A258B283395A7005D4D48 /* Frameworks */ = { @@ -340,9 +340,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 653A254C283387FE005D4D48 /* TemplateApplication */ = { + 653A254C283387FE005D4D48 /* CS342ExampleApplication */ = { isa = PBXNativeTarget; - buildConfigurationList = 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplication" */; + buildConfigurationList = 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "CS342ExampleApplication" */; buildPhases = ( 653A2549283387FE005D4D48 /* Sources */, 653A254A283387FE005D4D48 /* Frameworks */, @@ -354,7 +354,7 @@ A9E1D3432C67A3F800CED217 /* PBXTargetDependency */, 56E7083D2BB06FCA00B08F0A /* PBXTargetDependency */, ); - name = TemplateApplication; + name = CS342ExampleApplication; packageProductDependencies = ( 2F49B7752980407B00BCB272 /* Spezi */, 2FE5DC6329EDD883004B9AB4 /* SpeziAccount */, @@ -381,13 +381,13 @@ A94DDFFC2CBD1190004930BD /* SpeziNotifications */, A9947BEF2CC131ED0068AA8A /* SpeziSchedulerUI */, ); - productName = TemplateApplication; - productReference = 653A254D283387FE005D4D48 /* TemplateApplication.app */; + productName = CS342ExampleApplication; + productReference = 653A254D283387FE005D4D48 /* CS342ExampleApplication.app */; productType = "com.apple.product-type.application"; }; - 653A255C28338800005D4D48 /* TemplateApplicationTests */ = { + 653A255C28338800005D4D48 /* CS342ExampleApplicationTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplicationTests" */; + buildConfigurationList = 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "CS342ExampleApplicationTests" */; buildPhases = ( 653A255928338800005D4D48 /* Sources */, 653A255A28338800005D4D48 /* Frameworks */, @@ -399,14 +399,14 @@ A9E1D3462C67B0A300CED217 /* PBXTargetDependency */, 653A255F28338800005D4D48 /* PBXTargetDependency */, ); - name = TemplateApplicationTests; - productName = TemplateApplicationTests; - productReference = 653A255D28338800005D4D48 /* TemplateApplicationTests.xctest */; + name = CS342ExampleApplicationTests; + productName = CS342ExampleApplicationTests; + productReference = 653A255D28338800005D4D48 /* CS342ExampleApplicationTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 653A256628338800005D4D48 /* TemplateApplicationUITests */ = { + 653A256628338800005D4D48 /* CS342ExampleApplicationUITests */ = { isa = PBXNativeTarget; - buildConfigurationList = 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplicationUITests" */; + buildConfigurationList = 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "CS342ExampleApplicationUITests" */; buildPhases = ( 653A256328338800005D4D48 /* Sources */, 653A256428338800005D4D48 /* Frameworks */, @@ -418,15 +418,15 @@ A9E1D3482C67B0A700CED217 /* PBXTargetDependency */, 653A256928338800005D4D48 /* PBXTargetDependency */, ); - name = TemplateApplicationUITests; + name = CS342ExampleApplicationUITests; packageProductDependencies = ( 2FE5DC9829EDD9D9004B9AB4 /* XCTestExtensions */, 2FE5DC9B29EDD9EF004B9AB4 /* XCTHealthKit */, A9947BF32CC142BD0068AA8A /* XCTSpeziNotifications */, A994264D2CD25EB3002F8BD5 /* XCTSpeziAccount */, ); - productName = TemplateApplicationUITests; - productReference = 653A256728338800005D4D48 /* TemplateApplicationUITests.xctest */; + productName = CS342ExampleApplicationUITests; + productReference = 653A256728338800005D4D48 /* CS342ExampleApplicationUITests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; }; /* End PBXNativeTarget section */ @@ -452,7 +452,7 @@ }; }; }; - buildConfigurationList = 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "TemplateApplication" */; + buildConfigurationList = 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "CS342ExampleApplication" */; compatibilityVersion = "Xcode 15.3"; developmentRegion = en; hasScannedForEncodings = 0; @@ -486,9 +486,9 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 653A254C283387FE005D4D48 /* TemplateApplication */, - 653A255C28338800005D4D48 /* TemplateApplicationTests */, - 653A256628338800005D4D48 /* TemplateApplicationUITests */, + 653A254C283387FE005D4D48 /* CS342ExampleApplication */, + 653A255C28338800005D4D48 /* CS342ExampleApplicationTests */, + 653A256628338800005D4D48 /* CS342ExampleApplicationUITests */, ); }; /* End PBXProject section */ @@ -538,17 +538,17 @@ A9DFE8A92ABE551400428242 /* AccountButton.swift in Sources */, A9A3DCC82C75CBBD00FC9B69 /* FirebaseConfiguration.swift in Sources */, 2FE5DC3729EDD7CA004B9AB4 /* OnboardingFlow.swift in Sources */, - 2F1AC9DF2B4E840E00C24973 /* TemplateApplication.docc in Sources */, - 2FF53D8D2A8729D600042B76 /* TemplateApplicationStandard.swift in Sources */, + 2F1AC9DF2B4E840E00C24973 /* CS342ExampleApplication.docc in Sources */, + 2FF53D8D2A8729D600042B76 /* CS342ExampleApplicationStandard.swift in Sources */, A9720E432ABB68CC00872D23 /* AccountSetupHeader.swift in Sources */, 2FE5DC4029EDD7EE004B9AB4 /* FeatureFlags.swift in Sources */, - 2F4E23832989D51F0013F3D9 /* TemplateApplicationTestingSetup.swift in Sources */, + 2F4E23832989D51F0013F3D9 /* CS342ExampleApplicationTestingSetup.swift in Sources */, A98FF2B12CD131F500DFC949 /* EventView.swift in Sources */, 2FE5DC5329EDD7FA004B9AB4 /* Bundle+Questionnaire.swift in Sources */, - 2F5E32BD297E05EA003432F8 /* TemplateApplicationDelegate.swift in Sources */, - 2FE5DC5229EDD7FA004B9AB4 /* TemplateApplicationScheduler.swift in Sources */, + 2F5E32BD297E05EA003432F8 /* CS342ExampleApplicationDelegate.swift in Sources */, + 2FE5DC5229EDD7FA004B9AB4 /* CS342ExampleApplicationScheduler.swift in Sources */, A9FE7AD02AA39BAB0077B045 /* AccountSheet.swift in Sources */, - 653A2551283387FE005D4D48 /* TemplateApplication.swift in Sources */, + 653A2551283387FE005D4D48 /* CS342ExampleApplication.swift in Sources */, 2FE5DC3629EDD7CA004B9AB4 /* HealthKitPermissions.swift in Sources */, 2F65B44E2A3B8B0600A36932 /* NotificationPermissions.swift in Sources */, 2FE5DC2629EDD38A004B9AB4 /* Contacts.swift in Sources */, @@ -559,7 +559,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653A256228338800005D4D48 /* TemplateApplicationTests.swift in Sources */, + 653A256228338800005D4D48 /* CS342ExampleApplicationTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -583,12 +583,12 @@ }; 653A255F28338800005D4D48 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 653A254C283387FE005D4D48 /* TemplateApplication */; + target = 653A254C283387FE005D4D48 /* CS342ExampleApplication */; targetProxy = 653A255E28338800005D4D48 /* PBXContainerItemProxy */; }; 653A256928338800005D4D48 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 653A254C283387FE005D4D48 /* TemplateApplication */; + target = 653A254C283387FE005D4D48 /* CS342ExampleApplication */; targetProxy = 653A256828338800005D4D48 /* PBXContainerItemProxy */; }; A9E1D3432C67A3F800CED217 /* PBXTargetDependency */ = { @@ -676,7 +676,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 = "CS342ExampleApplication/Supporting Files/CS342ExampleApplication.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -684,33 +684,33 @@ DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "TemplateApplication/Supporting Files/Info.plist"; + INFOPLIST_FILE = "CS342ExampleApplication/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 CS342 Example Application uses the step count to demonstrate Spezi's integration with HealthKit."; + INFOPLIST_KEY_NSHealthUpdateUsageDescription = "The CS342 Example Application 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_UICS342ExampleApplicationlicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UICS342ExampleApplicationlicationSupportsIndirectInputEvents = 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 = 18.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.2025.cs342exampleapp; 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-CS342ExampleApplication_LOC_STRINGS" = YES; SWIFT_EMIT_LOC_STRINGS = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -726,11 +726,11 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplication.tests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2025.cs342exampleapp.tests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-CS342ExampleApplication_LOC_STRINGS" = NO; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TemplateApplication.app/TemplateApplication"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CS342ExampleApplication.app/CS342ExampleApplication"; }; name = Test; }; @@ -743,11 +743,11 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplicationuitests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2025.cs342exampleappuitests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-CS342ExampleApplication_LOC_STRINGS" = NO; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = TemplateApplication; + TEST_TARGET_NAME = CS342ExampleApplication; }; name = Test; }; @@ -880,7 +880,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 = "CS342ExampleApplication/Supporting Files/CS342ExampleApplication.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -888,33 +888,33 @@ DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "TemplateApplication/Supporting Files/Info.plist"; + INFOPLIST_FILE = "CS342ExampleApplication/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 CS342 Example Application uses the step count to demonstrate Spezi's integration with HealthKit."; + INFOPLIST_KEY_NSHealthUpdateUsageDescription = "The CS342 Example Application 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_UICS342ExampleApplicationlicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UICS342ExampleApplicationlicationSupportsIndirectInputEvents = 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 = 18.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.2025.cs342exampleapp; 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-CS342ExampleApplication_LOC_STRINGS" = YES; SWIFT_EMIT_LOC_STRINGS = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -925,7 +925,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 = "CS342ExampleApplication/Supporting Files/CS342ExampleApplication.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; @@ -935,34 +935,34 @@ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 637867499T; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = "TemplateApplication/Supporting Files/Info.plist"; + INFOPLIST_FILE = "CS342ExampleApplication/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 CS342 Example Application uses the step count to demonstrate Spezi's integration with HealthKit."; + INFOPLIST_KEY_NSHealthUpdateUsageDescription = "The CS342 Example Application 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_UICS342ExampleApplicationlicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UICS342ExampleApplicationlicationSupportsIndirectInputEvents = 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 = 18.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.2025.cs342exampleapp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "Spezi Template Application"; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "CS342 2025 Example App"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = YES; + "SWIFT_ELicenseRef-CS342ExampleApplication_LOC_STRINGS" = YES; SWIFT_EMIT_LOC_STRINGS = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -978,11 +978,11 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplication.tests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2025.cs342exampleapp.tests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-CS342ExampleApplication_LOC_STRINGS" = NO; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TemplateApplication.app/TemplateApplication"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CS342ExampleApplication.app/CS342ExampleApplication"; }; name = Debug; }; @@ -996,11 +996,11 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplication.tests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2025.cs342exampleapp.tests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-CS342ExampleApplication_LOC_STRINGS" = NO; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/TemplateApplication.app/TemplateApplication"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/CS342ExampleApplication.app/CS342ExampleApplication"; }; name = Release; }; @@ -1013,11 +1013,11 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplicationuitests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2025.cs342exampleappuitests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-CS342ExampleApplication_LOC_STRINGS" = NO; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = TemplateApplication; + TEST_TARGET_NAME = CS342ExampleApplication; }; name = Debug; }; @@ -1030,18 +1030,18 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.spezi.templateapplicationuitests; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.2025.cs342exampleappuitests; PRODUCT_NAME = "$(TARGET_NAME)"; - "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + "SWIFT_ELicenseRef-CS342ExampleApplication_LOC_STRINGS" = NO; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = TemplateApplication; + TEST_TARGET_NAME = CS342ExampleApplication; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "TemplateApplication" */ = { + 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "CS342ExampleApplication" */ = { isa = XCConfigurationList; buildConfigurations = ( 653A256F28338800005D4D48 /* Debug */, @@ -1051,7 +1051,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplication" */ = { + 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "CS342ExampleApplication" */ = { isa = XCConfigurationList; buildConfigurations = ( 653A257228338800005D4D48 /* Debug */, @@ -1061,7 +1061,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplicationTests" */ = { + 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "CS342ExampleApplicationTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 653A257528338800005D4D48 /* Debug */, @@ -1071,7 +1071,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "TemplateApplicationUITests" */ = { + 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "CS342ExampleApplicationUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( 653A257828338800005D4D48 /* Debug */, diff --git a/TemplateApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/CS342ExampleApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from TemplateApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to CS342ExampleApplication.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/CS342ExampleApplication.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to CS342ExampleApplication.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/CS342ExampleApplication.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from TemplateApplication.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to CS342ExampleApplication.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/TemplateApplication.xcodeproj/xcshareddata/xcschemes/TemplateApplication.xcscheme b/CS342ExampleApplication.xcodeproj/xcshareddata/xcschemes/CS342ExampleApplication.xcscheme similarity index 78% rename from TemplateApplication.xcodeproj/xcshareddata/xcschemes/TemplateApplication.xcscheme rename to CS342ExampleApplication.xcodeproj/xcshareddata/xcschemes/CS342ExampleApplication.xcscheme index 0a585a0..7fab46a 100644 --- a/TemplateApplication.xcodeproj/xcshareddata/xcschemes/TemplateApplication.xcscheme +++ b/CS342ExampleApplication.xcodeproj/xcshareddata/xcschemes/CS342ExampleApplication.xcscheme @@ -15,9 +15,9 @@ + BuildableName = "CS342ExampleApplication.app" + BlueprintName = "CS342ExampleApplication" + ReferencedContainer = "container:CS342ExampleApplication.xcodeproj"> @@ -29,7 +29,7 @@ shouldUseLaunchSchemeArgsEnv = "YES"> @@ -39,9 +39,9 @@ + BuildableName = "CS342ExampleApplicationTests.xctest" + BlueprintName = "CS342ExampleApplicationTests" + ReferencedContainer = "container:CS342ExampleApplication.xcodeproj"> + BuildableName = "CS342ExampleApplicationUITests.xctest" + BlueprintName = "CS342ExampleApplicationUITests" + ReferencedContainer = "container:CS342ExampleApplication.xcodeproj"> @@ -71,9 +71,9 @@ + BuildableName = "CS342ExampleApplication.app" + BlueprintName = "CS342ExampleApplication" + ReferencedContainer = "container:CS342ExampleApplication.xcodeproj"> @@ -117,9 +117,9 @@ + BuildableName = "CS342ExampleApplication.app" + BlueprintName = "CS342ExampleApplication" + ReferencedContainer = "container:CS342ExampleApplication.xcodeproj"> diff --git a/TemplateApplication.xctestplan b/CS342ExampleApplication.xctestplan similarity index 57% rename from TemplateApplication.xctestplan rename to CS342ExampleApplication.xctestplan index 8a7fdd9..1f03f2b 100644 --- a/TemplateApplication.xctestplan +++ b/CS342ExampleApplication.xctestplan @@ -12,31 +12,31 @@ "codeCoverage" : { "targets" : [ { - "containerPath" : "container:TemplateApplication.xcodeproj", + "containerPath" : "container:CS342ExampleApplication.xcodeproj", "identifier" : "653A254C283387FE005D4D48", - "name" : "TemplateApplication" + "name" : "CS342ExampleApplication" } ] }, "targetForVariableExpansion" : { - "containerPath" : "container:TemplateApplication.xcodeproj", + "containerPath" : "container:CS342ExampleApplication.xcodeproj", "identifier" : "653A254C283387FE005D4D48", - "name" : "TemplateApplication" + "name" : "CS342ExampleApplication" } }, "testTargets" : [ { "target" : { - "containerPath" : "container:TemplateApplication.xcodeproj", + "containerPath" : "container:CS342ExampleApplication.xcodeproj", "identifier" : "653A255C28338800005D4D48", - "name" : "TemplateApplicationTests" + "name" : "CS342ExampleApplicationTests" } }, { "target" : { - "containerPath" : "container:TemplateApplication.xcodeproj", + "containerPath" : "container:CS342ExampleApplication.xcodeproj", "identifier" : "653A256628338800005D4D48", - "name" : "TemplateApplicationUITests" + "name" : "CS342ExampleApplicationUITests" } } ], diff --git a/CS342ExampleApplication.xctestplan.license b/CS342ExampleApplication.xctestplan.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication.xctestplan.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Account/AccountButton.swift b/CS342ExampleApplication/Account/AccountButton.swift similarity index 73% rename from TemplateApplication/Account/AccountButton.swift rename to CS342ExampleApplication/Account/AccountButton.swift index 4f5dc24..c307507 100644 --- a/TemplateApplication/Account/AccountButton.swift +++ b/CS342ExampleApplication/Account/AccountButton.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // diff --git a/TemplateApplication/Account/AccountSetupHeader.swift b/CS342ExampleApplication/Account/AccountSetupHeader.swift similarity index 72% rename from TemplateApplication/Account/AccountSetupHeader.swift rename to CS342ExampleApplication/Account/AccountSetupHeader.swift index d284a53..e4009e0 100644 --- a/TemplateApplication/Account/AccountSetupHeader.swift +++ b/CS342ExampleApplication/Account/AccountSetupHeader.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -12,7 +12,7 @@ import SwiftUI struct AccountSetupHeader: View { @Environment(Account.self) private var account - @Environment(\._accountSetupState) private var setupState + @Environment(\.accountSetupState) private var setupState var body: some View { @@ -24,7 +24,7 @@ struct AccountSetupHeader: View { .padding(.top, 30) Text("ACCOUNT_SUBTITLE") .padding(.bottom, 8) - if account.signedIn, case .generic = setupState { + if account.signedIn, case .presentingExistingAccount = setupState { Text("ACCOUNT_SIGNED_IN_DESCRIPTION") } else { Text("ACCOUNT_SETUP_DESCRIPTION") diff --git a/TemplateApplication/Account/AccountSheet.swift b/CS342ExampleApplication/Account/AccountSheet.swift similarity index 93% rename from TemplateApplication/Account/AccountSheet.swift rename to CS342ExampleApplication/Account/AccountSheet.swift index bdb0f8c..2d89324 100644 --- a/TemplateApplication/Account/AccountSheet.swift +++ b/CS342ExampleApplication/Account/AccountSheet.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // diff --git a/TemplateApplication/TemplateApplication.swift b/CS342ExampleApplication/CS342ExampleApplication.swift similarity index 69% rename from TemplateApplication/TemplateApplication.swift rename to CS342ExampleApplication/CS342ExampleApplication.swift index e4030a8..721fd2f 100644 --- a/TemplateApplication/TemplateApplication.swift +++ b/CS342ExampleApplication/CS342ExampleApplication.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -13,8 +13,8 @@ import SwiftUI @main -struct TemplateApplication: App { - @UIApplicationDelegateAdaptor(TemplateApplicationDelegate.self) var appDelegate +struct CS342ExampleApplication: App { + @UIApplicationDelegateAdaptor(CS342ExampleApplicationDelegate.self) var appDelegate @AppStorage(StorageKeys.onboardingFlowComplete) var completedOnboardingFlow = false diff --git a/TemplateApplication/TemplateApplicationDelegate.swift b/CS342ExampleApplication/CS342ExampleApplicationDelegate.swift similarity index 87% rename from TemplateApplication/TemplateApplicationDelegate.swift rename to CS342ExampleApplication/CS342ExampleApplicationDelegate.swift index a66f491..363e838 100644 --- a/TemplateApplication/TemplateApplicationDelegate.swift +++ b/CS342ExampleApplication/CS342ExampleApplicationDelegate.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -21,9 +21,9 @@ import SpeziScheduler import SwiftUI -class TemplateApplicationDelegate: SpeziAppDelegate { +class CS342ExampleApplicationDelegate: SpeziAppDelegate { override var configuration: Configuration { - Configuration(standard: TemplateApplicationStandard()) { + Configuration(standard: CS342ExampleApplicationStandard()) { if !FeatureFlags.disableFirebase { AccountConfiguration( service: FirebaseAccountService(providers: [.emailAndPassword, .signInWithApple], emulatorSettings: accountEmulator), @@ -50,7 +50,7 @@ class TemplateApplicationDelegate: SpeziAppDelegate { healthKit } - TemplateApplicationScheduler() + CS342ExampleApplicationScheduler() Scheduler() OnboardingDataSource() diff --git a/TemplateApplication/TemplateApplicationStandard.swift b/CS342ExampleApplication/CS342ExampleApplicationStandard.swift similarity index 86% rename from TemplateApplication/TemplateApplicationStandard.swift rename to CS342ExampleApplication/CS342ExampleApplicationStandard.swift index 5f2e785..6fbe1fd 100644 --- a/TemplateApplication/TemplateApplicationStandard.swift +++ b/CS342ExampleApplication/CS342ExampleApplicationStandard.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -10,7 +10,7 @@ @preconcurrency import FirebaseStorage import HealthKitOnFHIR import OSLog -import PDFKit +@preconcurrency import PDFKit import Spezi import SpeziAccount import SpeziFirebaseAccount @@ -21,11 +21,11 @@ import SpeziQuestionnaire import SwiftUI -actor TemplateApplicationStandard: Standard, - EnvironmentAccessible, - HealthKitConstraint, - OnboardingConstraint, - AccountNotifyConstraint { +actor CS342ExampleApplicationStandard: Standard, + EnvironmentAccessible, + HealthKitConstraint, + ConsentConstraint, + AccountNotifyConstraint { @Application(\.logger) private var logger @Dependency(FirebaseConfiguration.self) private var configuration @@ -101,7 +101,7 @@ actor TemplateApplicationStandard: Standard, /// /// - Parameter consent: The consent form's data to be stored as a `PDFDocument`. @MainActor - func store(consent: PDFDocument) async { + func store(consent: ConsentDocumentExport) async throws { let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd_HHmmss" let dateString = formatter.string(from: Date()) @@ -113,13 +113,13 @@ actor TemplateApplicationStandard: Standard, } let filePath = basePath.appending(path: "consentForm_\(dateString).pdf") - consent.write(to: filePath) + await consent.pdf.write(to: filePath) return } do { - guard let consentData = consent.dataRepresentation() else { + guard let consentData = await consent.pdf.dataRepresentation() else { await logger.error("Could not store consent form.") return } diff --git a/TemplateApplication/TemplateApplicationTestingSetup.swift b/CS342ExampleApplication/CS342ExampleApplicationTestingSetup.swift similarity index 65% rename from TemplateApplication/TemplateApplicationTestingSetup.swift rename to CS342ExampleApplication/CS342ExampleApplicationTestingSetup.swift index bac8412..70e251a 100644 --- a/TemplateApplication/TemplateApplicationTestingSetup.swift +++ b/CS342ExampleApplication/CS342ExampleApplicationTestingSetup.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -9,7 +9,7 @@ import SwiftUI -private struct TemplateAppTestingSetup: ViewModifier { +private struct CS342ExampleApplicationAppTestingSetup: 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(CS342ExampleApplicationAppTestingSetup()) } } diff --git a/TemplateApplication/Contacts/Contacts.swift b/CS342ExampleApplication/Contacts/Contacts.swift similarity index 90% rename from TemplateApplication/Contacts/Contacts.swift rename to CS342ExampleApplication/Contacts/Contacts.swift index 74fbd9e..9dfa297 100644 --- a/TemplateApplication/Contacts/Contacts.swift +++ b/CS342ExampleApplication/Contacts/Contacts.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -12,7 +12,7 @@ import SpeziContact import SwiftUI -/// Displays the contacts for the Spezi Template Application. +/// Displays the contacts for the CS342 Example Application. struct Contacts: View { let contacts = [ Contact( diff --git a/TemplateApplication/Firestore/FirebaseConfiguration.swift b/CS342ExampleApplication/Firestore/FirebaseConfiguration.swift similarity index 93% rename from TemplateApplication/Firestore/FirebaseConfiguration.swift rename to CS342ExampleApplication/Firestore/FirebaseConfiguration.swift index 2f07d29..ee80a88 100644 --- a/TemplateApplication/Firestore/FirebaseConfiguration.swift +++ b/CS342ExampleApplication/Firestore/FirebaseConfiguration.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // diff --git a/TemplateApplication/HomeView.swift b/CS342ExampleApplication/HomeView.swift similarity index 85% rename from TemplateApplication/HomeView.swift rename to CS342ExampleApplication/HomeView.swift index adc5f7d..f3cb087 100644 --- a/TemplateApplication/HomeView.swift +++ b/CS342ExampleApplication/HomeView.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -53,8 +53,8 @@ struct HomeView: View { details.name = PersonNameComponents(givenName: "Leland", familyName: "Stanford") return HomeView() - .previewWith(standard: TemplateApplicationStandard()) { - TemplateApplicationScheduler() + .previewWith(standard: CS342ExampleApplicationStandard()) { + CS342ExampleApplicationScheduler() AccountConfiguration(service: InMemoryAccountService(), activeDetails: details) } } diff --git a/TemplateApplication/Onboarding/AccountOnboarding.swift b/CS342ExampleApplication/Onboarding/AccountOnboarding.swift similarity index 89% rename from TemplateApplication/Onboarding/AccountOnboarding.swift rename to CS342ExampleApplication/Onboarding/AccountOnboarding.swift index 087ee21..93fcc8e 100644 --- a/TemplateApplication/Onboarding/AccountOnboarding.swift +++ b/CS342ExampleApplication/Onboarding/AccountOnboarding.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // diff --git a/TemplateApplication/Onboarding/Consent.swift b/CS342ExampleApplication/Onboarding/Consent.swift similarity index 81% rename from TemplateApplication/Onboarding/Consent.swift rename to CS342ExampleApplication/Onboarding/Consent.swift index cb97700..e3a6a3b 100644 --- a/TemplateApplication/Onboarding/Consent.swift +++ b/CS342ExampleApplication/Onboarding/Consent.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -42,7 +42,7 @@ struct Consent: View { OnboardingStack { Consent() } - .previewWith(standard: TemplateApplicationStandard()) { + .previewWith(standard: CS342ExampleApplicationStandard()) { OnboardingDataSource() } } diff --git a/TemplateApplication/Onboarding/HealthKitPermissions.swift b/CS342ExampleApplication/Onboarding/HealthKitPermissions.swift similarity index 90% rename from TemplateApplication/Onboarding/HealthKitPermissions.swift rename to CS342ExampleApplication/Onboarding/HealthKitPermissions.swift index 2c65865..7232a6d 100644 --- a/TemplateApplication/Onboarding/HealthKitPermissions.swift +++ b/CS342ExampleApplication/Onboarding/HealthKitPermissions.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -70,7 +70,7 @@ struct HealthKitPermissions: View { OnboardingStack { HealthKitPermissions() } - .previewWith(standard: TemplateApplicationStandard()) { + .previewWith(standard: CS342ExampleApplicationStandard()) { HealthKit() } } diff --git a/TemplateApplication/Onboarding/InterestingModules.swift b/CS342ExampleApplication/Onboarding/InterestingModules.swift similarity index 88% rename from TemplateApplication/Onboarding/InterestingModules.swift rename to CS342ExampleApplication/Onboarding/InterestingModules.swift index 85cde78..e2a1d65 100644 --- a/TemplateApplication/Onboarding/InterestingModules.swift +++ b/CS342ExampleApplication/Onboarding/InterestingModules.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // diff --git a/TemplateApplication/Onboarding/NotificationPermissions.swift b/CS342ExampleApplication/Onboarding/NotificationPermissions.swift similarity index 91% rename from TemplateApplication/Onboarding/NotificationPermissions.swift rename to CS342ExampleApplication/Onboarding/NotificationPermissions.swift index 31b975e..e59125f 100644 --- a/TemplateApplication/Onboarding/NotificationPermissions.swift +++ b/CS342ExampleApplication/Onboarding/NotificationPermissions.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -72,7 +72,7 @@ struct NotificationPermissions: View { NotificationPermissions() } .previewWith { - TemplateApplicationScheduler() + CS342ExampleApplicationScheduler() } } #endif diff --git a/TemplateApplication/Onboarding/OnboardingFlow.swift b/CS342ExampleApplication/Onboarding/OnboardingFlow.swift similarity index 85% rename from TemplateApplication/Onboarding/OnboardingFlow.swift rename to CS342ExampleApplication/Onboarding/OnboardingFlow.swift index d539948..011b2e1 100644 --- a/TemplateApplication/Onboarding/OnboardingFlow.swift +++ b/CS342ExampleApplication/Onboarding/OnboardingFlow.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -14,7 +14,7 @@ import SpeziOnboarding import SwiftUI -/// Displays an multi-step onboarding flow for the Spezi Template Application. +/// Displays an multi-step onboarding flow for the CS342 Example Application. struct OnboardingFlow: View { @Environment(HealthKit.self) private var healthKitDataSource @@ -74,12 +74,12 @@ struct OnboardingFlow: View { #if DEBUG #Preview { OnboardingFlow() - .previewWith(standard: TemplateApplicationStandard()) { + .previewWith(standard: CS342ExampleApplicationStandard()) { OnboardingDataSource() HealthKit() AccountConfiguration(service: InMemoryAccountService()) - TemplateApplicationScheduler() + CS342ExampleApplicationScheduler() } } #endif diff --git a/TemplateApplication/Onboarding/Welcome.swift b/CS342ExampleApplication/Onboarding/Welcome.swift similarity index 88% rename from TemplateApplication/Onboarding/Welcome.swift rename to CS342ExampleApplication/Onboarding/Welcome.swift index 58d9838..17a42f3 100644 --- a/TemplateApplication/Onboarding/Welcome.swift +++ b/CS342ExampleApplication/Onboarding/Welcome.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -16,7 +16,7 @@ struct Welcome: View { var body: some View { OnboardingView( - title: "Spezi Template Application", + title: "CS342 Example Application", subtitle: "WELCOME_SUBTITLE", areas: [ OnboardingInformationView.Content( diff --git a/TemplateApplication/Resources/AppIcon.png b/CS342ExampleApplication/Resources/AppIcon.png similarity index 100% rename from TemplateApplication/Resources/AppIcon.png rename to CS342ExampleApplication/Resources/AppIcon.png diff --git a/CS342ExampleApplication/Resources/AppIcon.png.license b/CS342ExampleApplication/Resources/AppIcon.png.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Resources/AppIcon.png.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/CS342ExampleApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from TemplateApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json rename to CS342ExampleApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/CS342ExampleApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json.license b/CS342ExampleApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Resources/Assets.xcassets/AccentColor.colorset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png b/CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png similarity index 100% rename from TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png rename to CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png diff --git a/CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png.license b/CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon.png.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from TemplateApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json rename to CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json.license b/CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Assets.xcassets/Contents.json b/CS342ExampleApplication/Resources/Assets.xcassets/Contents.json similarity index 100% rename from TemplateApplication/Resources/Assets.xcassets/Contents.json rename to CS342ExampleApplication/Resources/Assets.xcassets/Contents.json diff --git a/CS342ExampleApplication/Resources/Assets.xcassets/Contents.json.license b/CS342ExampleApplication/Resources/Assets.xcassets/Contents.json.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Resources/Assets.xcassets/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/ConsentDocument.md b/CS342ExampleApplication/Resources/ConsentDocument.md similarity index 100% rename from TemplateApplication/Resources/ConsentDocument.md rename to CS342ExampleApplication/Resources/ConsentDocument.md diff --git a/CS342ExampleApplication/Resources/ConsentDocument.md.license b/CS342ExampleApplication/Resources/ConsentDocument.md.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Resources/ConsentDocument.md.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/Localizable.xcstrings b/CS342ExampleApplication/Resources/Localizable.xcstrings similarity index 98% rename from TemplateApplication/Resources/Localizable.xcstrings rename to CS342ExampleApplication/Resources/Localizable.xcstrings index b8c1e86..04346d1 100644 --- a/TemplateApplication/Resources/Localizable.xcstrings +++ b/CS342ExampleApplication/Resources/Localizable.xcstrings @@ -26,7 +26,7 @@ "en" : { "stringUnit" : { "state" : "translated", - "value" : "The Template Application demonstrates the usage of the Firebase Account Module." + "value" : "The CS342 Example Application demonstrates the usage of the Firebase Account Module." } } } @@ -321,12 +321,12 @@ } } }, - "Spezi Template Application" : { + "CS342 Example Application" : { "localizations" : { "en" : { "stringUnit" : { "state" : "translated", - "value" : "Spezi\nTemplate Application" + "value" : "Spezi\nCS342 Example Application" } } } diff --git a/CS342ExampleApplication/Resources/Localizable.xcstrings.license b/CS342ExampleApplication/Resources/Localizable.xcstrings.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Resources/Localizable.xcstrings.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Resources/SocialSupportQuestionnaire.json b/CS342ExampleApplication/Resources/SocialSupportQuestionnaire.json similarity index 100% rename from TemplateApplication/Resources/SocialSupportQuestionnaire.json rename to CS342ExampleApplication/Resources/SocialSupportQuestionnaire.json diff --git a/CS342ExampleApplication/Resources/SocialSupportQuestionnaire.json.license b/CS342ExampleApplication/Resources/SocialSupportQuestionnaire.json.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Resources/SocialSupportQuestionnaire.json.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Schedule/Bundle+Questionnaire.swift b/CS342ExampleApplication/Schedule/Bundle+Questionnaire.swift similarity index 80% rename from TemplateApplication/Schedule/Bundle+Questionnaire.swift rename to CS342ExampleApplication/Schedule/Bundle+Questionnaire.swift index bc94d92..c17f4f9 100644 --- a/TemplateApplication/Schedule/Bundle+Questionnaire.swift +++ b/CS342ExampleApplication/Schedule/Bundle+Questionnaire.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // diff --git a/TemplateApplication/Schedule/TemplateApplicationScheduler.swift b/CS342ExampleApplication/Schedule/CS342ExampleApplicationScheduler.swift similarity index 84% rename from TemplateApplication/Schedule/TemplateApplicationScheduler.swift rename to CS342ExampleApplication/Schedule/CS342ExampleApplicationScheduler.swift index 2d7e3c7..0fa5922 100644 --- a/TemplateApplication/Schedule/TemplateApplicationScheduler.swift +++ b/CS342ExampleApplication/Schedule/CS342ExampleApplicationScheduler.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -15,7 +15,7 @@ import class ModelsR4.QuestionnaireResponse @Observable -final class TemplateApplicationScheduler: Module, DefaultInitializable, EnvironmentAccessible { +final class CS342ExampleApplicationScheduler: Module, DefaultInitializable, EnvironmentAccessible { @Dependency(Scheduler.self) @ObservationIgnored private var scheduler @MainActor var viewState: ViewState = .idle diff --git a/TemplateApplication/Schedule/EventView.swift b/CS342ExampleApplication/Schedule/EventView.swift similarity index 83% rename from TemplateApplication/Schedule/EventView.swift rename to CS342ExampleApplication/Schedule/EventView.swift index 33b98d8..39e0f2f 100644 --- a/TemplateApplication/Schedule/EventView.swift +++ b/CS342ExampleApplication/Schedule/EventView.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -15,7 +15,7 @@ import SwiftUI struct EventView: View { private let event: Event - @Environment(TemplateApplicationStandard.self) private var standard + @Environment(CS342ExampleApplicationStandard.self) private var standard @Environment(\.dismiss) private var dismiss var body: some View { diff --git a/TemplateApplication/Schedule/ScheduleView.swift b/CS342ExampleApplication/Schedule/ScheduleView.swift similarity index 79% rename from TemplateApplication/Schedule/ScheduleView.swift rename to CS342ExampleApplication/Schedule/ScheduleView.swift index 3afce88..e014957 100644 --- a/TemplateApplication/Schedule/ScheduleView.swift +++ b/CS342ExampleApplication/Schedule/ScheduleView.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -15,7 +15,7 @@ import SwiftUI struct ScheduleView: View { @Environment(Account.self) private var account: Account? - @Environment(TemplateApplicationScheduler.self) private var scheduler: TemplateApplicationScheduler + @Environment(CS342ExampleApplicationScheduler.self) private var scheduler: CS342ExampleApplicationScheduler @State private var presentedEvent: Event? @Binding private var presentingAccount: Bool @@ -57,9 +57,9 @@ struct ScheduleView: View { @Previewable @State var presentingAccount = false ScheduleView(presentingAccount: $presentingAccount) - .previewWith(standard: TemplateApplicationStandard()) { + .previewWith(standard: CS342ExampleApplicationStandard()) { Scheduler() - TemplateApplicationScheduler() + CS342ExampleApplicationScheduler() AccountConfiguration(service: InMemoryAccountService()) } } diff --git a/TemplateApplication/SharedContext/FeatureFlags.swift b/CS342ExampleApplication/SharedContext/FeatureFlags.swift similarity index 85% rename from TemplateApplication/SharedContext/FeatureFlags.swift rename to CS342ExampleApplication/SharedContext/FeatureFlags.swift index 5d5e34b..55806fa 100644 --- a/TemplateApplication/SharedContext/FeatureFlags.swift +++ b/CS342ExampleApplication/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 CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // -/// A collection of feature flags for the Template Application. +/// A collection of feature flags for the CS342 Example Application. 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/CS342ExampleApplication/SharedContext/StorageKeys.swift similarity index 77% rename from TemplateApplication/SharedContext/StorageKeys.swift rename to CS342ExampleApplication/SharedContext/StorageKeys.swift index 18119a5..e80283c 100644 --- a/TemplateApplication/SharedContext/StorageKeys.swift +++ b/CS342ExampleApplication/SharedContext/StorageKeys.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // diff --git a/TemplateApplication/Supporting Files/TemplateApplication.entitlements b/CS342ExampleApplication/Supporting Files/CS342ExampleApplication.entitlements similarity index 100% rename from TemplateApplication/Supporting Files/TemplateApplication.entitlements rename to CS342ExampleApplication/Supporting Files/CS342ExampleApplication.entitlements diff --git a/CS342ExampleApplication/Supporting Files/CS342ExampleApplication.entitlements.license b/CS342ExampleApplication/Supporting Files/CS342ExampleApplication.entitlements.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Supporting Files/CS342ExampleApplication.entitlements.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/GoogleService-Info.plist b/CS342ExampleApplication/Supporting Files/GoogleService-Info.plist similarity index 89% rename from TemplateApplication/Supporting Files/GoogleService-Info.plist rename to CS342ExampleApplication/Supporting Files/GoogleService-Info.plist index f7699ba..feaae79 100644 --- a/TemplateApplication/Supporting Files/GoogleService-Info.plist +++ b/CS342ExampleApplication/Supporting Files/GoogleService-Info.plist @@ -13,9 +13,9 @@ PLIST_VERSION 1 BUNDLE_ID - edu.stanford.spezi.templateapplication + edu.stanford.cs342.2025.cs342exampleapp PROJECT_ID - stanfordspezitemplateapp + cs342-2025-example-app STORAGE_BUCKET STORAGE_BUCKET IS_ADS_ENABLED diff --git a/TemplateApplication/Supporting Files/GoogleService-Info.plist.license b/CS342ExampleApplication/Supporting Files/GoogleService-Info.plist.license similarity index 52% rename from TemplateApplication/Supporting Files/GoogleService-Info.plist.license rename to CS342ExampleApplication/Supporting Files/GoogleService-Info.plist.license index 9f5551c..68b80a8 100644 --- a/TemplateApplication/Supporting Files/GoogleService-Info.plist.license +++ b/CS342ExampleApplication/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 CS342 Example Application 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/CS342ExampleApplication/Supporting Files/Info.plist similarity index 100% rename from TemplateApplication/Supporting Files/Info.plist rename to CS342ExampleApplication/Supporting Files/Info.plist diff --git a/CS342ExampleApplication/Supporting Files/Info.plist.license b/CS342ExampleApplication/Supporting Files/Info.plist.license new file mode 100644 index 0000000..bedb168 --- /dev/null +++ b/CS342ExampleApplication/Supporting Files/Info.plist.license @@ -0,0 +1,6 @@ + +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project + +SPDX-FileCopyrightText: 2025 Stanford University + +SPDX-License-Identifier: MIT diff --git a/CS342ExampleApplicationTests/CS342ExampleApplicationTests.swift b/CS342ExampleApplicationTests/CS342ExampleApplicationTests.swift new file mode 100644 index 0000000..5e23c01 --- /dev/null +++ b/CS342ExampleApplicationTests/CS342ExampleApplicationTests.swift @@ -0,0 +1,18 @@ +// +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project +// +// SPDX-FileCopyrightText: 2025 Stanford University +// +// SPDX-License-Identifier: MIT +// + +@testable import CS342ExampleApplication +import XCTest + + +class CS342ExampleApplicationTests: XCTestCase { + @MainActor + func testContactsCount() throws { + XCTAssertEqual(Contacts(presentingAccount: .constant(true)).contacts.count, 1) + } +} diff --git a/TemplateApplicationUITests/ContactsTests.swift b/CS342ExampleApplicationUITests/ContactsTests.swift similarity index 85% rename from TemplateApplicationUITests/ContactsTests.swift rename to CS342ExampleApplicationUITests/ContactsTests.swift index d19adba..d05fde3 100644 --- a/TemplateApplicationUITests/ContactsTests.swift +++ b/CS342ExampleApplicationUITests/ContactsTests.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // diff --git a/TemplateApplicationUITests/ContributionsTest.swift b/CS342ExampleApplicationUITests/ContributionsTest.swift similarity index 83% rename from TemplateApplicationUITests/ContributionsTest.swift rename to CS342ExampleApplicationUITests/ContributionsTest.swift index 9b91785..642776c 100644 --- a/TemplateApplicationUITests/ContributionsTest.swift +++ b/CS342ExampleApplicationUITests/ContributionsTest.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -16,7 +16,7 @@ final class ContributionsTest: XCTestCase { let app = XCUIApplication() app.launchArguments = ["--setupTestAccount", "--skipOnboarding"] - app.deleteAndLaunch(withSpringboardAppName: "TemplateApplication") + app.deleteAndLaunch(withSpringboardAppName: "CS342ExampleApplication") } @MainActor diff --git a/TemplateApplicationUITests/OnboardingTests.swift b/CS342ExampleApplicationUITests/OnboardingTests.swift similarity index 95% rename from TemplateApplicationUITests/OnboardingTests.swift rename to CS342ExampleApplicationUITests/OnboardingTests.swift index cb1a414..083b95b 100644 --- a/TemplateApplicationUITests/OnboardingTests.swift +++ b/CS342ExampleApplicationUITests/OnboardingTests.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -20,7 +20,7 @@ class OnboardingTests: XCTestCase { let app = XCUIApplication() app.launchArguments = ["--showOnboarding"] - app.deleteAndLaunch(withSpringboardAppName: "TemplateApplication") + app.deleteAndLaunch(withSpringboardAppName: "CS342ExampleApplication") } @@ -77,7 +77,7 @@ extension XCUIApplication { } private func navigateOnboardingFlowWelcome() throws { - XCTAssertTrue(staticTexts["Spezi\nTemplate Application"].waitForExistence(timeout: 5)) + XCTAssertTrue(staticTexts["Spezi\nCS342 Example Application"].waitForExistence(timeout: 5)) XCTAssertTrue(buttons["Learn More"].exists) buttons["Learn More"].tap() diff --git a/TemplateApplicationUITests/SchedulerTests.swift b/CS342ExampleApplicationUITests/SchedulerTests.swift similarity index 89% rename from TemplateApplicationUITests/SchedulerTests.swift rename to CS342ExampleApplicationUITests/SchedulerTests.swift index 0bdc5ce..0668848 100644 --- a/TemplateApplicationUITests/SchedulerTests.swift +++ b/CS342ExampleApplicationUITests/SchedulerTests.swift @@ -1,7 +1,7 @@ // -// This source file is part of the Stanford Spezi Template Application open-source project +// This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project // -// SPDX-FileCopyrightText: 2023 Stanford University +// SPDX-FileCopyrightText: 2025 Stanford University // // SPDX-License-Identifier: MIT // @@ -17,7 +17,7 @@ class SchedulerTests: XCTestCase { let app = XCUIApplication() app.launchArguments = ["--skipOnboarding"] - app.deleteAndLaunch(withSpringboardAppName: "TemplateApplication") + app.deleteAndLaunch(withSpringboardAppName: "CS342ExampleApplication") } diff --git a/LICENSE.md b/LICENSE.md index c76f2c7..1a729a9 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Stanford University +Copyright (c) 2025 Stanford University Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt index c76f2c7..1a729a9 100644 --- a/LICENSES/MIT.txt +++ b/LICENSES/MIT.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Stanford University +Copyright (c) 2025 Stanford University Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index b435f1d..b2a18ec 100644 --- a/README.md +++ b/README.md @@ -1,61 +1,32 @@ -# Spezi Template Application +# CS342 Example Application -[![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 CS342 Example Application. +The CS342 Example Application 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)! +## CS342 Example Application 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.]() ![A screen displaying welcome information.]()|![A screen showing an overview of the modules used in the Spezi Template Application.]() ![A screen showing an overview of the modules used in the Spezi Template Application.]()|![A screen displaying the consent view.]() ![A screen displaying the consent view.]() -|:--:|:--:|:--:| -|Welcome View|Interesting Modules|Consent Signature| - -|![HealthKit Onboarding Flow]() ![HealthKit Onboarding Flow]()|![Permissions screen of the HealthKit framework]() ![Permissions screen of the HealthKit framework]()|![Onboarding screen showing the Notifications permission screen.]() ![Onboarding screen showing the Notifications permission screen.]()| -|:--:|:--:|:--:| -|HealthKit Access|Granular HealthKit Share Control|Trigger Local Notifications| - -|![A screen displaying the Scheduler UI.]() ![A screen displaying the Scheduler UI.]()|![A screen showing a questionnaire using ResearchKit.]() ![A screen showing a questionnaire using ResearchKit.]()|![The scheduler screen showing the completed UI]() ![The scheduler screen showing the completed UI]()| -|:--:|:--:|:--:| -|Schedule Tasks|Display Questionnaires|Keep Track of Tasks| - -|![A screen displaying the Contact UI.]() ![A screen displaying the Contact UI.]()|![A screen displaying the current user account information.]() ![A screen displaying the current user account information.]()|![License information to list all used Swift Packages]() ![License information to list all used Swift Packages]()| -|:--:|:--:|:--:| -|Contact Information|Account Overview|License Information| - -> [!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 ec8e976..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 167053c..0000000 --- a/Scripts/create.sh +++ /dev/null @@ -1,207 +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 ] [--firebaseProject ]" - 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 " --firebaseProject The Firebase project identifier. (optional, defaults to the value of --name lowercased without spaces)" - 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 - ;; - --firebaseProject) - firebaseProject="$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 - -# Remove spaces from appName -appNameNoSpaces="${appName// /}" - -# Convert appName to lowercase and remove spaces -appNameLowerNoSpaces=$(echo "$appName" | tr '[:upper:]' '[:lower:]' | tr -d ' ') - -# Set default value for provisioningProfile & firebaseProject if not provided -if [ -z "$provisioningProfile" ]; then - provisioningProfile="$appName" -fi - -if [ -z "$firebaseProject" ]; then - firebaseProject="$appNameLowerNoSpaces" -fi - -# 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") -firebaseProjectEscaped=$(sed 's:/:\\/:g' <<< "$firebaseProject") - -sed -i '' "s/${firebaseProjectNameEscaped}/${firebaseProjectEscaped}/g" ".firebaserc" -sed -i '' "s/${firebaseProjectNameEscaped}/${firebaseProjectEscaped}/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") -appNameLowerNoSpacesEscaped=$(sed 's:/:\\/:g' <<< "$firebaseProject") - -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 100755 index ee7750c..0000000 --- a/Scripts/setup.sh +++ /dev/null @@ -1,74 +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 git-lfs -git lfs install -git lfs install --system - -# Ensure that everything on the system is up-to-date -brew upgrade - - -# 3. Test and start the firebase emulator - -# Check if firebase.json exists and create if it doesn't -CREATED_FIREBASE_JSON=false - -if [ ! -f "firebase.json" ]; then - echo "Creating firebase.json file..." - CREATED_FIREBASE_JSON=true - cat << 'EOL' > firebase.json -{ - "emulators": { - "auth": { - "port": 9099 - }, - "firestore": { - "port": 8080 - }, - "ui": { - "enabled": true, - "port": 4000 - }, - "singleProjectMode": true - } -} -EOL -fi - -firebase emulators:exec --project test "echo 'Firebase emulator installed and started successfully!'" - -# Clean up the firebase.json file only if we created it -if [ "$CREATED_FIREBASE_JSON" = true ]; then - echo "Cleaning up temporary firebase.json file..." - rm firebase.json -fi \ No newline at end of file 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 b65b400..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Create.md +++ /dev/null @@ -1,56 +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 ] [--firebaseProject ] -``` - -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) -`--firebaseProject` | The Firebase project identifier. (optional, defaults to the value of --name lowercased without spaces) -`--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 Continuous 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 1308625..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Modify.md +++ /dev/null @@ -1,103 +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 the schedule are defined in the ``TemplateApplicationScheduler`` and displayed using the ``ScheduleView`` and ``EventView``. - } - } - @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. -The application also gives credit to all dependencies in the Account Details. It uses the [**Spezi License** module](https://github.com/StanfordSpezi/SpeziLicense) to show a list of used Swift Packages. - - -@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 [**Spezi License** module](https://github.com/StanfordSpezi/SpeziLicense) to learn how the application loads and displays the license information. - } - } -} - 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 9a16339..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 6e6f70b..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 c9d4be1..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 3787ddd..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 e5cd48f..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 bfabe33..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 4414122..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 df73de8..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 f26f0b0..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 1959c2b..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/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 a6f2fd0..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 7f886e9..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 44985e5..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 ffc182c..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 f861ec6..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 283f132..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 6792c57..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 3a178e0..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 da99422..0000000 --- a/TemplateApplication/Supporting Files/TemplateApplication.docc/Setup.md +++ /dev/null @@ -1,149 +0,0 @@ -# Build And Run the Spezi Template Application - - - -The Spezi Template Application is a fully functioning iOS application built using the [Stanford Spezi](https://spezi.stanford.edu) ecosystem that can be used as a starting point for creating your own iOS app. The following tutorial will walk you through the steps needed to configure your Mac to build and run the Spezi Template Application, after which you can customize it for your own project. - -## 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 - Sequoia 15.2 Or Newer - -The Mac needs to run macOS Sequoia 15.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 - 16.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 16.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 16.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 provides a set of pre-configured tools that simplify app development and enforce best practices. - -We provide a simple setup script that installs essential tools like [homebrew](https://brew.sh) (macOS package manager) and [git LFS](https://git-lfs.com) (Git extension for versioning large files). - -The script also installs the [Google Firebase emulator and command line interface (CLI)](https://firebase.google.com/docs/cli) and all its dependencies, including Java and Node.js, letting you test cloud features locally without setting up a 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. Set Up the Backend - -As with most complex mobile applications, Stanford Spezi relies on a cloud-based backend to handle user authentication, data storage, and other services. [Google Firebase](https://firebase.google.com) is a managed backend cloud computing platform provided by Google that is pre-integrated with the Spezi Template Application. - -> Tip: Although the Spezi Template Application is pre-integrated with Google Firebase, 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. - -There are two alternatives for testing the Spezi Template Application. - -- A. Run the application without Firebase: This option disables all cloud-based functionality but allows for basic testing of local features. -- B. Use the Firebase Emulator Suite: This method emulates Firebase services locally on your Mac, providing a more complete testing environment that mimics cloud functionality. - -> Important: These testing approaches are meant for development purposes only. For production deployment, you'll need to use an actual Firebase account. Stanford researchers can utilize the Stanford mHealth platform, Stanford's dedicated Firebase instance that supports many digital health projects. - -### Alternative A: Test without Firebase - -You can test the application without a backend if you enable the `--disableFirebase` feature flag, which is *enabled by default when opening the Xcode project*. This will disable all cloud-based functionality in the application, including user registration, sign in, and data upload. The login and account setup steps will therefore be skipped in this configuration. - -> Tip: Feature flags 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.") - - -### Alternative B: Set Up the Firebase Emulator Suite - -The application also provides a [Firebase Firestore](https://firebase.google.com/docs/firestore)-based data upload mechanism and [Firebase Authentication](https://firebase.google.com/docs/auth) login & sign-up. If you wish to test this functionality, you will need to have the [Firebase Emulator Suite](https://firebase.google.com/docs/emulator-suite) installed and running. This tool emulates a cloud-based backend on your Mac and does not require that you have a Firebase account to use. - -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 start 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 open the web interface by navigating to `http://127.0.0.1:4000/` in your web browser. When you run the Spezi Template Application in the next step, you will be able to use the application and see data populating in the emulator. - -@Image(source: "FirebaseWeb", alt: "Screenshot showing Safari and the Firebase Emulators web interface.") - - -## 4. Run the App - -You can build and run the Spezi Template Application using [Xcode](https://developer.apple.com/xcode/) by opening up the **.xcodeproj** file in the root of the repository. Ensure that the `Run Destination` in the upper toolbar is set to an iOS simulator such as `iPhone 16 Pro (18.0)`. - -For more information and details on how to run the app on other simulators or physical devices, please see [Building and running an app](https://developer.apple.com/documentation/xcode/building-and-running-an-app) in the official Apple documentation. - -@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. - } - } -} - -> Tip: When building the application you may encounter a build error "Target 'SpeziAccountMacros' must be enabled before it can be used.'". This error can be addressed by clicking on the error message in the Issue Navigator and selecting the "Trust & Enable" option. - -## 5. Modify The Application - -Now that you have successfully built and run the Spezi Template Application on your Mac, you can start customizing the application for your project. Continue with the article to learn how to make common modifications to the Spezi Template Application. - - -### 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 39ec08e..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: "Notifications", alt: "Onboarding screen showing the Notifications permission screen.") { - Trigger Local Notifications. - } - } -} -@Row(numberOfColumns: 3) { - @Column(size: 1) { - @Image(source: "Schedule", alt: "A screen displaying the Scheduler UI.") { - Schedule Tasks. - } - } - @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: "Account", alt: "A screen displaying the current user account information.") { - Account Overview. - } - } - @Column(size: 1) { - @Image(source: "License", alt: "License information to list all used Swift Packages") { - License Information. - } - } -} - -> 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/TemplateApplicationTests/TemplateApplicationTests.swift b/TemplateApplicationTests/TemplateApplicationTests.swift deleted file mode 100644 index af006a4..0000000 --- a/TemplateApplicationTests/TemplateApplicationTests.swift +++ /dev/null @@ -1,18 +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 -// - -@testable import TemplateApplication -import XCTest - - -class TemplateApplicationTests: XCTestCase { - @MainActor - func testContactsCount() throws { - XCTAssertEqual(Contacts(presentingAccount: .constant(true)).contacts.count, 1) - } -} diff --git a/codecov.yml b/codecov.yml index 8110181..3181899 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # @@ -29,8 +29,8 @@ coverage: target: auto threshold: 5.0 ignore: -- ^TemplateApplicationUITests.* -- ^TemplateApplicationTests.* +- ^CS342ExampleApplicationUITests.* +- ^CS342ExampleApplicationTests.* parsers: gcov: branch_detection: diff --git a/fastlane/.gitignore b/fastlane/.gitignore index 6c81710..063a421 100644 --- a/fastlane/.gitignore +++ b/fastlane/.gitignore @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # diff --git a/fastlane/Appfile b/fastlane/Appfile index 214ae7c..b04d67e 100644 --- a/fastlane/Appfile +++ b/fastlane/Appfile @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # @@ -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.2025.cs342exampleapp" # 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 f6f7ae3..7ece36a 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,7 +1,7 @@ # -# This source file is part of the Stanford Spezi Template Application open-source project +# This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project # -# SPDX-FileCopyrightText: 2023 Stanford University +# SPDX-FileCopyrightText: 2025 Stanford University # # SPDX-License-Identifier: MIT # @@ -57,7 +57,7 @@ platform :ios do ], export_options: { provisioningProfiles: { - "edu.stanford.spezi.templateapplication" => "Spezi Template Application" + "edu.stanford.cs342.2025.cs342exampleapp" => "CS342 2025 Example App" } } ) diff --git a/fastlane/README.md.license b/fastlane/README.md.license index 8ffe29f..bedb168 100644 --- a/fastlane/README.md.license +++ b/fastlane/README.md.license @@ -1,6 +1,6 @@ -This source file is part of the Stanford Spezi Template Application open-source project +This source file is part of the CS342 Example Application based on the Stanford Spezi Template Application project -SPDX-FileCopyrightText: 2023 Stanford University +SPDX-FileCopyrightText: 2025 Stanford University SPDX-License-Identifier: MIT diff --git a/firebase.json.license b/firebase.json.license index 9f5551c..68b80a8 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 CS342 Example Application 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..68b80a8 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 CS342 Example Application 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..68b80a8 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 CS342 Example Application based on the Stanford Spezi Template Application project SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md)