Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation page of the Spezi Ecosystem #118

Open
wants to merge 13 commits into
base: main
Choose a base branch
from

Conversation

milanagm
Copy link

Overview of the Spezial Ecosystem

→ prime modules with links to their documentation and use cases

♻️ Current situation & Problem

I worked on the first task of this ticket: #82

⚙️ Release Notes

This documentation is not changing any public interfaces nor any new features.

📚 Documentation

Please ensure that you properly document any additions in conformance to Spezi Documentation Guide.
You can use this section to describe your solution, but we encourage contributors to document your reasoning and changes using in-line documentation.
Not relevant for this PR.

✅ Testing

Please ensure that the PR meets the testing requirements set by CodeCov and that new functionality is appropriately tested.
This section describes important information about the tests and why some elements might not be testable.
Not relevant for this PR.

📝 Code of Conduct & Contributing Guidelines

By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

Copy link
Member

@PSchmiedmayer PSchmiedmayer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your first contribution @milanagm!

Happy to see better and more clearer documentation around Spezi and the functionalities we provide. I provided a few suggestions thought the PR to point us to a few improvements.

I would generally aim to:

  • Use some more visual & links to the relevant documentation/code examples to guide them right to the interesting parts of the relevant modules.
  • Ensure that we have a good mixture of written out text & elements that make it a good introduction to newcomers to the ecosystem.
  • Ensure that we make this maintainable & extensible in the future by not being too overly specific around version numbers and elements that might change but focus on the high-level concepts of reach module.
  • Ensure that we have a general introduction at the beginning about Spezi & the ecosystem to answer some immediate questions people might have & those that you had at the very beginning.

