Homework 5: Data Interactively
The goal of this homework is to take the data you put into Mondo and Postgres and give it a web interface.
Web Interface requirements
The web interface must have the following characteristics:
- The web interface must be written using some combination of Node.js and hand-written HTML
- The web interface must run on the class database server (loin.cs.brynmawr.edu / 165.106.10.133).
- The web interface must be up and running throughout the exam period. (You are not responsible for restarting your web system if the machine reboots after the last day of classes.) You should not use a "cron job" or any other form of system service to ensure that you system is running.
- You system should never crash. That is there should not be any user interaction that can crash you system.
- You system should not be vulnerable to SQL injection attacks
- There must be a starting page for your web interface and that starting page must be named "index.html". Hence the URL for accessing your system should look like http://loin.cs.brynmawr.edu:999999 (where 999999 is a legitimate port number, which 999999 is not.)
- On the starting page there must be a way to select whether the user is to interact with Mongo or Postgres data. Preferably this would be through a radio-button or a checkbox (or some other selection mechanism). It would also be acceptable (although less preferred) to have some queries go to Mongo and some to Postgres. Whatever approach is taken, it must be clear. (I am aware that this is actually very poor UI-wise. Users should neither know nor care the source of their data. Do it anyway. (As an aside, this is one of my many complaints with bionic. The first screen is crudely selecting the database you want to interact with.)
- There should be at least 3 top level queries that access the data in totally different manners. That is very different queries.
- At least one of the top-level queries should have a system for building a query. The system might involve drop-down menus and other forms of user interaction. (There are several such query builders in bionic. )
- Once a query is built (or selected) the results should be presented in a well-formatted table.
- Each table must be sortable on the client side by clicking on buttons in colum headers.
- Every table must have at least one "drill down" element in each row. For instance, in a table about movies, the drill down element might be the actor name. Clicking on the that would give you more information about the actor.
- The user interface must be easy to use and clear. Preferentially the interface should look good. However grading will only be on aesthetics to the extent that they are not horrible. That is, you will not receive bonus points for beauty, but you will loose points for stupendously ugly. Web pages for this course indicate a minimum standard. (They are ugly, but IMO not stupendously so.)
What to hand in
The short answer is everything you did -- except the data -- plus a text file, named README. The readme should contain the following information:
- A list of the files you are including with your submission and what those files contain.
- Instructions for how to access your web interface. This is probably just a URL
- Instructions for how to restart your Node.js instance should the server reboot.
- If you are including changed data files from HW4, a brief explanation of those data files and why they were changed.
The files you submit should include:
- The readme
- A DDL SQL file (this is probably a repeat from HW 4). If you have changed the database schema, explain briefly.
- One or more javascript files for your Node.js system.
- Data files -- but only if you changed them from HW4
How to submit
Use the process for submission from HW1 except put your document(s) in a directory named, for example, hw5. Then execute
/home/gtowell/bin/submit -c 383 -d hw5 -p 5
There may be other versions of submit on the servers. Be sure to use mine.
The arguments to submit have the following meanings:
- -c the course number
- -d the directory that contains the material to be submitted
- -p the assignment number
You may submit as many times as you like. I will only look at your final submission unless you tell me otherwise.