Main Codecov

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:

Link copied to clipboard

This module provides Account management components.

Link copied to clipboard

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.

Link copied to clipboard

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.

Link copied to clipboard

This module provides a simple screen to display contact information.

Link copied to clipboard

Module that provides access to different CoroutineDispatchers and CoroutineScopes in coroutine-based components to manage concurrency and threading.

Link copied to clipboard

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.

Link copied to clipboard
Link copied to clipboard

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).

Link copied to clipboard

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.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

This module provides multiple onboarding screens:

Link copied to clipboard
Link copied to clipboard

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.

Link copied to clipboard

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.