What is ResearchStack?

ResearchStack is an SDK and UX framework for building research study apps on Android.

It is designed from the ground up to meet the requirements of most scientific research, including capturing participant consent, extensible input tasks, and the security and privacy needs necessary for IRB approval.

Is it similar to Apple's ResearchKit(TM)?

Yes, an overarching goal of ResearchStack is to help developers and researchers with existing apps on iOS more easily adapt those apps for Android.

Though the correspondence of features between the two SDKs isn’t one-to-one, the two SDKs will offer enough shared functionality and a common framework and naming scheme to greatly speed up adaptation of ResearchKit apps to Android (and ResearchStack apps to iOS) and the procedural aspects of running a study on a new platform (such as IRB approval and secure connectivity with a data collection backend).

What features are available?

Researchers and developers can leverage ResearchStack to build a basic Android app without having extensive knowledge of the Android platform. Using JSON and HTML files, a simple app can be built that will include the onboarding flow (Study Overview/Consent/Sign Up) and an Activities screen with scheduled tasks for the user. Researchers will also be able to reuse existing ResearchKit AppCore resources, with some minor changes.

Included graphing libraries facilitate data visualization. ResearchStack also has tools to allow easy on-disk encryption and strives to be extensible so that researchers can implement or modify screens they need.

I have an existing ResearchKit app, how do I port it to ResearchStack?

Not all ResearchKit apps were made equal but, if your ResearchKit app was built using the 'AppCore' JSON schemas and other assets, you can adapt those over to work in ResearchStack with minimal effort. Along those lines, the SampleApp is an excellent, lightweight implementation of AppCore assets into ResearchStack to reference.

We are also currently working to develop tutorials on adapting ResearchKit apps to ResearchStack but, in the meantime, probably the best reference is to look at actual implementations of ResearchKit apps to ResearchStack. The open source iOS and Android repositories for OHSU's MoleMapper are good examples to start with (particularly if your app uses Sage Bridge for a backend).

If your ResearchKit app was not built using the features of AppCore, the road ahead involves a bit more work but should still be familiar to you, since the naming schema and APIs of ResearchStack are deliberately similar to those of ResearchKit. A good place to look is the Backbone ExampleApp, which sticks a bit closer to the "metal" of the ResearchStack framework.

Where's the documentation?

ResearchStack has two primary modules. Backbone contains the core ResearchStack functionality and is designed to follow the APIs laid out in Apple's ResearchKit core as closely as possible. Skin is an application framework that implements the functionality of ResearchKit's AppCore. Links to the Javadocs for both Backbone and Skin are below; be aware that the documentation is itself a work in progress. Please post any issues on the ResearchStack GitHub.

Are there extensions or packages available?

The ResearchStack community is still nascent, but a number of extensions -- including ActiveTasks -- are currently in the works. We'll be publishing a list of them here, as they become available.

Who is backing this project?

ResearchStack is maintained by Cornell Tech's Small Data Lab and Open mHealth. The current project maintainers are Deborah Estrin, Michael Carroll and Neil Lakin.

A special debt of gratitude is also owed to Robert Wood Johnson Foundation, which provided initial funding for the project, and to OHSU, Sage Bionetworks, touchlab, Dan Webster, and all of our volunteer contributors for their involvement in getting the initial platform and MoleMapper Android off the ground.

How can I contribute?

We ❤︎ contributors! Please check out our CONTRIBUTORS file for details on how to submit a pull request to ResearchStack.


For further questions, please join the ResearchStack forum or contact the ResearchStack team.