Inspiration

HACC 2020 Challenge: Hawaii State Archives – Gamification of Crowdsource Indexing

What it does

Project CLIO is a web application that allows Hawaii State Archives to crowdsource the indexing effort by gamifying it.

The user can create a job for the public by uploading a XML file that describes what and which kind of information needs to be extracted from the uploaded historical records.

The XML file is converted into a validating dynamic form for the volunteers to fill out and points are given per record. Overtime points could lead to awards being given.

The data submitted can be extracted as .csv

How we built it

The team was split into a frontend and a backend group that took care of issues created on GitHub.

The front-end of the application is built with React and it is hosted on an Microsoft Azure instance. We wanted to utilized client-side rendering to relieve the extra pressure that the system could experience while streaming over large binary data.

The back-end uses Spring, which is a Java framework, and with the help of Spring Data JPA. Spring Data JPA is a library that uses Java Persistence API and Hibernate framework to store Java objects directly into a relational data, cutting down on the amount of SQL that needed to be written by the developer. We tried our best to meet the recommendations provided by the challenge.

Challenges we ran into

Learning Spring, Lombok Annotations, Java Persistence Query Language and a lot of other new tools

Storing non-relational data such as .pdf and .xml was a challenge as PostgreSQL was not made for storing such contents, even though they do have supports up to a certain extent with LOB, bytea etc.

Working with our own API instead of a provided one and coding all the business logic

Hosting the site gave us a bit of a challenge when certain elements would not function, such as page routing.

Accomplishments that we're proud of

Building our own RESTful API

Creating a production CD/CI pipeline which combines continuous integration (CI) and continuous delivery (CD) to constantly and consistently build your code and ship it.

Being able to work collaboratively even though some people were physically distant and some in tough times and or packed schedules.

What we learned

We learned about ways to make a web application that is built with less abstractions and thus much more difficult. We also learned to make informed decisions regarding architectural designs, tools, languages, security, database types etc.

Dev Ops techniques such as automating pipelines.

What's next for Project CLIO

Support for .zip uploads for records

More awards

Badges (Icons and Colors)

Official Logo

OAuth Support (Facebook, Google etc...)

More robust security filters and session renewal

Ability to store more formats

Creating a upload endpoint that allows for multiple same name files to be save separately

Smoothing out the website with animations and a theme

Share this project:

Updates