Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/viral32111/degree-progression-dashboard
Intuitive dashboard for tracking progression throughout your degree.
https://github.com/viral32111/degree-progression-dashboard
charts degree restful-api tracking
Last synced: 9 days ago
JSON representation
Intuitive dashboard for tracking progression throughout your degree.
- Host: GitHub
- URL: https://github.com/viral32111/degree-progression-dashboard
- Owner: viral32111
- License: agpl-3.0
- Created: 2023-07-24T10:27:45.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-09-24T11:08:27.000Z (about 1 year ago)
- Last Synced: 2024-01-26T08:08:51.031Z (10 months ago)
- Topics: charts, degree, restful-api, tracking
- Language: PHP
- Homepage: https://degree-progression-dashboard.viral32111.dev
- Size: 173 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
- Security: SECURITY.md
Awesome Lists containing this project
README
# Degree Progression Dashboard
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](https://www.php.net/), 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](https://www.mysql.com/), such as AES encrypted login credentials, course information, results, etc.
The client-side user interface is made using [Bootstrap](https://getbootstrap.com/) and incorporates [Google Charts](https://developers.google.com/chart) 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](https://github.com/google/google-authenticator/wiki/Key-Uri-Format). Credit to [Denis Borzenko](https://github.com/bbars) for their [Base32 PHP script](https://github.com/bbars/utils/blob/master/php-base32-encode-decode/Base32.php) that I used for the TOTP secret generation.
See the [registration PHP script](/scripts/server/register.php) 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](/database.sql) for the required database and table structure. It must be imported before-hand, as the scripts do not create it automatically.
![Screenshot](/Screenshot.png)
## Deployment History
* **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.## Sources
* 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/## License
Copyright (C) 2022-2023 [viral32111](https://viral32111.com).
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.