From c9cca4daa80d37eec7d097bee5faf3d92a9b191f Mon Sep 17 00:00:00 2001 From: Mineplay5780 Date: Sat, 29 Nov 2025 00:17:23 +0100 Subject: [PATCH 1/9] docs(requirements): added how to document --- docs/requirements.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 docs/requirements.md diff --git a/docs/requirements.md b/docs/requirements.md new file mode 100644 index 0000000..59b0577 --- /dev/null +++ b/docs/requirements.md @@ -0,0 +1,43 @@ +# Requirements + +## Introduction + +This document contains the user stories and requirements for the cosms (c open source media station) project. The whole application is based around the requirements set in this document. If at any point in the futhere there are any new requirements they should be documented here before the feature is implemented. + +## How to document + +When documenting the user stories and requirements there are a few rules that have to be followed to make sure that they are consistent and do not miss any important information. + +### User stories + +For the user stories the following format will be used: + +``` +Code: US-[user story number] +Description: As [type of user], I want [an action] so that [the benefits/value] +``` + +Using this structure helps identify who wants what and why. This method of documenting user stories focuses more on the value than the technical details making sure the needs of the user are met. To validate if the user story was implemented right accaptance criteria will also be setup along side the user stories. These accaptance criteria tell us when the user story can be seen as complete/accaptable. For documenting the accaptance criteria the following format will be used: + +``` +Accaptance: + * Given [how things begin] when [action taken] then [outcome of taking action]. +``` + +These accaptance criteria will be placed in a list underneath the user story it is a part of as this will make it easier to find. + +### Requirements + +The requirements come forth from the user stories and define the functional and non-functional requirements the application must meet. When setting up the requirements the following format will be used: + +``` +Code: RQ-[requirement number] +User story: [the code of the user story this requirements comes from] +User: [the user this requirements comes from] +Requirement: [the requirement itself] +Type: [is it a functional or non-functional requirement] +Quality attribute: [ISO-25010 standard quality attribute (only for non-functionals)] +Priority: [how important is the requirement (low, medium, high, highest)] +``` + +By using this format the requirement will be easly retracable to the user story and user where it originated from. It also tells the type and importance of the requirements allowing us to more easly decide which requirement will be implemented first. -- 2.39.5 From 844916cba1136fe666349f409f89bccb0c4edb26 Mon Sep 17 00:00:00 2001 From: Mineplay5780 Date: Sat, 29 Nov 2025 01:03:25 +0100 Subject: [PATCH 2/9] docs(requirements): setup user stories and accaptance criteria --- docs/requirements.md | 80 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/docs/requirements.md b/docs/requirements.md index 59b0577..dc96ace 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -41,3 +41,83 @@ Priority: [how important is the requirement (low, medium, high, highest)] ``` By using this format the requirement will be easly retracable to the user story and user where it originated from. It also tells the type and importance of the requirements allowing us to more easly decide which requirement will be implemented first. + +## User stories and requirements + +### User stories + +**Code**: US-01 \ +**Description**: As an user, I want to watch/listen to my media on any device so that I can watch content anywhere. + +**Accaptance** + * Given the user is connected to the internet when the user opens cosms then the user should beable to watch/listen to any available media. + * Given that cosms is running when the user select a supported media file to play then playback should start within 5 seconds. + +-------------------------------- + +**Code**: US-02 \ +**Description**: As an user, I want to search for content quickly so I can easly find something I want to watch. + +**Accaptance** + * Given the user has media on cosms when the user enters a search term then the user should automatically see relevant media based on the metadata. + * Given the user has no media on cosms when the user enters a search term then the user should get a message "No media found". + +-------------------------------- + +**Code**: US-03 \ +**Description**: As an user, I want to continue where I left of so I can easly resume playback. + +**Accaptance** + * Given the user has watched/listened to part of a media file when the user stops playback and closes the app then the media should continue where the user left it the next time the user starts playing it. + +-------------------------------- + +**Code**: US-04 \ +**Description**: As an user, I want subtitles to display so I can enjoy foreign language content. + +**Accaptance** + * Given the user has media files that have subtitles when the user starts playback then the user should be able to select subtitles track. + * Given a subtitle track is selected when the user starts playback then the subtitles should appear in sync with the dialogue. + * Given a language is selected and automatic subtitles is on when the user starts playback with audio in a different language then subtitles should automatically appear. + +-------------------------------- + +**Code**: US-05 \ +**Description**: As an administrator, I want to upload and organize media so I can add new content for users to watch. + +**Accaptance** + * Given the administrator logged in as administrator when the administrator uploads a media file then the system should automatically add it to the media list and categirize it. + * Given new media has been added when the administrator or user views the library then the media should appear. + +------------------------------- + +**Code**: US-06 \ +**Description**: As an administrator, I want to manage user accounts so I can control who has access to the media station. + +**Accaptance** + * Given the administrator is logged in as administrator when the administrator creates a new user then the new user should appear in the list and beable to login. + * Given the administrator is logged in as administrator when the administrator disables or deletes an user then the user should not beable to login anymore. + * Given the administrator is logged in as administrator when the administrator sets the access rights of an user then they should only beable to see media they are allowed to see. + * Given the administrator is logged in as administrator when the administrator sets the access rights of an user then they should only beable to make changes to media they are allowed to. + +------------------------------ + +**Code**: US-07 \ +**Description**: As an administrator, I want automatic library scanning so I do not have to manually add new content. + +**Accaptance** + * Given scanning is enabled when new media is added to the watched folder then the new media should be visible in cosms. + * Given manual scanning is triggered when the scan is complete then the new media should be visible in cosms. + +------------------------------ + +**Code**: US-08 \ +**Description**: As an user, I want to download media localy so I can watch it anywhere even without internet. + +**Accaptance** + * Given the user is connected to the internet when the user downloads the media then it should be stored localy on there device. + * Given the user has media downloaded when the user has not internet then the user should be able to watch the downloaded media. + * Given the user has media downloaded when the user deletes the download files then the files should not be stored anymore on there device. + +### Requirements + -- 2.39.5 From bca09f0ff03f71351e08353085f18a543a11b312 Mon Sep 17 00:00:00 2001 From: Mineplay5780 Date: Sat, 29 Nov 2025 01:05:03 +0100 Subject: [PATCH 3/9] fix(requirements): fixed the markdown list --- docs/requirements.md | 46 ++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/docs/requirements.md b/docs/requirements.md index dc96ace..c5fe273 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -50,8 +50,9 @@ By using this format the requirement will be easly retracable to the user story **Description**: As an user, I want to watch/listen to my media on any device so that I can watch content anywhere. **Accaptance** - * Given the user is connected to the internet when the user opens cosms then the user should beable to watch/listen to any available media. - * Given that cosms is running when the user select a supported media file to play then playback should start within 5 seconds. + +* Given the user is connected to the internet when the user opens cosms then the user should beable to watch/listen to any available media. +* Given that cosms is running when the user select a supported media file to play then playback should start within 5 seconds. -------------------------------- @@ -59,8 +60,9 @@ By using this format the requirement will be easly retracable to the user story **Description**: As an user, I want to search for content quickly so I can easly find something I want to watch. **Accaptance** - * Given the user has media on cosms when the user enters a search term then the user should automatically see relevant media based on the metadata. - * Given the user has no media on cosms when the user enters a search term then the user should get a message "No media found". + +* Given the user has media on cosms when the user enters a search term then the user should automatically see relevant media based on the metadata. +* Given the user has no media on cosms when the user enters a search term then the user should get a message "No media found". -------------------------------- @@ -68,7 +70,8 @@ By using this format the requirement will be easly retracable to the user story **Description**: As an user, I want to continue where I left of so I can easly resume playback. **Accaptance** - * Given the user has watched/listened to part of a media file when the user stops playback and closes the app then the media should continue where the user left it the next time the user starts playing it. + +* Given the user has watched/listened to part of a media file when the user stops playback and closes the app then the media should continue where the user left it the next time the user starts playing it. -------------------------------- @@ -76,9 +79,10 @@ By using this format the requirement will be easly retracable to the user story **Description**: As an user, I want subtitles to display so I can enjoy foreign language content. **Accaptance** - * Given the user has media files that have subtitles when the user starts playback then the user should be able to select subtitles track. - * Given a subtitle track is selected when the user starts playback then the subtitles should appear in sync with the dialogue. - * Given a language is selected and automatic subtitles is on when the user starts playback with audio in a different language then subtitles should automatically appear. + +* Given the user has media files that have subtitles when the user starts playback then the user should be able to select subtitles track. +* Given a subtitle track is selected when the user starts playback then the subtitles should appear in sync with the dialogue. +* Given a language is selected and automatic subtitles is on when the user starts playback with audio in a different language then subtitles should automatically appear. -------------------------------- @@ -86,8 +90,9 @@ By using this format the requirement will be easly retracable to the user story **Description**: As an administrator, I want to upload and organize media so I can add new content for users to watch. **Accaptance** - * Given the administrator logged in as administrator when the administrator uploads a media file then the system should automatically add it to the media list and categirize it. - * Given new media has been added when the administrator or user views the library then the media should appear. + +* Given the administrator logged in as administrator when the administrator uploads a media file then the system should automatically add it to the media list and categirize it. +* Given new media has been added when the administrator or user views the library then the media should appear. ------------------------------- @@ -95,10 +100,11 @@ By using this format the requirement will be easly retracable to the user story **Description**: As an administrator, I want to manage user accounts so I can control who has access to the media station. **Accaptance** - * Given the administrator is logged in as administrator when the administrator creates a new user then the new user should appear in the list and beable to login. - * Given the administrator is logged in as administrator when the administrator disables or deletes an user then the user should not beable to login anymore. - * Given the administrator is logged in as administrator when the administrator sets the access rights of an user then they should only beable to see media they are allowed to see. - * Given the administrator is logged in as administrator when the administrator sets the access rights of an user then they should only beable to make changes to media they are allowed to. + +* Given the administrator is logged in as administrator when the administrator creates a new user then the new user should appear in the list and beable to login. +* Given the administrator is logged in as administrator when the administrator disables or deletes an user then the user should not beable to login anymore. +* Given the administrator is logged in as administrator when the administrator sets the access rights of an user then they should only beable to see media they are allowed to see. +* Given the administrator is logged in as administrator when the administrator sets the access rights of an user then they should only beable to make changes to media they are allowed to. ------------------------------ @@ -106,8 +112,9 @@ By using this format the requirement will be easly retracable to the user story **Description**: As an administrator, I want automatic library scanning so I do not have to manually add new content. **Accaptance** - * Given scanning is enabled when new media is added to the watched folder then the new media should be visible in cosms. - * Given manual scanning is triggered when the scan is complete then the new media should be visible in cosms. + +* Given scanning is enabled when new media is added to the watched folder then the new media should be visible in cosms. +* Given manual scanning is triggered when the scan is complete then the new media should be visible in cosms. ------------------------------ @@ -115,9 +122,10 @@ By using this format the requirement will be easly retracable to the user story **Description**: As an user, I want to download media localy so I can watch it anywhere even without internet. **Accaptance** - * Given the user is connected to the internet when the user downloads the media then it should be stored localy on there device. - * Given the user has media downloaded when the user has not internet then the user should be able to watch the downloaded media. - * Given the user has media downloaded when the user deletes the download files then the files should not be stored anymore on there device. + +* Given the user is connected to the internet when the user downloads the media then it should be stored localy on there device. +* Given the user has media downloaded when the user has not internet then the user should be able to watch the downloaded media. +* Given the user has media downloaded when the user deletes the download files then the files should not be stored anymore on there device. ### Requirements -- 2.39.5 From cf640c54b3fe39b3e52d3fde600c825d171d7395 Mon Sep 17 00:00:00 2001 From: Mineplay Date: Thu, 4 Dec 2025 18:25:18 +0100 Subject: [PATCH 4/9] docs(requirements): added requirements for the first four user stories --- docs/requirements.md | 275 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 267 insertions(+), 8 deletions(-) diff --git a/docs/requirements.md b/docs/requirements.md index c5fe273..313cff9 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -46,7 +46,7 @@ By using this format the requirement will be easly retracable to the user story ### User stories -**Code**: US-01 \ +**Code**: US-1 \ **Description**: As an user, I want to watch/listen to my media on any device so that I can watch content anywhere. **Accaptance** @@ -56,17 +56,19 @@ By using this format the requirement will be easly retracable to the user story -------------------------------- -**Code**: US-02 \ +**Code**: US-2 \ **Description**: As an user, I want to search for content quickly so I can easly find something I want to watch. **Accaptance** * Given the user has media on cosms when the user enters a search term then the user should automatically see relevant media based on the metadata. +* Given the user has media on cosms when the user selects a genre then the user should automatically see relevant media based on the genre. +* Given the user has media on cosms when the user selects a franchise then the user should automatically see relevant media based on the franchise. * Given the user has no media on cosms when the user enters a search term then the user should get a message "No media found". -------------------------------- -**Code**: US-03 \ +**Code**: US-3 \ **Description**: As an user, I want to continue where I left of so I can easly resume playback. **Accaptance** @@ -75,7 +77,7 @@ By using this format the requirement will be easly retracable to the user story -------------------------------- -**Code**: US-04 \ +**Code**: US-4 \ **Description**: As an user, I want subtitles to display so I can enjoy foreign language content. **Accaptance** @@ -86,7 +88,7 @@ By using this format the requirement will be easly retracable to the user story -------------------------------- -**Code**: US-05 \ +**Code**: US-5 \ **Description**: As an administrator, I want to upload and organize media so I can add new content for users to watch. **Accaptance** @@ -96,7 +98,7 @@ By using this format the requirement will be easly retracable to the user story ------------------------------- -**Code**: US-06 \ +**Code**: US-6 \ **Description**: As an administrator, I want to manage user accounts so I can control who has access to the media station. **Accaptance** @@ -108,7 +110,7 @@ By using this format the requirement will be easly retracable to the user story ------------------------------ -**Code**: US-07 \ +**Code**: US-7 \ **Description**: As an administrator, I want automatic library scanning so I do not have to manually add new content. **Accaptance** @@ -118,7 +120,7 @@ By using this format the requirement will be easly retracable to the user story ------------------------------ -**Code**: US-08 \ +**Code**: US-8 \ **Description**: As an user, I want to download media localy so I can watch it anywhere even without internet. **Accaptance** @@ -129,3 +131,260 @@ By using this format the requirement will be easly retracable to the user story ### Requirements +**Code**: RQ-1 +**User story**: US-1 +**User**: user +**Requirement**: the user watches/listens to media. +**Type**: functional +**Priority**: highest + +------------------------------ + +**Code**: RQ-2 +**User story**: US-1 +**User**: user +**Requirement**: the user watches/listens to media within 3 steps. +**Type**: non-functional +**Quality attribute**: operability +**Priority**: high + +------------------------------ + +**Code**: RQ-3 +**User story**: US-1 +**User**: user +**Requirement**: the system starts the media playback within 5 seconds. +**Type**: non-functional +**Quality attribute**: time behaviour +**Priority**: high + +------------------------------ + +**Code**: RQ-4 +**User story**: US-1 +**User**: user +**Requirement**: the user is able to watch/listen to media 99% of the time. +**Type**: non-functional +**Quality attribute**: availability +**Priority**: high + +------------------------------ + +**Code**: RQ-5 +**User story**: US-2 +**User**: user +**Requirement**: the user finds the media by name. +**Type**: functional +**Priority**: highest + +------------------------------ + +**Code**: RQ-6 +**User story**: US-2 +**User**: user +**Requirement**: the user finds the media by genre. +**Type**: functional +**Priority**: medium + +------------------------------ + +**Code**: RQ-7 +**User story**: US-2 +**User**: user +**Requirement**: the user finds the media by franchise. +**Type**: functional +**Priority**: high + +------------------------------ + +**Code**: RQ-8 +**User story**: US-2 +**User**: user +**Requirement**: the user finds media by type. +**Type**: functional +**Priority**: highest + +------------------------------ + +**Code**: RQ-9 +**User story**: US-2 +**User**: user +**Requirement**: the user finds media by release date. +**Type**: functional +**Priority**: low + +------------------------------ + +**Code**: RQ-10 +**User story**: US-2 +**User**: user +**Requirement**: the user finds the media within 3 steps. +**Type**: non-functional +**Quality attribute**: operability +**Priority**: highest + +------------------------------ + +**Code**: RQ-11 +**User story**: US-2 +**User**: user +**Requirement**: the user finds media by name with some small spelling mistakes. +**Type**: non-functional +**Quality attribute**: user error protection +**Priority**: medium + +------------------------------ + +**Code**: RQ-12 +**User story**: US-3 +**User**: user +**Requirement**: the user continues watching/listening to the media from the point where they last left it. +**Type**: functional +**Priority**: high + +------------------------------ + +**Code**: RQ-13 +**User story**: US-3 +**User**: user +**Requriement**: the user continues watching/listening to the media from the point where they last left it without the need for any extra steps. +**Type**: non-functional +**Quality attribute**: operability +**Priority**: high + +------------------------------ + +**Code**: RQ-14 +**User story**: US-3 +**User**: user +**Requirement**: the user continues watching/listening to the media from the point where they left it within 5 seconds. +**Type**: non-functional +**Quality attribute**: time behaviour +**Priority**: medium + +------------------------------ + +**Code**: RQ-15 +**User story**: US-3 +**User**: user +**Requirement**: the user only continues watching/listening to the media from the point where they left it. +**Type**: non-functional +**Quality attribute**: confidentiality +**Priority**: medium + +------------------------------ + +**Code**: RQ-16 +**User story**: US-4 +**User**: user +**Requirement**: the user selects the subtitles to display while watching the media. +**Type**: functional +**Priority**: high + +------------------------------ + +**Code**: RQ-17 +**User story**: US-4 +**User**: user +**Requirement**: the user selects the language to use for the media. +**Type**: functional +**Priority**: high + +------------------------------ + +**Code**: RQ-18 +**User story**: US-4 +**User**: user +**Requirement**: the user turns auto select subtitles on. +**Type**: functional +**Priority**: low + +------------------------------ + +**Code**: RQ-19 +**User story**: US-4 +**User**: user +**Requirement**: the user turns auto select language on. +**Type**: functional +**Priority**: low + +------------------------------ + +**Code**: RQ-20 +**User story**: US-4 +**User**: user +**Requirement**: the user selects language. +**Type**: functional +**Priority**: medium + +------------------------------ + +**Code**: RQ-21 +**User story**: US-4 +**User**: user +**Requirement**: the user selects the subtitles to display while watching the media within 2 steps. +**Type**: non-functional +**Quality attribute**: operability +**Priority**: high + +------------------------------ + +**Code**: RQ-22 +**User story**: US-4 +**User**: user +**Requirement**: the user selects the language to use for the media within 2 steps. +**Type**: non-functional +**Quality attribute**: operability +**Priority**: high + +------------------------------ + +**Code**: RQ-23 +**User story**: US-4 +**User**: user +**Requirement**: the user turns auto select subtitles on within 2 steps. +**Type**: non-functional +**Quality attribute**: operability +**Priority**: low + +------------------------------ + +**Code**: RQ-24 +**User story**: US-4 +**User**: user +**Requirement**: the user turns auto select language on within 2 steps. +**Type**: non-functional +**Quality attribute**: operability +**Priority**: low + +------------------------------ + +**Code**: RQ-25 +**User story**: US-4 +**User**: user +**Requirement**: the user selects language within 2 steps. +**Type**: non-functional +**Quality attribute**: operability +**Priority**: medium + +------------------------------ + +**Code**: RQ-26 +**User story**: US-4 +**User**: user +**Requirement**: the user sees the subtitles while watching the media in real-time. +**Type**: non-functional +**Quality attribute**: time behaviour +**Priority**: highest + +------------------------------ + +**Code**: RQ-27 +**User story**: US-4 +**User**: user +**Requirement**: the user hears the selected lanuage for the media in real-time. +**Type**: non-functional +**Quality attribute**: time behaviour +**Priority**: highest + + -- 2.39.5 From 5e1e06d9e9d3ebbd5b3e8cc1aa95aa488ae77d26 Mon Sep 17 00:00:00 2001 From: Mineplay Date: Thu, 4 Dec 2025 18:42:39 +0100 Subject: [PATCH 5/9] fix(requirements): added missing new line character to requirements --- docs/requirements.md | 356 +++++++++++++++++++++---------------------- 1 file changed, 178 insertions(+), 178 deletions(-) diff --git a/docs/requirements.md b/docs/requirements.md index 313cff9..8f83fe2 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -131,260 +131,260 @@ By using this format the requirement will be easly retracable to the user story ### Requirements -**Code**: RQ-1 -**User story**: US-1 -**User**: user -**Requirement**: the user watches/listens to media. -**Type**: functional +**Code**: RQ-1 \ +**User story**: US-1 \ +**User**: user \ +**Requirement**: the user watches/listens to media. \ +**Type**: functional \ **Priority**: highest ------------------------------ -**Code**: RQ-2 -**User story**: US-1 -**User**: user -**Requirement**: the user watches/listens to media within 3 steps. -**Type**: non-functional -**Quality attribute**: operability +**Code**: RQ-2 \ +**User story**: US-1 \ +**User**: user \ +**Requirement**: the user watches/listens to media within 3 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ **Priority**: high ------------------------------ -**Code**: RQ-3 -**User story**: US-1 -**User**: user -**Requirement**: the system starts the media playback within 5 seconds. -**Type**: non-functional -**Quality attribute**: time behaviour +**Code**: RQ-3 \ +**User story**: US-1 \ +**User**: user \ +**Requirement**: the system starts the media playback within 5 seconds. \ +**Type**: non-functional \ +**Quality attribute**: time behaviour \ **Priority**: high ------------------------------ -**Code**: RQ-4 -**User story**: US-1 -**User**: user -**Requirement**: the user is able to watch/listen to media 99% of the time. -**Type**: non-functional -**Quality attribute**: availability +**Code**: RQ-4 \ +**User story**: US-1 \ +**User**: user \ +**Requirement**: the user is able to watch/listen to media 99% of the time. \ +**Type**: non-functional \ +**Quality attribute**: availability \ **Priority**: high ------------------------------ -**Code**: RQ-5 -**User story**: US-2 -**User**: user -**Requirement**: the user finds the media by name. -**Type**: functional +**Code**: RQ-5 \ +**User story**: US-2 \ +**User**: user \ +**Requirement**: the user finds the media by name. \ +**Type**: functional \ **Priority**: highest ------------------------------ -**Code**: RQ-6 -**User story**: US-2 -**User**: user -**Requirement**: the user finds the media by genre. -**Type**: functional +**Code**: RQ-6 \ +**User story**: US-2 \ +**User**: user \ +**Requirement**: the user finds the media by genre. \ +**Type**: functional \ **Priority**: medium ------------------------------ -**Code**: RQ-7 -**User story**: US-2 -**User**: user -**Requirement**: the user finds the media by franchise. -**Type**: functional +**Code**: RQ-7 \ +**User story**: US-2 \ +**User**: user \ +**Requirement**: the user finds the media by franchise. \ +**Type**: functional \ **Priority**: high ------------------------------ -**Code**: RQ-8 -**User story**: US-2 -**User**: user -**Requirement**: the user finds media by type. -**Type**: functional +**Code**: RQ-8 \ +**User story**: US-2 \ +**User**: user \ +**Requirement**: the user finds media by type. \ +**Type**: functional \ **Priority**: highest ------------------------------ -**Code**: RQ-9 -**User story**: US-2 -**User**: user -**Requirement**: the user finds media by release date. -**Type**: functional +**Code**: RQ-9 \ +**User story**: US-2 \ +**User**: user \ +**Requirement**: the user finds media by release date. \ +**Type**: functional \ **Priority**: low ------------------------------ -**Code**: RQ-10 -**User story**: US-2 -**User**: user -**Requirement**: the user finds the media within 3 steps. -**Type**: non-functional -**Quality attribute**: operability +**Code**: RQ-10 \ +**User story**: US-2 \ +**User**: user \ +**Requirement**: the user finds the media within 3 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ **Priority**: highest ------------------------------ -**Code**: RQ-11 -**User story**: US-2 -**User**: user -**Requirement**: the user finds media by name with some small spelling mistakes. -**Type**: non-functional -**Quality attribute**: user error protection -**Priority**: medium - ------------------------------- - -**Code**: RQ-12 -**User story**: US-3 -**User**: user -**Requirement**: the user continues watching/listening to the media from the point where they last left it. -**Type**: functional -**Priority**: high - ------------------------------- - -**Code**: RQ-13 -**User story**: US-3 -**User**: user -**Requriement**: the user continues watching/listening to the media from the point where they last left it without the need for any extra steps. -**Type**: non-functional -**Quality attribute**: operability -**Priority**: high - ------------------------------- - -**Code**: RQ-14 -**User story**: US-3 -**User**: user -**Requirement**: the user continues watching/listening to the media from the point where they left it within 5 seconds. -**Type**: non-functional -**Quality attribute**: time behaviour +**Code**: RQ-11 \ +**User story**: US-2 \ +**User**: user \ +**Requirement**: the user finds media by name with some small spelling mistakes. \ +**Type**: non-functional \ +**Quality attribute**: user error protection \ **Priority**: medium ------------------------------ -**Code**: RQ-15 -**User story**: US-3 -**User**: user -**Requirement**: the user only continues watching/listening to the media from the point where they left it. -**Type**: non-functional -**Quality attribute**: confidentiality +**Code**: RQ-12 \ +**User story**: US-3 \ +**User**: user \ +**Requirement**: the user continues watching/listening to the media from the point where they last left it. \ +**Type**: functional \ +**Priority**: high + +------------------------------ + +**Code**: RQ-13 \ +**User story**: US-3 \ +**User**: user \ +**Requriement**: the user continues watching/listening to the media from the point where they last left it without the need for any extra steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: high + +------------------------------ + +**Code**: RQ-14 \ +**User story**: US-3 \ +**User**: user \ +**Requirement**: the user continues watching/listening to the media from the point where they left it within 5 seconds. \ +**Type**: non-functional \ +**Quality attribute**: time behaviour \ **Priority**: medium ------------------------------ -**Code**: RQ-16 -**User story**: US-4 -**User**: user -**Requirement**: the user selects the subtitles to display while watching the media. -**Type**: functional -**Priority**: high - ------------------------------- - -**Code**: RQ-17 -**User story**: US-4 -**User**: user -**Requirement**: the user selects the language to use for the media. -**Type**: functional -**Priority**: high - ------------------------------- - -**Code**: RQ-18 -**User story**: US-4 -**User**: user -**Requirement**: the user turns auto select subtitles on. -**Type**: functional -**Priority**: low - ------------------------------- - -**Code**: RQ-19 -**User story**: US-4 -**User**: user -**Requirement**: the user turns auto select language on. -**Type**: functional -**Priority**: low - ------------------------------- - -**Code**: RQ-20 -**User story**: US-4 -**User**: user -**Requirement**: the user selects language. -**Type**: functional +**Code**: RQ-15 \ +**User story**: US-3 \ +**User**: user \ +**Requirement**: the user only continues watching/listening to the media from the point where they left it. \ +**Type**: non-functional \ +**Quality attribute**: confidentiality \ **Priority**: medium ------------------------------ -**Code**: RQ-21 -**User story**: US-4 -**User**: user -**Requirement**: the user selects the subtitles to display while watching the media within 2 steps. -**Type**: non-functional -**Quality attribute**: operability +**Code**: RQ-16 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user selects the subtitles to display while watching the media. \ +**Type**: functional \ **Priority**: high ------------------------------ -**Code**: RQ-22 -**User story**: US-4 -**User**: user -**Requirement**: the user selects the language to use for the media within 2 steps. -**Type**: non-functional -**Quality attribute**: operability +**Code**: RQ-17 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user selects the language to use for the media. \ +**Type**: functional \ **Priority**: high ------------------------------ -**Code**: RQ-23 -**User story**: US-4 -**User**: user -**Requirement**: the user turns auto select subtitles on within 2 steps. -**Type**: non-functional -**Quality attribute**: operability +**Code**: RQ-18 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user turns auto select subtitles on. \ +**Type**: functional \ **Priority**: low ------------------------------ -**Code**: RQ-24 -**User story**: US-4 -**User**: user -**Requirement**: the user turns auto select language on within 2 steps. -**Type**: non-functional -**Quality attribute**: operability +**Code**: RQ-19 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user turns auto select language on. \ +**Type**: functional \ **Priority**: low ------------------------------ -**Code**: RQ-25 -**User story**: US-4 -**User**: user -**Requirement**: the user selects language within 2 steps. -**Type**: non-functional -**Quality attribute**: operability +**Code**: RQ-20 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user selects language. \ +**Type**: functional \ **Priority**: medium ------------------------------ -**Code**: RQ-26 -**User story**: US-4 -**User**: user -**Requirement**: the user sees the subtitles while watching the media in real-time. -**Type**: non-functional -**Quality attribute**: time behaviour +**Code**: RQ-21 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user selects the subtitles to display while watching the media within 2 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: high + +------------------------------ + +**Code**: RQ-22 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user selects the language to use for the media within 2 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: high + +------------------------------ + +**Code**: RQ-23 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user turns auto select subtitles on within 2 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: low + +------------------------------ + +**Code**: RQ-24 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user turns auto select language on within 2 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: low + +------------------------------ + +**Code**: RQ-25 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user selects language within 2 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: medium + +------------------------------ + +**Code**: RQ-26 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user sees the subtitles while watching the media in real-time. \ +**Type**: non-functional \ +**Quality attribute**: time behaviour \ **Priority**: highest ------------------------------ -**Code**: RQ-27 -**User story**: US-4 -**User**: user -**Requirement**: the user hears the selected lanuage for the media in real-time. -**Type**: non-functional -**Quality attribute**: time behaviour +**Code**: RQ-27 \ +**User story**: US-4 \ +**User**: user \ +**Requirement**: the user hears the selected lanuage for the media in real-time. \ +**Type**: non-functional \ +**Quality attribute**: time behaviour \ **Priority**: highest -- 2.39.5 From 3942c6113f41dffdafbb10a67c894b393766457a Mon Sep 17 00:00:00 2001 From: Mineplay Date: Thu, 4 Dec 2025 19:56:41 +0100 Subject: [PATCH 6/9] docs(requirements): added last requirements --- docs/requirements.md | 152 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 150 insertions(+), 2 deletions(-) diff --git a/docs/requirements.md b/docs/requirements.md index 8f83fe2..18a4653 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -89,11 +89,11 @@ By using this format the requirement will be easly retracable to the user story -------------------------------- **Code**: US-5 \ -**Description**: As an administrator, I want to upload and organize media so I can add new content for users to watch. +**Description**: As an administrator, I want to upload and organize media so I can add new content for users to watch/listen. **Accaptance** -* Given the administrator logged in as administrator when the administrator uploads a media file then the system should automatically add it to the media list and categirize it. +* Given the administrator logged in as administrator when the administrator uploads a media file then the system should automatically add it to the media list and categorize it. * Given new media has been added when the administrator or user views the library then the media should appear. ------------------------------- @@ -387,4 +387,152 @@ By using this format the requirement will be easly retracable to the user story **Quality attribute**: time behaviour \ **Priority**: highest +------------------------------ + +**Code**: RQ-28 \ +**User story**: US-5 \ +**User**: administrator +**Requirement**: the administrator manages media. \ +**Type**: non-functional \ +**Priority**: higest + +------------------------------ + +**Code**: RQ-29 \ +**User story**: US-5 \ +**User**: administrator \ +**Requirement**: the administrator manages media in real-time. \ +**Type**: non-functional \ +**Quality attribute**: time behaviour \ +**Priority**: medium + +------------------------------ + +**Code**: RQ-30 \ +**User story**: US-5 \ +**User**: administrator \ +**Requirement**: the administrator manages media within 3 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: medium + +------------------------------ + +**Code**: RQ-31 \ +**User story**: US-5 \ +**User**: administrator \ +**Requirement**: only the administrator manages media. \ +**Type**: non-functional \ +**Quality attribute**: integrity \ +**Priority**: highest + +------------------------------ + +**Code**: RQ-32 \ +**User story**: US-6 \ +**User**: administrator \ +**Requirement**: the administrator manages users. \ +**Type**: functional \ +**Priority**: higest + +------------------------------ + +**Code**: RQ-33 \ +**User story**: US-6 \ +**User**: administrator \ +**Requirement**: the administrator selects the media the user can see. \ +**Type**: functional \ +**Priority**: high + +------------------------------ + +**Code**: RQ-34 \ +**User story**: US-6 \ +**User**: administrator \ +**Requirement**: the administrator manages users in real-time. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: medium + +------------------------------ + +**Code**: RQ-35 \ +**User story**: US-6 \ +**User**: administrator \ +**Requirement**: the administrator only sees user data that is absolutly necessary for managing users. \ +**Type**: non-functional \ +**Quality attribute**: confidentiality \ +**Priority**: highest + +------------------------------ + +**Code**: RQ-36 \ +**User story**: US-7 \ +**User**: administrator \ +**Requirement**: the administrator adds new content through the library/file manager. \ +**Type**: functional \ +**Priority**: medium + +------------------------------ + +**Code**: RQ-37 \ +**User story**: US-7 \ +**User**: administrator \ +**Requirement**: the administrator activates file scanning. \ +**Type**: functional \ +**Priority**: low + +------------------------------ + +**Code**: RQ-38 \ +**User story**: US-7 \ +**User**: administrator \ +**Requirement**: the administrator adds new content through the library/file manager in real-time. \ +**Type**: non-functional \ +**Quality attribute**: time behaviour \ +**Priority**: low + +------------------------------ + +**Code**: RQ-39 \ +**User story**: US-8 \ +**User**: user \ +**Requirement**: the user downloads media. \ +**Type**: functional \ +**Priority**: high + +------------------------------ + +**Code**: RQ-40 \ +**User story**: US-8 \ +**User**: user \ +**Requirement**: the user removes downloaded media. \ +**Type**: functional \ +**Priority**: high + +------------------------------ + +**Code**: RQ-41 \ +**User story**: US-8 \ +**User**: user \ +**Requirement**: the user downloads media within 3 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: medium + +------------------------------ + +**Code**: RQ-42 \ +**User story**: US-8 \ +**User**: user \ +**Requirement**: the user removes downloaded media within 3 steps. \ +**Type**: non-functional \ +**Quality attribute**: operability \ +**Priority**: medium + + + + + + -- 2.39.5 From 131f116f0cad158396eb1564c0e17b325a030ed8 Mon Sep 17 00:00:00 2001 From: Mineplay Date: Thu, 4 Dec 2025 20:00:14 +0100 Subject: [PATCH 7/9] fix(requirements): removed spaces after new-line --- docs/requirements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements.md b/docs/requirements.md index 18a4653..2119ac5 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -524,7 +524,7 @@ By using this format the requirement will be easly retracable to the user story **Code**: RQ-42 \ **User story**: US-8 \ -**User**: user \ +**User**: user \ **Requirement**: the user removes downloaded media within 3 steps. \ **Type**: non-functional \ **Quality attribute**: operability \ -- 2.39.5 From 591d0ed864d99f6f81d5006b53c94e24a28fe934 Mon Sep 17 00:00:00 2001 From: Mineplay Date: Thu, 4 Dec 2025 20:02:50 +0100 Subject: [PATCH 8/9] fix(requirements): removed another spaces after new-line --- docs/requirements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements.md b/docs/requirements.md index 2119ac5..c4644bc 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -192,7 +192,7 @@ By using this format the requirement will be easly retracable to the user story **User story**: US-2 \ **User**: user \ **Requirement**: the user finds the media by franchise. \ -**Type**: functional \ +**Type**: functional \ **Priority**: high ------------------------------ -- 2.39.5 From 080d5058d534d0ac5834794f2cc28d91c747aae4 Mon Sep 17 00:00:00 2001 From: Mineplay Date: Thu, 4 Dec 2025 20:07:24 +0100 Subject: [PATCH 9/9] refactor(requirements): removed trailing enters --- docs/requirements.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/requirements.md b/docs/requirements.md index c4644bc..e578853 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -530,9 +530,3 @@ By using this format the requirement will be easly retracable to the user story **Quality attribute**: operability \ **Priority**: medium - - - - - - -- 2.39.5