Inspiration

Last year, Raeva’s high school robotics team proudly qualified for the World Championship—a dream come true after months of hard work and innovation. But this year, that same team was on the verge of shutting down—not because of a lack of talent or motivation, but because they didn’t have enough money to operate. Local fundraisers and bake sales had poor turnout, and the team struggled to get the community’s attention or support. This isn’t just a robotics club problem—it’s a widespread issue. Over 60% of student clubs and local organizations in the U.S. struggle with fundraising due to lack of community awareness and access to efficient tools. Small businesses also face hurdles when it comes to finding local support, especially in tight-knit or underserved communities. Financial stability is the backbone of innovation, creativity, and impact. That’s why we created CommunityFund—an all-in-one finance app designed to help school clubs, local organizations, and small businesses raise money, share their stories, and connect directly with supporters in their area. With CommunityFund, we aim to make fundraising more accessible, transparent, and community-driven.

What it does

CommunityFund is a location-based fundraising app that allows users to sign in securely using Google authentication and access nearby fundraisers based on their current location. Users can browse local events, contribute donations, and create their own fundraisers with custom details. Each user has a personalized dashboard where they can manage events they’ve created, track donations received, and send updates or messages to supporters. Additionally, users can view a complete history of the fundraisers they’ve donated to, making it easy to stay connected with the causes they care about.

How we built it

CommunityFund was developed entirely in Xcode for iOS using Swift. The app integrates Google Sign-In through Firebase Authentication to manage secure user login via OAuth 2.0. Location-based functionality is powered by Core Location and MapKit, which enable geolocation tracking, address autocomplete, and map-based event rendering. All user-related data—including fundraisers, donations, user profiles, and posts—is stored in Firebase Cloud Firestore, a scalable NoSQL database. Real-time data synchronization is implemented using Firestore snapshot listeners to reflect updates immediately across views. The app follows an MVVM (Model-View-ViewModel) architecture to separate UI, logic, and data handling. Asynchronous operations are managed using Swift’s async/await and the Combine framework to ensure responsive user interactions. All backend functionality, including authentication, data storage, and real-time updates, is handled entirely through Firebase services.

Challenges we ran into

One of the biggest challenges we faced was building the interactive map interface. Since it was our first time working with MapKit, it took a lot of effort to correctly implement features like user location tracking, placing dynamic map annotations for each fundraiser, and handling tap interactions to open event details. Getting the map to update in real-time as new fundraisers were added also required careful integration with our data layer. We also struggled with Firebase and Firestore, as this was our first time using a cloud-based backend. Learning how to structure Firestore collections and documents, set up real-time snapshot listeners, and write data securely was a major learning curve. Handling user-specific data like donation history, fundraiser posts, and profile updates required a lot of trial and error. Debugging issues with permissions and ensuring data synced correctly across views was especially challenging within a Swift app. Despite the difficulties, we gained a much stronger understanding of backend integration and real-time data handling.

Accomplishments that we're proud of

We’re proud of building a fully functional location-based fundraising platform from the ground up using only native iOS technologies. We successfully implemented Google Sign-In, real-time data synchronization using Firestore, and an interactive map view to display nearby fundraisers. Our app supports complete fundraiser lifecycle management—creation, discovery, donation tracking, and communication with donors. We're especially proud of how seamlessly the app ties together multiple complex services—Firebase Auth, Firestore, Core Location, and SwiftUI—all while maintaining a clean and intuitive user experience.

What we learned

Through this project, we gained deep experience working with Firebase, especially Firestore and Authentication, within a SwiftUI context. We learned how to structure an iOS app using the MVVM pattern, manage asynchronous data using Combine, and handle real-time updates efficiently with snapshot listeners. We also became more comfortable working with iOS-specific frameworks like MapKit and Core Location, as well as managing navigation and state in SwiftUI. Most importantly, we learned how to build a meaningful, user-centered app from scratch while solving real-world technical problems along the way.

What's next for CommunityFund

In future versions of CommunityFund, we plan to add in-app payment processing using Stripe or Apple Pay to allow donations directly through the app. We also want to implement a user reputation or badge system to highlight frequent donors and trusted organizers. Event organizers will be able to post updates, photos, and milestones on their fundraiser pages. We also want to explore creating push notifications for event updates and donation milestones. In the future, we hope to build a web-based admin dashboard and expand the app to support school-wide and city-wide fundraiser discovery.

Built With

Share this project:

Updates