This is a web application dashboard for tracking progression (module progress, assessment grades, upcoming deadlines, etc.) throughout a University degree that I made back in 2022.
While this is primarily developed using PHP 8.1, it is not a server-side rendered website (excluding the registration script mentioned below). The server-side functionality acts as a secure RESTful API for accessing persistent data stored within a relational MySQL database, such as AES encrypted login credentials, course information, results, etc.
The client-side user interface is made using Bootstrap and incorporates Google Charts to visualise the data and provide interactivity via tooltips. I tried to keep it as responsive as possible to account for mobile/smartphone accessibility, but I will admit some of the charts are a bit skewed depending on the size and orientation of the mobile screen.
The dashboard is protected by an account system that utilises modern security practices such as TOTP-based two-factor authentication. Credit to Denis Borzenko for their Base32 PHP script that I used for the TOTP secret generation.
See the registration PHP script for creating new user accounts. This script is disabled by default, so the lines at the top will need to be temporarily commented/removed to use it.
See the SQL file for the required database and table structure. It must be imported before-hand, as the scripts do not create it automatically.
- September 16th 2023: Purchased new domain & deployed the project to https://degree-progression-dashboard.viral32111.dev.
- September 11th 2023: Freenom suspended my
viral32111.cf
domain. - July 25th 2023: Uploaded project to GitHub & deployed to https://degreeprogressiondashboard.viral32111.cf.
- ~2021: Initially publicly deployed to https://degreeprogressiondashboard.cf.
- https://getbootstrap.com/docs/5.0/
- https://api.jquery.com/
- https://stackoverflow.com/a/21403360
- https://stackoverflow.com/a/23374725
- https://stackoverflow.com/a/857256
- https://stackoverflow.com/a/27644339
- https://www.w3schools.com/bootstrap5/bootstrap_spinners.php
- https://www.w3schools.com/mysql/mysql_join.asp
- https://www.php.net/manual/en/index.php
- https://www.tutorialspoint.com/how-to-retrieve-a-random-row-or-multiple-random-rows-in-mysql
- https://developers.google.com/chart/interactive/docs
- https://www.w3resource.com/mysql/aggregate-functions-and-grouping/aggregate-functions-and-grouping-sum-with-group-by.php
- https://www.mysqltutorial.org/mysql-interval/
- https://stackoverflow.com/a/38917888
- https://stackoverflow.com/a/56495465
- https://stackoverflow.com/a/31147653
- https://stackoverflow.com/a/10249847
- https://www.w3schools.com/js/default.asp
- https://stackoverflow.com/a/55982414
- https://stackoverflow.com/a/23374725
- https://developers.google.com/chart/infographics/docs/qr_codes
- https://www.fwait.com/how-to-trigger-select-change-event-in-javascript/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference
- https://its.lafayette.edu/policies-draft/strongpasswords/
- https://www.ocpsoft.org/tutorials/regular-expressions/password-regular-expression/
Copyright (C) 2022 viral32111.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses.