Internship project: ODK 2 Services - Push notifications

Welcome prospective Google Summer of Code or Outreachy participants! Please use this thread to discuss your ideas for the ODK 2 Services - Push notifications project.

Introduction
The ODK 2 Tool Suite is an exploratory set of tools that is capable of handling more complex data workflows and mobile data management than the ODK 1 Tool Suite that most users are familiar with. ODK Services is an Android app that manages the database, file system access, and cloud synchronization for all of the ODK 2 Android tools. It is the central hub for all the other ODK 2 Android apps.

A common request from organizations who use ODK 2 is to be able to send instructions to their field workers via push notifications. This is especially important for larger organizations that might have a large and changing group of workers where the logistics of SMS might be difficult.

In this project, you would be building the pipeline to support these push notifications directly from an organization to their mobile devices. You would be implementing Firebase Cloud Messaging in the ODK Services app to register devices and receive messages. You would further be building a standalone Java application to post messages to the Firebase server, which would relay those messages to registered ODK Services instances.

Requirements: Java and Android experience. Knowledge of HTTP protocols desired.
Repository: GitHub - odk-x/services: An application for handling database access, file access, and data synchronization services between all the ODK-X applications. It allows you to synchronize data collected by the ODK-X Android tools with a cloud endpoint.
Difficulty: Hard
Mentors: Jeff Beorse (@Jeff_Beorse)

hi jeff, i would like to work on this project. i will do some initial research and share my approach.
if you have any thoughts on how to get started please feel free to share.

Hey, @Jeff_Beorse I wish to work on this project as I have good skills on Google Firebase and I have done sample projects which use Firebase Push Notification. I have implemented in applications and website as well.
Email Id: nirmalkjoshi99@gmail.com

Glad to see some positive response to this project already.

@akmittal006 I have responded to your post on Github. Go ahead and try that issue out.

@Nirmal_Kumar_Joshi Could you link to some examples of your work? If you’re interested you could also try out this issue: Verify username screen · Issue #20 · odk-x/tool-suite-X · GitHub

Please let me know if you have any questions. You can find the current ODK 2 documentation here: ODK-X documentation — ODK-X Docs

Thank you for your recognition @Jeff_Beorse. I can create a service for the above issue using Google Firebase. I will develop a simple service to fix this issue and then we can implement it in the ODK project. I have implemented Firebase basically on Ionic App Development and Web Applications. Can I go ahead by developing a simple application fixing this issue ?

Hi @Nirmal_Kumar_Joshi,

I actually don’t believe issue #1307 requires a Firebase service to solve. This is just meant as an exercise to see that you can find your way around in the ODK Services code base. It is hopefully a simple matter of reading from a settings file and updating the user interface. If you have found it to be more complex than that please let me know.

The Firebase service is (I am assuming) the way to solve the Push Notifications, but I don’t think we’re ready to start work on that just yet.

Hi @Jeff_Beorse I wish to work on this project , I forked the repository for services , and successfully build and installed apk on device , but m not quite clear about the use of this app , I mean is it similar to collect app ?. Are there any docs which can help me getting started ?, so i can understand the flow of app

Hi @Jeff_Beorse , got link to odk2 suite docs, it was already shared above :sweat_smile: ,exploring the codebase of the app right now and trying to set up odk 2 tools , I have fixed the github issue linked above and created a PR for the same . Here is link of project on which i have implemented FCM push notifications and used a little firebase cloud functions .
https://play.google.com/store/apps/details?id=com.practice.android.firstaid

Greetings Everyone! I am Harsh Bagadia. And i too, am interested in this collaborative project and have prior experience with php - fcm and fcm with firebase function to create custom push notification. Perhaps my inputs would be slow.

I would like to know about other such requests made, upon which we can ideate before we are ready to work.

Hi @Jeff_Beorse , since its my first time going through such a big codebase , I m feeling a bit lost :sweat_smile: , could u please suggest me how should i proceed with the codebase and any docs regarding androidlibrary ?

Hello! @Jeff_Beorse I am interested in this project and have experience with android apps and knowledge of Git and Firebase.
My github profile: codedsun (Suneet Srivastava) · GitHub
Please guide me how to get started.

Hi all,

@Harsh_Bagadia, the ODK 2.0 tool suite is only fairly recently released. When I was talking about that feedback, that was from beta testing partners who tried it in the field and reported back to the core developer team at the University of Washington. Currently the new way that we get feedback is through three avenues: this forum, the Developer Calls, and on the Github Issue Tracker.

@Harsh_Bagadia and @codedsun I will be adding some new “quick win” issues over the next few hours and will offer some of them to you as a means to get started. In the meantime, please try checking out and building the ODK 2.0 tools and running the initial tutorial. You can find that here. You can also try out the community generated tutorials here.

@SatyamBansal you are right, this is a very big code base and it can be confusing. Unfortunately we do not have detailed documentation for the source code at this time. But I am happy to help give you a tour and guide you to find a resolution to the issue. We haven’t finished creating new Slack channels dedicated to ODK 2 (they are in progress), so in the meantime you can direct message me on http://slack.opendatakit.org/ to username @jbeorse. I am in USA Pacific time zone but I am sure we can find overlapping times.

Hi all,

@Harsh_Bagadia after going through the tutorials, maybe you can take a look at issue #1370.

@codedsun similarly, when you’re ready maybe you can take a look at issue #1372.

Feel free to look at other issues that are open too. Please comment in or claim the issue you want to work on so that other contributors know it is taken.

@SatyamBansal It has been pointed out to me that it would be better to keep this discussion public, and I agree, so please post a question on the #internships channel on slack for now, and I will respond in a thread. We can migrate to the ODK 2 channels as they are created.

Anyone else who has code questions please do the same. I will be monitoring the #internships channel in slack and respond to your coding questions there.

Hi @Jeff_Beorse, I am looking to contribute to this project, I’ve relevant experience of Firebase and Android. It would be very helpful if you can assign me some issues which help me understand the codebase better.

Thanks

Hi @dexter21. Please review the documentation linked earlier in this thread and try to get the demo apps running and do the tutorial. When you are done with that you can check our issue tracker for open issues: Issues · getodk/getodk · GitHub

You could try #1376.

Hi All! New slack channels have been created! We now have #odk2-misc, #odk2-mobile-code and #odk2-server-code.

Please use those for more detailed coding, architecture, or development questions. @SatyamBansal we can move our discussion into #odk2-mobile-code.

Hey, @Jeff_Beorse I want to work on this project. I have worked on Google Firebase for an application project. As the FCM is part of it where one mobile can send a push notification to another mobile by an HTTP request using Volley.
Email ID :- harsh20111997@gmail.com
Portfolio :- harsh2011.github.com

Hi @harsh2011.

To try out this project, the first thing to do is look through the documentation here: http://opendatakit-dev.cs.washington.edu/2_0_tools/release/218 and try out the tutorials. You could also try out the community posted tutorials here: Community contributions to upcoming ODK 2.0 documentation refresh - #2 by elmps2018

After you can run the tools locally and have a decent understanding of how they work, you can clone the source code from github here:

After that you can grab an issue from the tracker and try it out: Issues · getodk/getodk · GitHub

hello @Jeff_Beorse i would love to work on this project hope its not too late? if i’m not please what are the necessary things i need to do as soon as possible. Thank you

Hi @Didicodes. It is not too late, but I see on Slack you have posted that you are working on the Device to device transfer project. Good Luck!