Mini-Project: A Flask App That Filters

Table of contents

In this mini-project assignment, you will build a web-browser interface for a dataset. That is, your web application will:

Lessons can be found here: https://github.com/datademofun/flask-data-querystrings

Example dataset and app

Check out the College Scoreboard app, as presented by the U.S. government:

https://collegescorecard.ed.gov/

Here's the source data: https://collegescorecard.ed.gov/data/

Instead of downloading the entire ZIP file of data, pull in these two CSVs:

Your own school app should allow the user to search, filter, and rank in a way different than what the College Scorecard provides. You may even want to simplify the approach.

The two data tables allow you to find post-school earnings by given school (if you join the appropriate fields). Don't think of showing all the information, just the most interesting information.

If you do a data join while creating the listing view, you could give the user the option to rank schools by post-earnings salary, among other things.

You can pick your own dataset, but it has to be something in which the number of data fields is numerous and interesting enough that there would be a reason to have a separate listing and detail view.

For example, New York restaurant health inspections:

The raw dataset is on Socrata as a flat table (instead of separate tables for inspections and restaurants, it's all one table with redundant data).

Functional requirements

Build a data web application that takes in user input for:

The main view of the app should include a web form that has these filters.

The results view should show a web-friendly listing of the source dataset, and each list item should include an internal link to a details viewpoint (a la the detail.html template in the First News App tutorial).

The detail view should include more detailed data about the selected data row, including data that you did not deem fit to include in the listing view.

Deliverables

For Monday, May 16

For Wednesday, May 18