Skip to content
This repository has been archived by the owner on Jul 27, 2024. It is now read-only.

Allow a user to have multiple different plans, and allow sharing of plans #115

Open
nmdanny opened this issue Jun 29, 2021 · 0 comments
Open
Labels
Back end enhancement New feature or request

Comments

@nmdanny
Copy link
Collaborator

nmdanny commented Jun 29, 2021

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

A user might want to experiment with several different course plans without having to override them, in addition, he
might want to share his plan with other users, and have them "fork" his plan and modify it further.

Describe the solution you'd like

A solution based on database support:

  • On the backend side, this would require model changes, namely, the addition of a Plan model, and decoupling of Student from Take, instead, a Plan has many Takes, and a student has many Plans.
    A plan can also have a field indicating whether it is publicly readable or private, and a name/description.

  • There would also need to be limits on the number of plans (and the number of courses within each plan) to
    prevent abuse.

  • On the front-end side, there would be a menu under the navbar with various options:

    1. Save simply saves the current plan to DB, if the current plan was never saved, the user
      would be prompted to enter its title
    2. Save As allows duplicating the plan, saving it with a different name
    3. Open allows loading a pre-existing plan from DB.

Describe alternatives you've considered

It might be simpler from an implementation standpoint, to support saving/loading to a file(e.g JSON) which includes the current track and all courses taken within the plan.

Users could then manage those plans with standard filesystem tools (e.g, save them to cloud), or share them in various places.

Because these files are relatively small, we might even be able to share them via URL links, which might make them more accessible, e.g, a link that looks like https://uniclosure.me/import_plan?plan_json=.........

Upon opening this link, the user would be asked whether to override his current plan(the one in local-storage) or combine it.

Of course, placing the burden of managing these plans on the user is also a disadvantage, and doesn't make use of
our API. But it can also be implemented alongside the DB support, as an alternative way of saving/loading plans.

@nmdanny nmdanny added the enhancement New feature or request label Jun 29, 2021
@ScDor ScDor added the Back end label Aug 12, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Back end enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants