senior-knights / course-schedulizer

📝 Create semester schedules without stress
https://senior-knights.github.io/course-schedulizer/
MIT License
10 stars 4 forks source link

Feature idea: Public Schedules #147

Open rpruim opened 3 years ago

rpruim commented 3 years ago

For people who know how to host a CSV file, making a schedule available to others is pretty easy. But many people don't now how to do that. So here's an idea: What if the app could host the schedules?

I'm imagining something along these lines:

  1. User creates a schedule and want to share it.
  2. User clicks on button and gets a URL that can be used sent to others.
  3. Behind the scenes, the schedule is stored somewhere (firebase?) so that it can be retrieved.
  4. Ideally, it would be possible to resave to the same location (if desired) so that people can get updated schedules with the old URL.
  5. URLs could simply be gibberish hashes, or users could have some control over the name of the schedule.

Some of this needs some for thought/fine tuning. For example, we could always save the schedules and just provide the sharing link upon request. That might require a user to identify a schedule (give it a name or something). That could be done without a login system if we just required each new schedule to get a unique identifier, but it would make all schedules public (up to security via obscurity). A login system would restrict access to ones own schedules (which might be listed, selected, deleted, etc.)

So there are lots of variations on this theme depending on what other sorts of things get added to the app.

If we end up doing anything else with permanent cloud storage, storing schedules should be relatively easy to add -- the big lift is setting up the storage mechanism (and perhaps user login) in the first place. But I thought I'd drop this here so it doesn't get lost.

charkour commented 3 years ago

This is great and along the lines of what the team was thinking (if we have time to get there).

charkour commented 3 years ago

Instead of hosting data in Firebase, we can just use the user's Google Drive like draw.io does with theirs.

rpruim commented 3 years ago

Google drive could work too. Since this is likely to be addressed fairly late in the process, I'd go for the easiest solution unless @kvlinden has a preference in terms of future maintenance.

charkour commented 3 years ago

Google Drive would be my first choice because we don't need to worry about storage or security since it is handled by Google.

rpruim commented 3 years ago

Google basically handles authentication in firebase as well. But since our current schedule formats are csv, xlsx, or json, those might be easier to store in Drive. Presumably people could also access the file outside of the app that way too.

kvlinden commented 3 years ago

I have no preference - FIrebase seems overkill for this CSV application.

kvlinden commented 3 years ago

Actually, I'd rather just be able to import my courses into my MS Calendar - that's where I put my public schedule. And we could create a public lab calendar for the lab schedules.