in collaboration with
Genaro B., Dillon H., Michael L., Cera S., Cicelia S., Edward S., Mathis
T., Matthew Y., David Z.
VolunteerOne is a peer-based mobile app that aims to connect volunteers to their communities through posted opportunities and events. Its purpose is to increase community engagement and emphasize input from volunteers on their skills, interests, and experience to match suitable opportunities and create more impactful contributions. Features include clear communication channels between organizations and volunteers, hour tracking for groups looking to volunteer together, and various social features, including sharing experiences with friends, family, and organizations.
VolunteerOne is a modern volunteering approach that aims to simplify and streamline the volunteering experience for both organizations and volunteers. Our one-stop solution includes a management system that facilitates communication, searching for volunteer opportunities, and consistency. Unlike other products with a similar goal, such as VolunteerMatch [1], we have taken into account the dissatisfaction of users with confusing layouts and layouts with overwhelming details. Our mobile app is designed to be simple, user-friendly, and interactive, addressing the main issue at heart: how to increase community engagement through accessibility.
We have addressed major problems that occur in current volunteer management services, problems such as handling communication and coordination, using volunteer skills effectively, and managing volunteer burnout, as noted by volunteering logistics company Volgistics [2]. In order to address these problems, our app features multiple communication channels, including an announcement board for organizations to keep information up-to-date for their new and existing volunteer opportunities. It also displays key details for those opportunities and events in a succinct and visually appealing way, allowing volunteers to make well-informed decisions about how they can make an impact in their community. Additionally, we have included a social aspect to our app, allowing users to interact with friends and family, allowing them to share their experiences, photos, and the other activities they participate in.
VolunteerOne is meant to be the first place people look for anything related to volunteering. It is a full-service app designed to benefit its community. Volunteers and organizations looking for ways to interact with their community will benefit greatly from VolunteerOne.
As the project manager and lead of the frontend team, I contributed to the planning, design, functionality, and review of the mobile app. After choosing a suitable theme for our mobile app, I cleaned the theme repository and created the skeleton for the app to act as the foundation for everyone else to build upon. I built the navigation that would route screens in the correct order, and styled the layout that would be used throughout the app. I also managed the frontend team by creating and delegating tasks to implement key features in a timely manner so that our project would be finished within our timeline of 3 months. Lastly, I conducted code reviews to maintain coding standards for the team.
In this survey paper published in 2002 by Bussell and Forbes, they claim that recruiting and retaining volunteers requires understanding the target market by understanding what volunteering is, who volunteers, where it occurs, and why people volunteer. The authors present the relevant literature on these four problems, attempting to define each area as well as probe the current problems. To understand the success of an organization's ability to recruit and retain volunteers, the article analyzes prior research and current metrics with regard to the donation of time. This concludes to the understanding of volunteer motivations which prove to not simply be due to altruism. [3]
With the design of VolunteerOne, we tackle the volunteer problem by considering specifically the who and why of volunteering. Brussel and Forbes explain how other studies found younger people are less likely to volunteer than those over 50 [3]. VolunteerOne aims to help organizations rectify this age variability by implementing a system that lowers the friction needed to start volunteering and incentivizes it through social connections and statistics. Furthermore, Brussel and Forbes identified multiple "whys" for volunteers - from seeking to help others, to the ability to gain skills, value alignment, and egoistic motives [3]. VolunteerOne recognizes the different motivating values and seeks to appeal to those with features such as interest matching and organization pages so prospective volunteers can choose organizations and events serving missions vital to them. This article helped shed light on some of the fundamental problems with understanding and acquiring volunteers, allowing VolunteerOne to deliver a technical solution.
Volunteer Motivation and Satisfaction, an article by Hyejin Bang and Stephen D. Ross examines the motives behind volunteers. Historically, theories on the motivation of volunteering have been attributed to altruism, social contact, personal interests, and emotional needs [4]. Studies have shown that many of the reasons for volunteering are to satisfy individual needs or interests and the primary reason for volunteering was not altruistic.The purpose of the study is to conduct research on the scale development of volunteer motivation [4]. One result of the study finds that it is imperative for volunteering event managers to understand the motivations of volunteers and how each volunteer can be assisted in achieving a sense of personal satisfaction [4].
This article notes that the way younger individuals view volunteering has shifted from how older generations viewed it. As stated, one of the primary reasons for volunteering for new generations is to satisfy individual needs and interests. With VolunteerOne, we are catering to the younger individuals by creating a social network platform centered around volunteering, and we enable users to select events that align with their personal interests. By modernizing how volunteering recruitment is done, we approach the process with a more fun and social aspect that will continue to attract newer generations to volunteering.
Being a volunteer means many things and takes many shapes. As expressed in the article Meanings of Organizational Volunteering: Diverse Volunteer Pathways by Kirstie McAllum, there exists what one may call volunteering pathways. The article explores the motivations and reasons for volunteering. As well as, the benefit that comes from volunteering both for the individual and the organization [5]. More importantly, the study is unable to define volunteering as “participants struggled to pinpoint which type of activities could be considered volunteering” [5]. However, it does shine a light on some potential different types of pathways named “freedom–reciprocity” and “giving–obligation” [5]. The article goes more in-depth on what each of these pathways means and how individuals benefit from volunteering, how they interact with organizations, and how they behave after volunteering is no longer an option.
This article showcases that participants may volunteer to achieve a prefer-self under “freedom-reciprocity” while those under the “giving-obligation” pathway aim to achieve a sense of ideal-self [5]. Regardless of what pathway an individual is seeking to take, VolunteerOne is the perfect idea to help everyone achieve their individual goals. With a centralized hub of opportunities, users looking for casual opportunities can find them. The user looking to volunteer more often and on a more personal level can also find opportunities. Or for those who have stopped volunteering and are seeking to come back [5] for one more shift. Regardless of the needs and motivations behind the user, VolunteerOne is the tool that will help them find what they need.
Description | Technology |
---|---|
Supported operating systems | Cross-platform (Android, iOS) |
Programming Languages | JavaScript, Go |
Project Dependencies | React Native, Expo, Gin, GORM, Mockery |
Containerization | Docker |
Database | SQL Server 2019 Standard |
Hosting | Digital Ocean |
From a high level perspective, the backend architecture, shown in Figure 2.1, is broken down into two separate docker containers: the app and database containers. This design choice was made for easy and consistent deployment for not only local testing, but actual production hosting on the server. With Docker, we can have one script which provisions all necessary containers and dependencies, in order for our app to function properly no matter where it's being hosted.
The backend architecture follows the Controller, Service, Repository design model. This design model was chosen because it allows abstraction between different layers of the application. The benefit of this abstraction will be detailed heavily in this section.
The Controller layer contains the public facing handles for routes of the API. HTTP requests from the client are made to these routes, and the controller layer contains the method interfaces necessary to consume these requests. For example, the /signup route for the API is handled by a Signup() method implemented as a LoginController. Specific implementation details will be in section C where architecture for individual use cases are described.
The Service layer contains business logic that the Controllers use. For example, when a user signs up, their password must be hashed before it’s placed in the database. Instead of implementing this functionality directly in the controller, this logic is implemented as a service method, which is called by the controller instead.
The Repository layer contains all logic which interacts directly with the database. Only at this layer will actual calls to the database be allowed.
Initially, our main goal for the mobile application was to create a minimum viable app that contained all the necessary screens correctly routed together. As we have completed that goal with more than 15 different screens and seamless navigation, our next goal was to enhance our app by creating an accessible, interactive, and personable experience for our users. We continued to deliver features that would serve those objectives through our quick swipe, post reactions(like/comment), and user skills feature. Since making those additions to our app, we have met our goals and objectives.
Although we created an intuitive volunteering app, we acknowledge that we could have expanded it further to benefit our target audience even more. We had considered features like hour logging and an event scheduler, but due to time constraints and the complexity of previous and new tasks, we were unable to implement them.
Our approach to creating an effective user interface for our mobile app set us up for success. By using React Native as our framework, we utilized its strength of code reusability. We were able to plan and structure our project with reusable components and it not only made the project more collaborative and efficient, but it also made the code more readable. By starting with a well-thought out and structured project skeleton, it made it possible to develop and build upon one another’s contributions with ease. Our approach worked well for our team dynamic and we would strongly recommend planning a project with an approach similar to ours.
Since the first design document, a large portion of the API is complete. We have implemented all the requirement endpoints needed. The JWT protocol authentication has since been added as a feature so our endpoints are secure through the authentication middleware. Since this is implemented it was very easy to apply to all of the protected routes.
Currently, most of the test coverages are relatively high in comparison from the last document. Refactoring for unit testing has been the hardest factor since adopting the new Controller, Service, and Repository architecture. Because we chose to use GORM and Golang, the testing portion of this project has been the longest and most difficult problem. In addition, the Docker setup was highly faulty on some members’ computers. It mainly worked half the time, but when it did. We were able to test the code using GOBCO, Postman, and etc.
Our final backend was successfully completed with less problems that we had initially thought. Thankfully, we were able to get all APIs working. The full backend team agrees that learning GO and GORM for this one project was a risky idea. Only one person fully knew how GO and GORM worked, while the rest of the team had to learn it while producing results. We were all able to finish our tasks, but had we chosen a language we all were comfortable with, the project would have gone faster and smoother. Furthermore, we should have emphasized deploying our web server and CI pipeline from the very beginning, that way we could have iterated more slowly and methodically.
The full team has gone through this semester with many sleepless nights while trying to learn new tasks that they have never tried before. We as a team were able to complete the app, and complete issues at hand as a team. There were many miscommunication issues, however, we all were able to work through it. Our teams were well put together and think it was the best idea to split the team from backend and front end.
[1] Remarkable outcomes. VolunteerMatch. (n.d.). Retrieved March 28, 2023, from https://www.volunteermatch.org/.
[2] Team, V. (2022, September 19). 9 Problems You May Be Facing With Your Current Volunteer Management Process. Volgistics. Retrieved March 28, 2023, from https://www.volgistics.com/blog/problems-current-volunteer-management-process/.
[3] Bussell, H., & Forbes, D. (2002). Understanding the volunteer market: The what, where, who and why of Volunteering. International Journal of Nonprofit and Voluntary Sector Marketing, 7(3), 244–257. https://doi.org/10.1002/nvsm.183.
[4] Bang, H., & Ross, S. D. (2009). Volunteer motivation and satisfaction. Journal of venue and Event Management, 1(1), 61-77. https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=57bcd374bf289b02f99651d06adda4bdde4208f5.
[5] McAllum. (2014). Meanings of Organizational Volunteering. Management Communication Quarterly, 28(1), 84–110. https://doi.org/10.1177/0893318913517237.
This project was created for UNLV's Spring 2023 Senior Design Project Competition.