I chose to create this app because I noticed that the number of charities is growing each year, and it is hard to know which ones are reputable and which ones are actually worthy of your hard earned money. Online resources are not that useful when it comes to a time crunch, as I found it tedious to search through 10 individual websites just to not use any of them. And thus, Charity Finder was born.
What it does
Charity finder is an app with which users can input information in the fields provided on the Select Charities screen. Once this information is submitted, the app makes a call to the Charity Navigator API and parses the data to create consistent objects that display charities fitting the requests of the user. If the user reads the short summary and finds a charity interesting, they can click on the More button to get to a detailed page about the charity and access to an external link to actually donate.
How I built it
I used flutter and dart, as well as the Charity Navigator API for my data.
Challenges I ran into
The first challenge that I came across when building the app was using the CN API and learning how to parse the data so that I could display it like in the demo. It was my first time working with json, so this was a new process for me. I decided to go about it by creating a class called CharityDetail, in which I created all the fields that corresponded to the data I wanted to pull from the API. This is shown on the left. The right displays the return of the data, where the Urlbuild is creating the API request based on user preferences and the jsonResponse is creating the objects. The second was present in getting the FormScreen to retain information, even after the instance of the app is closed.
Accomplishments that I'm proud of
I'm proud of figuring out json and how to use a new API for the first time.
What I learned
I really learned a lot about data parsing from this project.
What's next for Charity Finder
If I was to progress further with this app, I would like the idea of a search bar, as well as a profile section on which a user could view misc. stats.