Hack Crisis hackathon project

Over the weekend, together with Jacek Bazydło and Karolina Sala, I took part in an (online) international Hack the Crisis hackathon to fight coronavirus. The hackathon was hosted by DO OK with partnership from Govtech Poland, AWS, Google, Guaana and ProIdea. Our application Crisis Help tackles the problem of isolation - government is asking people to stay home, but the resources we keep in our households aren’t limitless. The application allows you to share information that you are missing specific kind of mandatory products in your household and share this information with government specified institutions (for MVP purposes, this is an open list, so that anyone can help).

Full code of our project is hosted here. The code is Open Source under the MIT license, so if you have any idea how to improve it and help more people, just do it.

Hackathon category: Isolation

Meet the team

Project video presentation

(Voice modulation in the trailer made me sound like Kylo Ren…)

Technical details

Help Request model

This is the core model of our application. It describes a user help request that can be seen by others to provide supplies.

FieldTypeRequiredDescription
deviceIdStringYesThe unique mobile device identifier
waterString : [Normal, Bad, Critical]YesWhat is the user status of water supplies
foodString : [Normal, Bad, Critical]YesWhat is the user status of food supplies
medsString : [Normal, Bad, Critical]YesWhat is the user status of meds supplies
isConvBoolYesIs the user diagnosed with Coronavirus
latitudeDoubleYesUser latitude geolocation
longitudeDoubleYesUser longitude geolocation
descriptionStringNoAdditional description, if the user has something to add

Backend documentation

System structure

We decided to use cloud services to increase the scalability of our application. Backend services are contacted through HTTP requests from the mobile application. The requests lands in the API Gateaway and is directed to the requested Lambda function (Python3.7). The function processes the request and makes changes in the NoSQL DynamoDB table containing all HelpRequests.

Lambda endpoint details

Lambda functionTypeParametersDescriptionCode
newHelpRequestPOSTHelpRequestCreates a new HelpRequestLink
deleteHelpRequestPOSTdeviceIdRemoves user HelpRequestLink
getHelpRequestGETdeviceIdGets user help requestLink
getAllHelpRequestsGETlatitude, longitude, radiusGets help requests at radius to user locationLink

AWS endpoint urls

iOS documentation

Dependencies

Dependencies are managed by the Swift Package Manager (SPM).

DependencyVersionDescriptionDependency Page
Alamofire5.0.4Handling external API requestsLink
SwiftyJSON5.0.0Processing JSON file formatLink
ObjectMapper3.5.2Mapping JSON to HelpRequest objectsLink

App structure

The application implements the MVVM architecture pattern.

DirectoryDescription
ModelHolds classes responsible for storing the data model information
ViewContains SwiftUI view building blocks
ViewModelContains classes responsible for View-Model communication
ServicesContains device and backend communication classes
ExtensionsContains class extensions making life easier

Summary

Although we didn’t get into the TOP30, I found this hackathon bringing valuable experience. Good that such events take place, as they bring opportunity for various individuals to connect together and tackle real life problems. And who knows, maybe some of the projects will actually help someone during these hard times.

Thanks everyone and carry on!


Tell me what you think!