Who We Are

Change is a non-profit donation platform that streamlines everyday transactions into actionable donations by rounding up purchases to the nearest dollar.

Inspiration

Our idea for Change came from our own desire to give back to local communities in a way that felt manageable and realistic. We were largely inspired by Acorns: the incremental investing app that rounds up your purchases and invests the difference for you. Change works very similarly, but instead funnels the accumulated amount from rounded up payments into charities and non-profits that users feel passionate about while also helping users track, organize, and prepare their donations with clear, itemized tax-ready summaries.

What It Does

Change tracks a user’s transactions on selected bank accounts via Plaid and rounds up any purchases they make to the nearest dollar. Then, Change donates the amount to a charity/nonprofit according to the user’s selection and configuration. Users can select up to 5 charities/nonprofits to donate to at a time and then set goals they’d like to reach for each one. They can also choose to randomly disperse their change amongst all of their selected charities or complete goals one at a time (priority queue).

As these micro-donations accumulate, Change automatically organizes them into a centralized donation history and tax-ready summary, giving users a clear, itemized, year-at-a-glance view of their contributions that’s easy to review, export, and reference during tax season.

How We Built It

We built our landing page on Framer and deployed the app on Vercel. We used Next.js to develop our user interface, React as our server router, TypeScript for all of our application code, and Tailwind CSS for styling. Supabase stores our user authentication and user data. In order to create our donation options, we used GlobalGiving.org’s API to pull charity and non-profit information from their corresponding sites in real time. We also integrated with Plaid to allow our users to seamlessly connect their bank accounts so that the server can track account transactions. We do this using Plaid webhooks to trigger server-side polling. Donation and transaction data is processed through a dedicated aggregation layer to power Change’s Tax Center, which generates annual summaries, per-charity breakdowns, and exportable tax-ready reports (PDF and CSV). Nodemailer is also used to send users emails when they achieve their donation goals and Git managed our version control throughout the development of the project.

Challenges We Ran Into

While we hit obstacles while deploying our app into production with Vercel and getting our database to work, our major struggles all surrounded Plaid.

Testing with the Plaid Sandbox was strenuous because we couldn’t get new transactions in Plaid to properly sync and trigger the webhook. This resulted in many hours of transaction testing where we had to send tons of manual curl commands in Sandbox mode before we could confidently try moving into Production. We always had the goal of moving from Sandbox to Production with Plaid and had been on track to do so before realizing that we needed to get manual approval from Plaid (which took 1-2 business days) in order to use their production keys. This was a disappointing stage in our development as we had obsessively prepared the sandbox environment to smoothly transition over into production, and doing so meant that we couldn’t show off how our product works with real purchases.

We also experienced many difficulties rendering images for charities and nonprofits via Global Giving’s API, which proved to be very limited without doing their lengthy KYC registration. We solved this by manually inputting the charity image links, as relying on the ones pulled from the API resulted in poor resolution.

Another roadblock we faced was in charging users real money via Stripe, as doing so would require us to register with their KYC protocol as well. Instead, we opted to focus on using Plaid to demonstrate how our system gets triggered by real purchases-- with the roundup charge and donation happening in sandbox.

Accomplishments That We're Proud Of

Our biggest accomplishment with Change is executing a production-ready purchase to donation workflow that triggers on transactions that users make. Learning how to use Plaid and get real transactions to trigger our server’s workers was a stretch goal that our team worked hard to achieve. We are also really proud of our UI that was put together using Framer and Next.js. We wanted our users to undergo a simple, yet visually pleasing onboarding experience that would make them excited about donating, both on the web and on mobile. Lastly, we are very pleased to have been able to successfully deploy our work and get to share it with friends and family who are interested in using Change.

What We Learned

Seeing as this is all of our first hackathon, we had to learn a lot. We learned how payment transactions operate on a granular level and the legal constraints involved in charging users, tracking their purchases, and holding money in escrow. We all also learned how to deploy a server (first time for all of us!) using Vercel and write database migrations in Supabase that supported the new features we came up with along the way. We also learned how to use Framer to create the beautiful landing page and route that to our main site.

Unexpectedly, we also ended up learning a lot about donation based systems and the non-profits/charities that impact our local community. It was empowering to see how many people dedicate their lives to social justice and bettering the world they live in. The importance of supporting these communities became ever-so present as we worked on this project and gave us a new level of respect for those who make these organizations possible.

What's next for Change

Obviously, we would love to use Plaid in production and see our app work with real payments (once they approve of our production access request on Monday). However, the ideation process with Change never ended, and our vision for this product expands farther than the horizon of CruzHacks. We would like to streamline real donation payments via Global Giving by creating real charges via Stripe and shift the entire product into production. Eventually, it would be great to grow a community on Change and add a community feature that helps users connect to one another and share charities that they care about.

Built With

Share this project:

Updates