Add Student Profile Page
Students should have an identity on IFS, so that they feel more engaged with the software, can keep track of things, and overall have incentive to continue using the tool.
To make this a reality, some restructuring to the project directories needs to happen:
- Populate
users
directory with sub-directories that are named by user.id - Move the current
ifs/uploads/<id>
directories toifs/users/<id>/uploads
, maintaining the same structure for uploaded files. - Save user preferences across sessions as specified by issue #29 (closed).
- Allow users to upload profile images, and supplementary information.
- This data can be stored under
ifs/users/<id>/profile.(jpg|png)
andifs/users/<id>/userdata.json
- An example
userdata.json
object might look like:{ "username": "user@example.com", "realname": "First Last", "id": 7, "bio": "This is a brief, optional summary of who I am, what I like, and how I feel about things!", "classes": [ "cis1500", "psyc1000" ] // one or more of these // additional relevant key-value pairs }
- With the current work being done in the databases by Jamey (related to issue #29 (closed)), it might be a good idea to store the above data in an SQL table, rather than a JSON file.
- This data can be stored under
Additionally, we will probably want to sort out a new relational database structure for user accounts — it was mentioned that it would be useful for professors (or "admins") to push simple reminders to students &mash; this means that we need to look at creating an admin user account type (likely in a new table) which can push updates to classes. Regular student accounts will be able to enroll in a class, and receive event updates on their "Profile" page.
Below is a mock-up of the proposed design (made in Inkscape to look as closely as possible to the final product), which attempts to incorporate all elements that I have mentioned above.
This page could serve as the new "home" page for IFS, with additional supplementary data-overviews on a "dashboard" page, which could provide more fine-grained control over skill management, achievement progress, and statistics at a glance (charts, graphs, summaries).