ODK-X: Migrate Database & Integrate Push Notifications

Hi everyone,
My name is Vyankatesh. As a GSoC’20 student, I will be working on a project “Migrate the Database and Integrate ODK-X Push Notifications into ODK-X Tool Suite” with Open Data Kit Community.

I will like to thank my mentors @jeff.beorse and @guptaharsh615, who guided me throughout the process.

I will be using this topic to post about my work progress.

Looking forward to work with the community!! :smiley:

1 Like

[Community Bonding Period] Week 1:

The first week started with @jeff.beorse welcoming us to the community. He congratulated all the selected students and guided us about what we have to do next.

Then I had first call with mentor @guptaharsh615. During our conversation, we discussed a few points related to my proposal and its implementation details. Harsh confirmed that I have a running setup require for this project and guided me about what I should do next.

When I have done with replying to congratulations messages :grin: I started reading sync-client (which is the major part of this project ) documentation and will complete it in the next few days.


[Community Bonding Period] Week 2:

This week I completed reading ODK-X Sync-Client Documentation.

What is Sync-Client?
Sync-Client is a class used to communicate with the ODK applications and server database via the REST API. This class uploads data to the server and downloads data from the server. As the project involves migrating the database from the firebase to the Sync Endpoint server, Sync-client is a major part of this project.

After reading the documentation, I also tried to implement some of the methods of Sync-Client class. I was able to create a table in the server database and row in a database table to store the information. I was also able to upload and download files from the server.

Next, I will discuss with mentors some points related to Sync-Client documentation, which I didn’t understand and will work on database structuring.


[Community Bonding Period] Week 3:

This week I worked on database structuring. For the database, the initial plan (which I mentioned in the proposal) was to go with the same structure as in firebase. But after reading Sync-Client documentation, I realized that there are some columns in the server database (ex. date, time) whose data we don’t need to store explicitly, it will automatically get stored when we create an entry for that row unlike in firebase. So I removed those columns from my originally proposed database structure to keep database simple.

I also worked on the layout of the ServerDatabaseCommunicator class, which will be used in Desktop and Mobile applications for communication with server Database.

Here you can find the rough layout of the ServerDatabaseCommunicator class and database structure.

1 Like

[Community Bonding Period] Week 4:

This week I started working on the database migration for Desktop App(Skunkworks-Parrot).

After a discussion with mentors, we decided that to account for my university exams we should move up the timeline so that the project deadlines will not get affected. So I started working on a project a week earlier than decided.

For database migration in the Desktop App, I started working on the ServerDatabaseCommunicator class. In that, I implemented the methods for initializing the SyncClient, creating tables in the server database, and uploading notifications and groups.

Here you can find code for the same.