Spezi
Kotlin & Android Version of the Stanford Spezi Framework
An Ecosystem of Modules
Spezi is a collection of modules that can be used to build Android applications
Modules
-
Design System: Provides a cohesive user interface and user experience components. ./core/design/README.md
-
Account: Provides Account management components. ./modules/account/README.md
-
Onboarding: Provides Onboarding screens for the application. ./modules/onboarding/README.md
-
Contact: Provides Contact screens. ./modules/contact/README.md
Continuous Integration and Delivery Setup
Google Play Internal Deployment
First, create a Google Cloud Services Account and corresponding JSON secrets key in accordance to the fastlane supply documentation. Store the JSON representation of the key in a SERVICE_ACCOUNT_JSON_KEY
secret available to the GitHub action.
Follow along the Set up your Google APIs console documentation to create a OAuth client ID. Store secrets.xml representation of the key in a SECRETS_XML
secret available to the GitHub action.
This is the secrets.xml representation of the key:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="serverClientId" translatable="false">replace-with-actual-id</string>
</resources>
In Firebase, the provider Google must also be added in the project in the Authentication menu item in the Login method tab.
It is recommended to sign your APK before uploading it to the Google Play store. Setup your signing setup as detailed in the Sign your app documentation.
Create a base64 representation of your keystore (base64 -i ./filetokeystore/keystore.jks
) and save it in the KEY_STORE
secret available to the GitHub action. Save the keystore password and key password in the KEY_PASSWORD
secret and save the key alias in the KEY_ALIAS
secret, both available to the GitHub action.
Contributing
Contributions to this project are welcome. Please make sure to read the contribution guidelines and the contributor covenant code of conduct first.
License
This project is licensed under the MIT License. See Licenses for more information.
All modules:
This module provides Account management components.
The Template App is an integral part of the Stanford Spezi Framework and is intended to show how to use the Framework. The simple app shows the use of the Spezi modules and the core elements.
The Bluetooth module provides utilities for managing Bluetooth Low Energy (BLE) functionality on Android devices. It includes components for scanning, connecting to, and interacting with BLE devices.
This module provides a simple screen to display contact information.
Module that provides access to different CoroutineDispatcher
s and CoroutineScope
s in coroutine-based components to manage concurrency and threading.
The Design System Module is part of the Spezi framework, designed to provide a cohesive user interface and user experience components. It ensures consistent aesthetics and functionality across different parts of the application, enhancing both developer efficiency and user satisfaction.
The HealthConnectOnFHIR library provides a mapper that converts supported Android Health Connect Records to corresponding HL7® FHIR® R4 Observations with standardized codes (e.g. LOINC).
This module provides a flexible logging utility designed to handle various logging strategies. It includes a utility class SpeziLogger
for logging messages using inline functions to avoid unnecessary memory allocation for large string messages. The logging utility allows for configuration of logger settings and supports different logging strategies through the use of tags and configurations.
This module provides multiple onboarding screens:
This module provides tools and utilities useful for testing. It includes components or functions that facilitate the testing. Additionally, it exposes api
of libs.bundles.unit.testing
bundle.
This module provides a collection of utility functions, extensions, typealiases and helper methods to simplify common tasks within the project. These utilities are recommended to be reused across different parts of the codebase to promote code reusability.