Application Specification¶
The final client-side web-application must implement the user stories and conform to the Constraints listed below.
User Stories¶
- #1 User registration:
- New users need to be able to register with the system. After successfully registering, a new user should automatically be logged in. Users must be able to register either as teachers or students. In the remaining task description the two user groups will be referred to as either Teacher or Student.
- #2 User login:
- Users need to be able to log in using the e-mail and password they set in registration. A user who is not logged in should not be able to interact with the rest of the site.
- #3 Edit User profile:
- Users need to be able to edit their profile information.
- #4 Create Modules:
- Teachers need to be able to create new modules. The Teacher who created a module is referred to as the Creator.
- #5 Edit Modules:
- A module’s Creator needs to be able to edit the module.
- #6 Delete Modules:
- A module’s Creator needs to be able to delete the module.
- #7 List Modules:
- Teachers need to be able to see all of their own modules. Students need to be able to see all modules.
- #8 Enroll in Module:
- Students need to be able to enroll in a module.
- #9 View Module:
- A module’s Creator and Students who have enrolled in a module need to be able to view the module and all it’s dependent content (news, sessions, content).
- #10 Leave Module:
- Enrolled Students need to be able to leave a module.
- #11 Create News:
- A module’s Creator needs to be able to create new news items for a module.
- #12 Edit News:
- A module’s Creator needs to be able to edit news items.
- #13 Delete News:
- A module’s Creator needs to be able to delete news items.
- #14 Create Room:
- Teachers need to be able to create new rooms.
- #15 Edit Room:
- Teachers need to be able to edit rooms.
- #16 Delete Room:
- Teachers need to be able to delete rooms, as long as these are not in use.
- #17 Create Session:
- A module’s Creator needs to be able to add new sessions. Each session represents one unique combination of date, time, and room when the module takes place. A module can have multiple sessions.
- #18 Edit Session:
- A module’s Creator needs to be able to edit sessions.
- #19 Delete Session:
- A module’s Creator needs to be able to delete sessions.
- #20 Create Content:
- A module’s Creator needs to be able to add content. Content can either be added directly to a module or can be nested as sub-content.
- #21 Edit Content:
- A module’s Creator needs to be able to edit content.
- #22 Delete Content:
- A module’s Creator needs to be able to delete content.
Constraints¶
- #1 Client-side Web-application:
- The application must be implemented as a client-side, JavaScript web-application. It must not rely on any server-side functionality except for that provided by the API listed in constraint #3.
- #2 Framework use:
- The application must use a JavaScript framework. You are free to choose any of the frameworks covered in the module or any other framework, as long as it results in JavaScript that can be executed directly in the browser without the need for any plugins.
- #3 API use:
- The application must use the API documented here.
- #4 Tests:
- Automated integration tests must be provided for all user stories.