CS50x 2017

Intro

Time50 is a final project for CS50x 2017, built by Joe. This webapp utilizes many different technologies to give you a simple but consise
way of collecting the time spent on a specific course topic, and displaying it through graphs.

The backend is developed in python through flask and makes the use of jinja2 framework and sqlite3 databases.
The UI is built upon BootStrap 4 beta and complimented by jquery with some vanilla javascript logic.
The graphs are created with the d3.js javascript library and are dynamically built to fit to screensize.
And Finally, ajax is used for dynamic webforms and timer functionality.

The Timer

The timer records your time. It has been built to have a minutes accuracy. It also provisions against
an internet disconnect and will store unsent update "ticks", ready to be sent when you get back online.

Graphs

Graphs are built through the d3.js javascript library, allowing accurate representation of the data shown.
Users have available 3 pre-built metrics to view, allowing choice between the dataset. The "weekly view" shows
the amount of time spent this week, which resets to 0 every Monday. The "total overview" shows the total amount
of time spent on each pset. The "all time" view will depict the total dataset in a lengthy graph. This can be
seen in a seperate page.

Admin Privileges

In order to maintain the webapp, admin rights have been made available. If you are privileged enough, you can add or edit course pset
topics as well as see a list of admins. You may also add or revoke admin rights straight from the admin page.
This feature ensures that the site can evolve when the CS50x course does!