Open-source framework for rapid development of modern, interoperable digital health applications.
Note
Refer to the Initial Setup instructions on how to integrate Spezi into your application!
Spezi introduces a standards-based modular approach to building digital health applications.
![]() ![]() |
![]() ![]() |
![]() ![]() |
---|---|---|
The Spezi Onboarding Module | The Spezi Contract Module | The Spezi Questionnaire Module |
The best way to get started and explore the functionality of Spezi is by taking a look at the Spezi Template Application. The application incorporates a wide variety of sophisticated modules and demonstrates the usage of these modules in a simple-to-use and easy-to-extend application.
You can find a list of modules and reusable Swift Packages offered by the Spezi team at Stanford at the Swift Package Index Stanford Spezi page.
Note
Spezi relies on an ecosystem of modules. Think about what modules you want to build and contribute to the open-source community! Refer to the Spezi Guide and Documentation Guide about the requirements for Spezi-based software components and the Component
and Module
documentation to learn more about building your modules.
Learn more about Spezi at spezi.stanford.edu. Reach out to us on social media and use the Stanford Spezi Discussion Forum to ask any Spezi-related questions or share the projects you built with Spezi.
Check out the Stanford Biodesign Digital Health GitHub organization and Stanford Biodesign Digital Health website at bdh.stanford.edu, for example, applications built with Spezi and some of our related open-source and research projects.
Note
The Spezi Guide and Documentation Guide guides define the requirements for Spezi-based modules, including terminology, hints, and examples on structuring your Spezi module, Swift Package, and surrounding repository.
A Standard
defines the key component that orchestrates the data flow in the application by meeting requirements defined by components.
You can learn more about the Standard
protocol and when it is advised to create your own standard in your application in the Standard
documentation.
A Component
defines a software subsystem providing distinct and reusable functionality.
Components can use the constraint mechanism to enforce a set of requirements to the standard used in the Spezi-based software where the component is used.
Components also define dependencies on each other to reuse functionality and can communicate with other components by offering and collecting information.
They can also conform to different protocols to provide additional access to Spezi features, such as lifecycle management and triggering view updates in SwiftUI using the observable mechanisms in Swift.
You can learn more about components in the Component
documentation.
To simplify the creation of components, a common set of functionalities typically used by components is summarized in the Module
protocol, making it an easy one-stop solution to support all these different functionalities and build a capable Spezi module.
For more information, please refer to the API documentation.
Contributions to this project are welcome. Please make sure to read the contribution guidelines and the contributor covenant code of conduct first.
This project is licensed under the MIT License. See Licenses for more information.