Inspiration

  • Nowadays, users are attracted to the convenient swiping features most social media apps utilize. And so, we thought…why not use it for good?
  • Inspired by GoFundMe’s fundraising feature and Tinder’s matching algorithm, SolSwipe aims to connect users to non-profits, so they can contribute to underfunded causes and communities they are passionate about. With just a swipe, users can save the organizations in their feed and make donations with one click.
  • We wanted to specifically wanted to incorporate Solana transactions because of several reasons:
    • Although cryptocurrency is becoming popular, there is no app that covers cryptocurrency fundraising for good cause
  • Cryptocurrency makes it easy to make international transactions, especially in areas where the currency is not stable, widening accessibility to organizations and users across the world
  • Solana is one of the top ten most-used cryptocurrencies, making it the ideal cryptocurrency to implement
  • Due to Solana’s verification algorithm and high transaction capabilities (https://www.ecbdynamics.eu/blog/why-solana-is-the-best-choice-for-eco-friendly-blockchain-projects), Solana is much less energy extensive than other cryptocurrencies, promoting fast, sustainable transactions for good!

What it does

  • Our project is a web application that allows users to send crypto (it is currently set up with the Solana currency) to different nonprofits they can match with.
  • Users can...
    • Sign in using their Google account
    • Connect their Solana wallet
    • Swipe left and right to find organizations they might like
    • Save their favorite organizations
    • View their saved organizations
    • Make a payment to the organization's Solana address

How we built it

  • Frontend:
    • React, Next.js, TailwindCSS
  • Backend:
  • Firebase,
    • Handles user authentication and data storage
  • Solana Web3.js API
    • Connects the users’ wallets and handles transactions between the user and the organization
  • Gemini API
    • Generates recommendation algorithm using vector embeddings to display filtered organizations based on user behavior
  • We used React, Next.js, and Tailwind CSS for the frontend. We used Firebase, Solana API, and Gemini API for the backend.
  • We used Firebase to integrate Google Authentication and store the users' information, such as their wallet address and saved organizations. We used Solana API to connect users’ wallets and facilitate the transactions themselves, and Gemini API to recommend organizations based on the user's filters.

Challenges we ran into

  • We ran into a couple issues with generating vector embedding using Gemini API and having it so it would dynamically update every time the user saved an organization. However, we were able to fix it by re-generating embeddings in a handleReorderingAndUpdate() function that dynamically rearranges the array of Organizations as the user swipes through.
  • Originally, we hadn't expected to use Gemini API, but found that it fit well with our project by allowing us to recommend specific organizations according to the user's preferences. Incorporating the recommendation algorithm was difficult, but we are proud of what we accomplished!

Accomplishments that we're proud of

  • We are very proud of our time management and prioritization! We worked really well as a team, learning from each other, and collaborating to solve issues.
  • We managed to get our framework set up in 12 hours and started the heavy backend lifting after that.

What we learned

  • This was our first time using the Solana API, or in fact, doing any kind of programming related to decentralized finance, especially with a vector-embedding recommendation algorithm. It was really interesting to learn how to connect those systems to a web application!

What's next for SolSwipe

  • Allowing organizations to register with us and enter their information and Solana address
  • We think this would work best as a mobile application, but didn't have the experience or time to make it one. If we had more time we would have shifted the medium to a mobile app
  • Deploying the project!
Share this project:

Updates