Given this is going to be a desktop app and security is not going to be an issue on this project I have skipped to the security checklist. Below is the initial Class diagram for the project:
At this point I have selected the interfaces where I expect behaviour to change and base classes where I expect a specific functionality to remain the same (Open/Closed Principle). A factory pattern seems the best option for the generation of rotas. Note, all rotas are passed back to the user only those of a given fitness.
The project shall be developed under GPL 3 licence. The url of the project on GitLab is: