nusmodifications / nusmods

🏫 Official course planning platform for National University of Singapore.
https://nusmods.com
MIT License
575 stars 300 forks source link

Seamless Timetable Sync: Implement Account Creation and Social Sign-In for NUSMods #3749

Open kin-chong opened 1 month ago

kin-chong commented 1 month ago

Is your feature request related to a problem? Please describe.

I'm always frustrated when I have to manually transfer my timetables between different devices. It becomes inconvenient and time-consuming, especially when changes need to be made on the go.

Describe the solution you'd like

I would like NUSMods to have a feature allowing users to create an account or sign in using Google, Facebook, or Apple. This would enable automatic syncing of timetables across all devices, ensuring that any updates made on one device are reflected on all others seamlessly.

Describe alternatives you've considered

Only alternative I can really think of is the feature that has already been implemented. However, every time there is a change user would be required to resend a link to themselves again.

Additional context

Adding account creation or social sign-in options would greatly enhance user experience by providing a reliable and efficient way to manage timetables across multiple devices. This feature is especially beneficial for students who frequently switch between laptops, tablets, and smartphones for their academic planning.

ravern commented 1 month ago

Thanks for your suggestion :)

I think the challenge of adding the ability to "sign in" on NUSMods has two fronts:

  1. Technical challenge: We don't currently have a database running, so we can't actually store any custom information that isn't directly provided to us from NUS unless we set one up. That will be challenging to maintain.
  2. Data protection: Storing user information as an "NUS official project" is challenging, there is much more control over this and it might make building new stuff for NUSMods much harder.
ravern commented 1 month ago

Would love to see if we can explore unique solutions for this challenge though, since this is fundamentally just about getting data synced between mobile and web.

iZUMi-kyouka commented 1 month ago

Each user may be given the choice to 'sync' the data of their NUSMods account if the user requests for that. A hash is then generated for that particular 'account', which could also be password-protected if the user wants to. Then the user can just put in the hash generated, and the password (if one is set), to load their data from the database.

Information that will make a particular user identifiable will not be collected. Some colission handling should be put in place since it is possible for multiple people to share the exact same timetable and planner data. In this sense, privacy issue is largely eliminated since the only thing that links someone with their data is the hash of the generated data.

If a database cannot be procured, then maybe a feature to download a user's data may be provided. The user can then load this data on any instance of NUSMods.

kin-chong commented 1 month ago

Since the shareable link contains the data and information of the user's timetable: https://nusmods.com/timetable/sem-1/share?CS1010=TUT:03,LAB:B03,SEC:1&ES1103=SEC:S13&GEA1000=TUT:D02&MA1301=LEC:1,TUT:2 and each student has OneDrive provided to them, would it be possible to have them sign in using their school account, have the information formatted in a similar way in a file and then have the file automatically uploaded and retrieved by NUSMods from the student's OneDrive?

jloh02 commented 5 days ago

This would prove to have a number of challenges as well

  1. afaik the OneDrive API key access is restricted by NUS so will need NUS approval. this will lead to multiple data protection concerns from office side
  2. onboarding an application to NUS SSO will also require approval from NUS

An alternative that may be considered is to use third-party SSOs (e.g. Google) where users share a folder with an NUSmods account. This way data protection will be controlled purely by the user.