Matthew's Crossing food bank does a lot of hand processing of data every month from Food Bank Manager. They would like some visualizations for analytics on their data.
What it does
Our program automatically downloads last month's data and summarizes it in the way they require for their finance team. We are able to also query Food Bank Manager and display any range of data for comparison across categories of donations.
How we built it
We created a Flask server for interaction and display of plotly.js visualizations. Python's Requests and BeautifulSoup libraries get CSV data from Food Bank Manager, and Pandas processes and outputs the resulting CSV data.
Challenges we ran into
Before automating our interaction with Food Bank Manager we had reached out to its developer Sox Box, but they do not yet have an API, so we built our own. We had a couple issues with the JSON formatted data being sent to plotly.js, and a couple issues with hosting the server (as we originally started with a Flask derivative server called Dash).
Accomplishments that we're proud of
We've automated the process for retrieving CSV data from Food Bank Manager, building a flexible service that returns standard file formats such as CSV and JSON.
We have also created and deployed a simple to reuse environment for other users of Food Bank Manager to gain the same benefits.
What we learned
- Prioritize a workflow that allows all members to parallelize development.
- Sleep can boost productivity enough to make up for lost time.
- Set expectations for group task development.
What's next for "Food Bank Manager inventory summary and visualizer"
- Beautify the UI.
- Cache results.
- Allow modification of configuration files using the UI.
- Setup authentication for administration of config files (config files are currently safe).