Requirements Specification - altanborali16/SWE574-Group2 GitHub Wiki
Software Requirements Specification: A Web-Based and Mobile-Friendly Community Platform
Definition of a community within the system
A community within this system is defined as a user-created, thematic space centered around a specific topic or interest. Communities are structured around posts, comments, and interactions that follow a predefined set of rules and guidelines.
Purpose of the Web-Based and Mobile-Friendly Community Platform
The system of the community platform shall provide a user with a wide array of pre-defined tools and options for selection to construct a community centered around a user-defined topic.
Platform Requirement
The system shall be a mobile-friendly, progressive web application, accessible and operable exclusively through standard desktop and mobile browsers without the need for any specialized client-side software installation.
I. User Interface in the system
- The system shall present information to users in a feed-like format, enabling dynamic content streaming based on user preferences and interactions.
II. Front and Home Page of the system
- For an unregistered/unlogged user, the front page shall present a suggestion to register or log in.
- For registered/logged-in users, the home page shall present the updates (recent activities) from the communities this user is subscribed to.
III. Registration in the system
- For a user to register, the system shall require, as a minimum, an email, a name (or nickname), and a password.
- To facilitate content recommendation, the system may present the user with a list of interests to select when creating a user profile.
- After the user has registered, the system creates his/her minimal user profile with the information the user provided during the registration.
IV. Authentication (logging-in)
- The system shall authenticate users attempting to log in by the email and password they provided during registration.
- Users shall have the ability to recover their accounts through a secure account recovery process if they forget their login credentials.
V. Types of Users in the system
- All users shall be of type "user" immediately upon registering with the system and before joining any community.
- A user shall become of type "community member" by the system upon joining a community.
- A user shall become of type "community owner" immediately upon him/her creating a community.
- The system shall allow only a limited number of "community moderator" roles.
- Only a community owner can assign the role of community moderator to another community user.
- A community owner may choose to roll back to the "community member" role.
- A community owner can assign the role of "community moderator" to a limited number of community members as well as revoke that role.
VI.A. User Communication in the System
- Users shall not be able to send direct messages to each other.
- Users shall be able to report other users' posts to the community moderator by flagging offensive posts. The system in this case will send the community moderator an automated direct message.
source)
VI.B. System content recommendation system (- The system shall have a content recommendation mechanism.
- By leveraging the content recommendation mechanism, the system will show the user posts relevant to the user's interests. The recommended content will be displayed on the homepage and user feed.
- When the user has not explicitly established their interests, their feed may include the most upvoted or recent posts from communities the user is not subscribed to.
- The content recommendation mechanism will be based on user interests that the user selects when setting up the user profile; communities of posts upvoted by the user; or recently popular posts based on all the aforementioned.
source)
VI.C. Reputation mechanism/gamification (- The system shall have a system-wide reputation mechanism that uses system-wide badges.
- The system shall also have a community-specific reputation mechanism that uses community-specific badges.
- The system-wide reputation mechanism shall be based on the number of upvotes received by a user for his/her posts.
- On a community level, the system shall allow the community owner and community moderators to award honour badges to users to mark their contributions to the community.
VII. Community Administration
- Any community may have an unlimited number of community moderators.
- The community owner may leave the community he/she created. Before doing so, he/she shall designate at least one member of the community as a community owner. See also VII.F. - Moderation within Communities
VII.A. Creating a Community
- Any user registered and logged in the system may create an unlimited number of communities.
- When a user creates a community, the system shall request the user to select a name, description, and topic tags (labels).
- When a user creates a community, the system shall assign the role "community owner" to that user.
- The system shall offer a template community profile to be filled in by the user in order to create a community; this will ensure consistency in appearance and structure across the communities on the platform.
- When a user is creating a community, the system shall check that the community name is unique.
- When a user is creating a community, the minimum information to complete the creation process shall be entering the community name, community description and setting the community visibility in the relevant fields of the community profile.
- A community shall have two visibility modes: public and private.
- The community owner shall be able to create and save a template for all posts in that community.
VII.B. Editing a Community
- After a community is created, the community owner shall be able to edit the text in its profile fields; the community owner shall not be able to edit the name of the community.
VII.C. Community visibility
- When creating a community, the user may make the community either public or private.
- A public community shall be open for subscription to all registered and logged system users.
- All posts in the public community shall be public and visible to all system users irrespective of the registration or logged-in status.
- If the community is private, only its name, description, and number of members shall be public and visible to all system users irrespective of registration or login status.
- In a private community, all user posts shall be private and visible only to the community members.
- In a private community, all comments and reactions to posts shall also be private and visible only to the community members.
VII.D. Deleting a Community
- The system shall not provide any mechanism to delete a community once it is created.
VII.E. Archiving a Community
- The system shall provide a process for community owners to archive the community.
- This process shall include confirmation steps to prevent accidental archiving.
- When archived, the community shall become read-only for all users, including community members and owners.
- The system shall ensure that no new posts, comments, or reactions can be added to the archived community
- Archived public community content shall remain viewable and searchable for the system users.
- Archived private community content shall remain viewable and searchable for its community members only.
VII.F. Moderation within Communities
- A community onwer may assign the role of community moderator to any community member, as well as to himself/herself.
- A community moderator may delete posts and comments that contain offensive content.
- The community moderator and community owner may kick a community member out of a community.
- The community owner can kick out a moderator.
VIII. Communication in Communities
VIII.A. Subscribing to Communities
- A registered and logged-in user of the system may subscribe to and become a member of any number of communities.
- A community member may unsubscribe and stop being a member of any and all communities he had been a member of before.
- Subscription to private communities for new members shall be by invitation only.
- The owner of a private community shall be able to send an invitation to a user who requested to join that private community.
VIII.B. Contributing to Communities
- User contribution posts in communities shall be enforced to conform to the post template(s) for this community set by the community owner.
- Before posting a post to a community, the system shall verify that the post has a title, its body meets the minimum required character length, and that the text in the body does not exceed the maximum length.
- A community member may edit and delete their posts at any time; upon doing so, the system shall tag the post as "edited", or shall replace the post with a "deleted" tag, as appropriate.
VIII.C. Interaction within Communities
- Community members shall be able to leave comments on posts in the communities.
- Users can edit their own comments, and when a comment is edited, the system automatically adds an "Edited".
- The system shall support multimedia posts, allowing users to include images, videos, and links within their posts.
- A community member may upvote and downvote any number of posts of other users in the communities that the member is subscribed to.
- Community members shall be able to flag posts and comments that contain offensive content.
- The system shall notify the community moderator(s) about flagged posts and comments by sending them an automated direct message with the following structure: "[Community member username] flagged [link to flagged content]"
IX. Content Management within Communities
IX.A. Tagging Content
- A user may choose to append a tag to his/her post and shall be free to define a tag.
- When a user creates a post, the system shall offer him/her a list of tags previously defined by this user, as well as a list of top 10 popular tags within the community.
IX.B. Searching and Filtering Content
A. Basic Search
- The system shall allow text search across posts, comments, and public communities, including archived ones.
- The system shall blur content found in private communities.
- Users shall have the ability to sort search results by relevance, date (newest or oldest first), and popularity (e.g., number of reactions or comments).
B. Advanced Search in Communities
- Sorting as described in Basic Search 2. shall apply to advanced search.
- The system shall allow users to perform advanced searches in community posts using a combination of text, tags, user names, and time frames(e.g., created or updated within a time frame), and community templates.
- In the Advanced Search interface users shall be able to use search operators (e.g., AND, OR, NOT).
- For numeric values, users shall be able to search using modifiers "exact", "less than or equal", "greater than or equal", and inside a range of values.
X. Types of Data in the System
-
Textual Content: posts, comments, community descriptions, user profiles, messages, and tags. Text fields have minimum and maximum length requirements to ensure clarity and conciseness.
-
Multimedia Content: images and links within posts, allowing communities to share and discuss visual and multimedia resources effectively.
-
User Data: registration information, including email, name or nickname, password, and a brief description in the user's profile. Also includes user types (user, community member, community owner, community moderator) and their interactions within the system (follows, messages, etc.).
-
Community Data: community names, descriptions, visibility settings (public or private), and post templates designed by community owners to standardize content creation within the community.