Internship Project: New Date Prompts for ODK-X Survey

Welcome prospective Google Summer of Code participants! Check out our DIAL Sub-Org page and our main thread. Please discuss your ideas for the New Date Prompts for ODK-X Survey project here or in the project slack channel.

ODK-X Survey is an Android application for performing data collection in the ODK-X framework. It renders survey forms that are created by our users in XLSX spreadsheets and renders them on the phone using HTML, CSS, and Javascript in a webkit rather than native Android. Data collectors navigate through these forms and enter data that is later synced to the server. There are many prompt types including multiple choice questions, free text, numbers, geopoints, audio, video, and more.

This project is focused on adding new prompt types to capture dates and times. Survey currently supports only two prompts of this type: date and datetime. The first collects just the date using a series of dropdown menus, and the second collects both the date and the time in the same way. We would like to give our form designers more options for the types of dates they can collect. Examples of new date types:

  • Add a year only input prompt type
  • Add a month and year only input prompt type
  • Add a calendar prompt type that shows the month for a user to choose from
  • Add calendar prompt types for non-Gregorian calendars (e.g., Ethiopian calendar, Islamic calendar)

The Survey application is written in Java but the prompt types themselves are written using web technologies such as HTML, CSS, and Javascript. It is perfectly fine to use pre-existing date and time libraries, as long as their licenses permit it. This project is about integrating those date and time UIs (whether created from scratch or existing libraries) into Survey. There will also be some work to ensure the XLSX Converter that reads forms and compiles them can recognize the new prompt types, but there are patterns you can follow.

Github: Survey Project and Issue Queue
Skills: HTML, CSS, Javascript, JSON
Difficulty: Medium
Mentors: @Vyankatesh, @dexter21, @W_Brunette, @linl33