CSci 284 - Flask Project
For your final project, your will create a database-driven website either solo or in teams of 2. There are several "milestones" (checkpoints) as indicated below:
More details for what each milestone entails, some examples, and what to turn in can be found by following the above links.
An A project will meet all of the following conditions:
- There should be at least three underlying database tables that are meaningfully connected to each other. At least one of these tables will be too big to load into the database by hand; you'll probably write python code to load it up.
- An alternative to finding a big data set and using python to load it into the database would be to build something that generates data, like the rock-paper-scissors game. For example, you could construct a survey and have a bunch of your friends answer it.
- Either way, you are required to have a specific "data plan" approved by me on or before the date for Milestone 2. See here for more details on that.
- All the pages should have a professional-looking unified style derived from .css files that are tucked away in a single directory apart from your web pages. On your pages, tags that have a style=... attribute should only be used if absolutely necessary. Use ids and classes instead.
- Your page style should include a header with a site menu.
- You should have a robust querying page that allows users to slice and dice your data in various ways.
- The available querying options should have both "listing" and "grouping" type queries. For example, if we were looking at the rps tables, a "listing" query would be: find all the matches where player A played against player B. A "grouping" table would be something like: find the overall record of player A against each of other player.
- At least some of the results pages should have links to other pre-defined queries. For example, suppose the user wants to see the record of a player A's results against each other player. On that results screen, you might make each player's name a link to a full list of all those matches against player A.
- Your project should incorporate any additional stuff that I add to this page or mention in a subsequent class.
Data plan:
To have a data plan simply means that you know very specifically what your database tables are going to look like, and that you have convinced me you can fill them with data in time to get this assignment done. To get approval for your data plan, your tables don't necessarily have to be built yet, but you do need to have identified specifically where you're getting your data from.
Failure to have a data plan approved by me on or before the date for Milestone 2 will result in a one letter grade penalty (B+ becomes C+, for example). Don't put this off!
More things to keep in mind (I may continue to add to this list):
- In all tables, text should be left-aligned and numbers should be right-aligned. Break this rule in a particular case only if you can articulate a good reason for doing so.
- do not use SET MYSQL_BIG_SELECTS = 1