@@ -24,9 +24,13 @@ Unfortunately, DocC currently does not support dark mode images: https://github.
-->
@Row {
@Column {
@Image(source: "https://raw.githubusercontent.com/StanfordSpezi/SpeziOnboarding/main/Sources/SpeziOnboarding/SpeziOnboarding.docc/Resources/ConsentView.png", alt: "Screenshot displaying the UI of the onboarding module.") {
@Image(source: "https://raw.githubusercontent.com/StanfordSpezi/SpeziOnboarding/main/Sources/SpeziOnboarding/SpeziOnboardistong.docc/Resources/ConsentView.png", alt: "Screenshot displaying the UI of the onboarding module.") {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be a typo here; probably shouldn't be included in the diff.

Comment on lines 30 to 33




Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should generally use the same naming scheme as used for the other files.

SPDX-License-Identifier: MIT
-->

Discover the core modules available in the Spezi framework and understand their use cases.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should aim to unify the usage of ecosystem & framework. I suspect that most of the elements are relating to the ecosystem? Maybe we phrase it more positively, ideally something like: "... and how you can use it to build your applications."

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I adjusted the sentence but i am a bit unsure about your explanation.

Comment on lines 18 to 26
### Spezi Onboarding
- **[SpeziOnboarding](https://github.com/StanfordSpezi/SpeziOnboarding)**
- [SpeziOnboarding Documentation](https://swiftpackageindex.com/StanfordSpezi/SpeziOnboarding/1.2.2/documentation/spezionboarding)
- Use Case: This module handles user onboarding and initial registration flows.
- Features:
- Welcome screen
- Sequential onboarding screens
- Consent screen for users to read and agree to documents
- This module is included and demonstrated in the Template Application.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am wondering if we should use a more visual approach here and ideally also point people to some documentation in the relevant modules, ensuring that we point to some concrete types or relevant documentation articles/overviews in the relevant modules. I would avoid too many bullet points here, maybe only for the key features. Other elements could be transformed into 1-2 liners & some code examples and screenshots or relevant modules.

The initial DocC home page uses the visuals form the other modules to provide a nice overview of the module with one screenshot each. We might want to add tables of 3-4 screenshots from the relevant modules or code examples to highlight the usage of the modules.

I would suggest that we link to a few key types & use cases in the bullet points that detail the features to allow readers to easily jump to a point where they can learn how to implement the relevant feature.


### Spezi Onboarding
- **[SpeziOnboarding](https://github.com/StanfordSpezi/SpeziOnboarding)**
- [SpeziOnboarding Documentation](https://swiftpackageindex.com/StanfordSpezi/SpeziOnboarding/1.2.2/documentation/spezionboarding)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might want to package these documentation links into nice Tip boxes or something similar that highlights them in the DocC documentation? In addition, I would avoid linking concrete versioned tags, we should always aim to link to the latest documentation (https://swiftpackageindex.com/StanfordSpezi/SpeziOnboarding/1.2.2/documentation/spezionboarding -> https://swiftpackageindex.com/StanfordSpezi/SpeziOnboarding/documentation/spezionboarding). Links without explicit version tags should always point to the latest version.

The Spezi ecosystem provides a collection of interoperable modules designed to accelerate healthcare and research application development. Each module is built to work independently or in combination with others, allowing you to choose the components that best fit your needs.

## Core Modules
Some of the following modules can be tested and interact with using the Template Application: **[SpeziTemplate](https://github.com/StanfordSpezi/SpeziTemplateApplication)**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would generally suggest embedding links right in the text & flow of the documentation rather then explicitly spelling them out:

Suggested change
Some of the following modules can be tested and interact with using the Template Application: **[SpeziTemplate](https://github.com/StanfordSpezi/SpeziTemplateApplication)**
Some of the following modules can be tested and interact with using the **[Spezi Template Application](https://github.com/StanfordSpezi/SpeziTemplateApplication)**

@@ -87,6 +91,9 @@ You can learn more about modules in the <doc:Module> documentation.

## Topics

### Ecosystem Overview
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shoulda also aim to incorporate some general documentation on how to get started with Spezi & your learnings of embedding yourself in the ecosystem as part of this PR to help people who are new to the ecosystem to help them answer some clarifying questions.

@PSchmiedmayer PSchmiedmayer added the documentation Improvements or additions to documentation label Jan 20, 2025
Copy link
Member

@PSchmiedmayer PSchmiedmayer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for improving this PR; tagging @vishnuravi and @philippzagar here for a first review; we have been thinking about improvements to the documentation and a first starting guide for a while and can add some first thoughts here 🚀

@PSchmiedmayer PSchmiedmayer requested a review from vishnuravi March 2, 2025 03:57
Comment on lines +15 to +28
- [Spezi Onboarding](#spezi-onboarding) for user onboarding with welcome screens and more.
- [User Management](#user-management) for login account creation and customization flows.
- [Spezi Contact](#spezi-contact) for managing and displaying contact information.
- [Spezi AccessGuard](#spezi-accessguard) for login access codes and biometrics.
- [Connected Devices and Spezi Bluetooth](#connected-devices-and-spezi-bluetooth) for supporting Bluetooth-connected devices.
- [Cloud Systems](#cloud-systems) for Google Firebase integration and data synchronization.
- [Local Data Storage](#local-data-storage) for efficient data persistence and retrieval.
- [Electronic Health Integration](#electronic-health-integration) for managing FHIR data and data interoperability.
- [Mobile Health Data](#mobile-health-data) for accessing HealthKit data.
- [LLMs and AI Integration](#llms-and-ai-integration) for AI-driven functionalities.
- [Spezi Questionnaire](#spezi-questionnaire) for customizable forms.
- [Spezi Medication](#spezi-medication) for managing medication details, dosages, and more.
- [Tasks and Reminders](#tasks-and-reminders) for task scheduling and notification management.
- [Spezi Notifications](#spezi-notifications) for implementing user notifications and related.
Copy link
Member

@vishnuravi vishnuravi Mar 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of the items in this list are names of specific modules (e.g. Spezi Onboarding), and some of them are names of features (e.g. Tasks and Reminders), which is a little confusing. I would either stick to one or the other. What do you think @milanagm @PSchmiedmayer?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree; I would suggest to stick with a generic setup and focus on the currently built out modules that have graduated beyond a 1.0. Anything that currently is not tagged with a 1.0 is not really considered stable and should probably not be listed here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree, let's keep it to stable (post 1.0) modules (maybe with an exception for e.g. SpeziLLM?), not individual features.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And we should probably also note down that we only mention our graduated modules here, not "beta" ones

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And: We might order the module list a bit differently, either alphabetically or according to its importance in the Spezi ecosystem? Might also make sense to subdivide that large list with some subheadings that describe the overall topic of a (sub)collection of modules.

Copy link
Member

@philippzagar philippzagar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the great PR! 🚀
I left tons of in-line comments regarding the overall structure of the docs and some other details I noticed.
I also triggered a CI run so that you'll see some errors regarding license files etc.

Comment on lines +15 to +28
- [Spezi Onboarding](#spezi-onboarding) for user onboarding with welcome screens and more.
- [User Management](#user-management) for login account creation and customization flows.
- [Spezi Contact](#spezi-contact) for managing and displaying contact information.
- [Spezi AccessGuard](#spezi-accessguard) for login access codes and biometrics.
- [Connected Devices and Spezi Bluetooth](#connected-devices-and-spezi-bluetooth) for supporting Bluetooth-connected devices.
- [Cloud Systems](#cloud-systems) for Google Firebase integration and data synchronization.
- [Local Data Storage](#local-data-storage) for efficient data persistence and retrieval.
- [Electronic Health Integration](#electronic-health-integration) for managing FHIR data and data interoperability.
- [Mobile Health Data](#mobile-health-data) for accessing HealthKit data.
- [LLMs and AI Integration](#llms-and-ai-integration) for AI-driven functionalities.
- [Spezi Questionnaire](#spezi-questionnaire) for customizable forms.
- [Spezi Medication](#spezi-medication) for managing medication details, dosages, and more.
- [Tasks and Reminders](#tasks-and-reminders) for task scheduling and notification management.
- [Spezi Notifications](#spezi-notifications) for implementing user notifications and related.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree, let's keep it to stable (post 1.0) modules (maybe with an exception for e.g. SpeziLLM?), not individual features.

Comment on lines +15 to +28
- [Spezi Onboarding](#spezi-onboarding) for user onboarding with welcome screens and more.
- [User Management](#user-management) for login account creation and customization flows.
- [Spezi Contact](#spezi-contact) for managing and displaying contact information.
- [Spezi AccessGuard](#spezi-accessguard) for login access codes and biometrics.
- [Connected Devices and Spezi Bluetooth](#connected-devices-and-spezi-bluetooth) for supporting Bluetooth-connected devices.
- [Cloud Systems](#cloud-systems) for Google Firebase integration and data synchronization.
- [Local Data Storage](#local-data-storage) for efficient data persistence and retrieval.
- [Electronic Health Integration](#electronic-health-integration) for managing FHIR data and data interoperability.
- [Mobile Health Data](#mobile-health-data) for accessing HealthKit data.
- [LLMs and AI Integration](#llms-and-ai-integration) for AI-driven functionalities.
- [Spezi Questionnaire](#spezi-questionnaire) for customizable forms.
- [Spezi Medication](#spezi-medication) for managing medication details, dosages, and more.
- [Tasks and Reminders](#tasks-and-reminders) for task scheduling and notification management.
- [Spezi Notifications](#spezi-notifications) for implementing user notifications and related.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And we should probably also note down that we only mention our graduated modules here, not "beta" ones

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably need separate .license files here to make the CI pass

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here.

@@ -0,0 +1,50 @@
# Spezi Starter Guide
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The content of the starter guide depends a bit on the actual use case. Do you want to just use Spezi modules to build your own health application, fork&contribute to modules, file issues etc.
We should clearly define the target audience for the starter guide. For now, the starter guide is written for future Spezi contributors.

1. Access the **[Template Application(#https://github.com/StanfordSpezi/SpeziTemplateApplication)]** here.

2. Continue with the **Setup Instructions**:
- Start by **forking the repository**.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We didn't reference the added .pngs yet, right?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should definitely reference all added screenshots in the docs


- Follow the setup and run instructions provided here: [Setup Guide](https://spezi.health/SpeziTemplateApplication/documentation/templateapplication/setup)

> You may need to update packages, this is how it works best in XCode:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I get that updating packages is important but as our template app should be mostly up to date either way, the more important thing would be to show how to add new packages with SPM to the template app. I'm aware that this isn't our doc responsibility and we can just refer to the SPM docs, but for newcomers that might be overwhelming, meaning nice and easy to follow screenshots would be great.


- If you're ready to work on your first ticket, we recommend checking out the [tickets labeled as "good first issue"](https://github.com/StanfordSpezi/Spezi/issues?q=state%3Aopen%20label%3A%22good%20first%20issue%22), which are specifically designed as starter tasks.

- Of course, we encourage you to reach out to us directly to discuss potential collaboration opportunities.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we add a specific contact person or mail (e.g. speziteam@stanford.edu) here? Or is this held vague on purpose?

Comment on lines +45 to +47
- You can explore the current tickets in the [Project Planning Dashboard](https://github.com/orgs/StanfordSpezi/projects/1/views/1) to gain an initial impression of the project's scope.

- If you're ready to work on your first ticket, we recommend checking out the [tickets labeled as "good first issue"](https://github.com/StanfordSpezi/Spezi/issues?q=state%3Aopen%20label%3A%22good%20first%20issue%22), which are specifically designed as starter tasks.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great links to get started and find tasks! 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
Status: In Progress
Development

Successfully merging this pull request may close these issues.

4 participants