Background
During 2020, I began working with a new team of volunteers at Code for KC. They had been developing a project to help connect donors to nonprofit organizations for a couple of years, and were looking to start expanding its functionality. At the time, the site was developed entirely using WordPress, so all of its features were implemented using plugins. This made customization difficult, as different plugins were used for each feature. For example, user accounts were handled by one plugin, while the organization directory data attached to those user accounts was managed by another. As a result, they were hitting bottlenecks when trying to expand features.
Requirements
The project would need...
Organization data managed separately from the static WordPress site.
To allow nonprofits to register accounts and specify details to inform donors what items they need the most.
A donation area, where donors can select what kind of nonprofits they want to support, what items they have to give, and how they'd like to make a donation.
To match nonprofit profiles with the donor's input, highlighting where their donations can be utilized the most.
Contact functionality so that donors can reach out to organizations directly.
Development
Our first focus was migrating the existing data out of WordPress, and into a dedicated MySQL database. This was a bit tricky, since the plugins that were used had split the organization data across several tables and custom post types. I developed the queries to extract all of the directory data, and then passed the exported data on to a more senior developer to perform the migration.
Next, the other volunteer began work on the backend functionality using Go, while I developed basic components for the frontend. We were all volunteers with limited time to work each week, so it would need to require as little onboarding as possible, and be simple enough to put an MVP together quickly. Bootstrap met those requirements perfectly. Once the fundamental components were complete, I assisted the senior volunteer with implementing the general frontend functionality using Vue, such as form validation, state management, and data fetching.
As the project progressed, I started to pickup Go, and began assisting with the backend development. I began with simple tasks, such as input validation and adding fields to existing queries/tables. Eventually, this progressed to developing entirely new features, such as a contact endpoint handler that processed user input, injected it into a custom email template, and submitted it to the desired organization via Amazon SES.
Outside of development, I've also assisted with producing marketing materials, such as explainer videos, and have served as an advisory board member to help guide our general strategy.
Outcome
Since releasing our MVP, the project has progressed significantly. We now have over 55 organizations utilizing the application across the Kansas City metro, and have been featured in local startup publications and radio programs. We've continued developing new features, and are looking forward to expanding outside of the Kansas City are within the near future.