In my last post, I introduced SNAPfinder, a mobile-first web app, along with a separate framework and REST API, for helping low-income citizens find nearby participating SNAP stores (SNAP was formerly known as the “food stamps” program).
In this series, we will do a deep dive on the technology stack and tools involved, which, depending on the specific portion of the stack, included Node, MongoDB, Express and EJS templates, Twitter Bootstrap, and Digital Ocean.
What is SNAP?
SNAP stands for the Supplemental Nutrition Assistance Program mandated by the Federal Government and supervised by states to help millions of individuals and families who need financial assistance to buy food. Formerly known as the Food Stamp Program, SNAP provides an economic benefit as well as well as serving to eliminate hunger.
Today, instead of food stamps, eligible recipients are issued Electronic Benefit Transfer (EBT) cards. These cards can be used to purchase food and beverage items authorized by the USDA’s SNAP program at retailers that accept EBT transactions.
About SNAP data
The USDA Food and Nutrition Service maintains and publishes a list of retailers (vendors) across the country that welcome SNAP EBT customers. Data is stored in files in Comma Separated Value (CSV) format, which typically can be read by spreadsheet programs, such as Microsoft Excel. The file is updated regularly and can be downloaded from the following URL:
The URL retrieves a zip file that stores a single CSV file with a .csv extension. The name of the file represents the publish date; for example:
When we import the data into mongo, we will map the field names to more JSON friendly names as shown in the following table.
|CSV Field||Map to|
|Address Line #2||address2|
In the next post, we’ll leverage two Cloud-host sevices for working with SNAP data. We’ll use Cloud9 to work with an editor and shell that we can use for downloading, importing, and querying mongo data, and we’ll use MongoLab for storing the data that we harvest from the USDA.
We’ll also discuss how we update the data as part of the import process to provide the fields necessary to support mongo geo queries. This will make it easy to answer queries, such as “find the stores within range of a particular location.”