As high schoolers, we need to be able to complete a certain amount of volunteer hours each year, but it is often hard to find volunteer opportunities in our area. Even then, the credibility of the event is still unknown. Many apps related to service/volunteer hours focus on logging hours volunteered and not opportunities available. And that's why we created Serv!

What it does

Serv is our all-in-one solution to this problem. Through Serv, you can easily and intuitively find nearby events based either by using an interactive map or by scrolling through upcoming events that are filtered based on distance or date and then sign up for them. As you sign up for events, the app recommends opportunities. Users can also add friends through QRCodes in the app to make volunteering even more fun. When you add a friend, you can view their stats and recent volunteer activity as well as common events that your friends are going to. There is also a live leaderboard with monthly challenges where friendly competition is encouraged to reach the Serv Champion! All of these aspects combined allow the app to not only provide opportunities but also make volunteering fun!

How we built it

Serv is built from the ground up using SwiftUI in the Swift language. We used Swift and Xcode to develop our application for iPhones and iPads. By integrating technologies like MapKit to show the map around the user and populate nearby events, and the Firebase API for the backend and to store data in the cloud, we were able to create a cohesive interface that is completely dynamic based on data in Firebase, making it easier to add events going forward. We use the QRCode API which allows us to implement features such as signing into events and adding new friends in the app. We also designed a beautiful user interface that is appealing to the eye and is smooth to use.

Challenges we ran into

While programming the app, one of the bigger challenges we ran into was how to implement the verification that a user was actually at a given event. So, we spent some time brainstorming different ideas to have the user check-in on the day of the event. At first, we were thinking about using geolocation, but that required the app to be open and running in the background. After some discussion, we were able to conclude that the best way was to scan a QR Code when leaving the events from the volunteer event's host phone. This way, we can add hours to the users' portfolios while making sure they actually were at the event.

Accomplishments that we're proud of

In the end, one of the biggest accomplishments that we are proud of is that we were able to create such a clean UI, especially in the Map view, where you can find events that are populated on the map, and you can click on them to learn more and view images that the host has published. This streamlined interface is one of our highlights of the app and took the most time to implement.

What we learned

By building this app, we learned about how to integrate MapKit with Firebase to create an easy experience for the user to add events to their saved events and view details about the event before signing up. More specifically, we learned how to use both types of Firebase databases: Realtime Database and the Firestore Database to store two kinds of data: User Data and Event Data in two separate schemas. Usually, we would have used either one, but in this case, we learned how to combine the benefits of both types of databases into our app. We also learned how to interact with the Google Cloud Firebase Storage to bring images stored in our backend into the frontend app.

What's next for Serv

In the near future, we plan to create organization maintenance functions where organizations can sign up through the app and visit a different interface that allows them to create events that they plan on hosting. Along with this, for organizations, we hope to create a background checking or verification system where when organizations are verified, they have a badge that helps users keep their peace of mind when signing up for events. We also plan to expand the competition aspect of the app and integrate more achievements or badges that users can earn to make the app more fun.

Built With

Share this project: