Inspiration

With this global pandemic, a lot of people are scared to go outside because of the fear of contracting the virus and bringing it into the house. Some populations are at more risk than others. There are also people who need items but can’t go outside because they are self-quarantining after traveling or are self-isolating due to contracting the virus. I wanted to somehow help the ones who are not going outside in order to make them feel safer and have more protection. When I saw #BuildForCOVID19, I saw it as an opportunity to fulfill that goal of mine. I decided to create HelpOthers to allow people to volunteer to help the ones who are at greater risk by getting the items the users need. The app has options for groceries and prescription. Though grocery stores do have online options to deliver to one’s home, sometimes people might want items from smaller businesses that might not be able to deliver. Users can ask for items from those stores with this application and volunteers can pick them up for them.

What it does

HelpOthers is currently a working prototype that can be utilized. When the app is opened, a welcome screen is shown. On this screen, the user can decide whether they “want help” or “want to help.” If the user decides the first option, another screen pops up asking for their name and what they want help with: “groceries” or “prescription.” Choosing either option brings them to a screen that allows them to input what they need from where. When they go to the next screen, they are then prompted to enter at what time they would like their items delivered as well as what address their items should be delivered too. Next, the user is sent to a loading screen as they are being paired with a user. When the user is paired, they are brought to a status screen that notifies them when the volunteer has retrieved and delivered the items. The user can then return back to the main screen to start the process over again if they would like something else delivered to them. If the user decides the second option (“want to help”), the next screen asks for the user to input their name and then prompts them to hit the next button. They are then brought to a list of people who need help who are within about a 10 mile radius from them. Users who are currently being helped are not listed as they are already being helped by other volunteers. The user can browse through each person, seeing what category of items they need, when they need the items by, and what address they want it delivered to. When the volunteer selects a person, they are brought to a page with the list of specific items needed as well as the destination address. The volunteer can go pick up the items they need to within the time that was specified and notify when the items have been retrieved and delivered. The volunteer can deliver the items to the user’s doorstep instead of handing the items to minimize contact.

How I built it

I built this application using Swift. The simple UI designs (the buttons, the main screen’s background, and the app icon) were created with Figma and the layout of the UI was created with SwiftUI. As a backend, I stored the information obtained from the user in Firebase. Finally, I used Swift CoreLocation and MapKit to help get the current location of the user and get coordinates of the address inputted by the user who wanted help. The reason I used Swift was because I thought this idea would be more accessible on a mobile application. I have had some experience building iOS applications, so creating this product helped me better my skills in Swift.

Challenges I ran into

One of the challenges I ran into was determining the best way to store the information that I wanted to collect and utilize later on from the users. I initially thought of storing the data persistently, but I decided to try something new. I utilized Firebase because it was very user friendly and allowed me to easy store, retrieve, and remove data from the database. Another challenge that I ran into was learning about completion blocks in Swift. I had to understand what was available to me in and outside of the completion block in order to make my code as efficient as possible. The challenge of using completion blocks was that info that I retrieved within the block wasn’t necessarily available to me outside of the block. Rather, it depended on where I accessed that information in my code.

What I learned

This application definitely bettered my skills as an iOS developer. I deepened my understanding of iOS concepts, such as completion blocks, storage, and iOS infrastructure. I learned how to use a different database instead of storing items persistently within the application. During this process, I also learned much more about the virus and what are all the steps the world needs to take to stop it. I am willing to rise to the occasion and help solve this global health crisis.

What's next for Help Others

As I think about this application for the future, there are still a couple things I would like to implement. The first thing is a payments button. The volunteers will be buying the items for the user needing help. However, the user needing help needs to pay the volunteer back for what they needed to buy. Having a payments button will allow the volunteer to charge the user the amount that they paid for. Another thing that will be needed to implement is a unique way to secure data that we get from the user. For example, prescriptions are private info. We want to make sure that this info is secure.

Accomplishments I am Proud of and Conclusion

During this extraordinary time, a lot of people want to help out. And there have been people who have been doing so much: donating healthcare materials, checking in on others, and even washing their own hands. My goal as a CS major is to help the world by creating a product that positively impacts a community. I am proud of the fact that I could create a potentially beneficial product in such a short period of time. I did struggled grasping new concepts, but I was determined to understand them in order to create a useable product to demo in the end. This application is my way of attempting to use my CS knowledge to benefit the population. I have created this app to give others an opportunity to help someone when they want to help out but don’t know how.

Share this project:

Updates