The main goal of the AskIt project is the development of an information system with a web interface for users to exchange knowledge through questions and answers. AskIt can be used by everyone that would like to engage with others. Every post is reviewed by a group of Moderators that ensures a safer place for everyone. AskIt allows users to post their questions and to reply to other people's, receiving a notification when their post is replied or liked. Post authors can either edit their own answers and questions or delete them. Questions can be associated with different tags that allow the user to browse or follow his desired topics in a faster way. Each authenticated user has access to his own profile page as well as other people's, displaying certain information such as their questions, answers and liked posts. Users are separated into groups with different permissions. Moderators / Administrators, that can freely edit every post; Authenticated users (*Askitters*), that are able to post questions and answers; and Guests, that can only browse through different posts. The platform uses a responsive design, providing an user-friendly experience in different devices (desktop, tablet or smartphone). It also ensures easy navigation methods and help messages in order to enhance the overall experience as well as help contacts to aid users in need. _This artifact contains the specification of the actors and their user stories, serving as agile documentation of the project’s requirements._ # **2.1 Actors** For the Askit system, the actors are represented in Figure 1 and described in the table. ![](https://i.imgur.com/jTZzvkO.png) <p align = "center"> Fig.1 - Askit Actors </p> | Identifier |Description | | -------- | -------- | | User | Generic user that has access to public questions and answers as well as other people's profiles | | Guest | Unauthenticated user that can register or sign in into the system | | Askitter | Authenticated user that can read questions, follow topics and like posts | | Post Author | Authenticated user that is the creator of a post and can edit it or delete it | | Moderator | Authenticated user that is responsible for the management of users and for some specific supervisory and moderation functions | <p align = "center"> Fig.1 - Askit Actors description </p> # 2.2 User Stories For the MediaLibrary system, consider the user stories that are presented in the following sections. User | Identifier | Name | Priority | Description| | -------- | -------- | -------- | -------- | | US01 | Browse questions | High | As a user I want to be able to browse freely through questions regarding topics of my liking. | | US02 | Access other profiles | Medium | As a user I want to be able to access other users' profile pages, so that I can browse through the questions they have asked, the comments they have sent and the posts they have liked. | | US03 | Search topics | High | As a user I want to be able to search for a specific topic, so that I can find questions related to it. | | US04 | Consult FAQ | Low | As a user I want to be able to access the FAQ page, so that I can have a better understanding of how the platform works. | Askitter | Identifier | Name | Priority | Description| | -------- | -------- | -------- | -------- | | US05 | Access own Profile | Medium | As an askitter I want to be able to access my profile page, so that I can browse through the questions I have asked, the comments I have sent and the posts I have liked. | | US06 | Edit profile | Medium | As an askitter I want to be able to edit my profile page, so that my information is always up-to-date. | | US07 | Like posts | Medium | As an askitter I want to be able to like other askers' posts so that I am notificated when a new comment is sent on it. | | US08 | Block content | Medium | As an askitter I want to be able to block certain topics from appearing in my feed, so that I can enjoy a safer experience. | | US09 | Follow topics | Medium | As an askitter I want to be able to follow certain topics so that they appear in my feed | Guest | Identifier | Name | Priority | Description| | -------- | -------- | -------- | -------- | | US10 | Sign-up | High | As a Guest, I want to be able to create my account so that I can authenticate myself into the system | | US11 | Sign-in | High | As a Guest, I want to be able to log in to my account so that I can have privileged access | | US12 | OAuth API Sign-up | Low | As a Guest, I want to register a new account linked to my Google Account, so that I do not need to create a new account to use the platform. | | US13 | OAuth API Sign-up | Low | As a Guest, I want to be able to sign-in through my Google Account, so that I can authenticate myself into the system in an easier way. | Post Author | Identifier | Name | Priority | Description| | -------- | -------- | -------- | -------- | | US14 | Edit posts | High | As an asker I want to be able to edit my questions or comments, so that I can express my message better.| | | US15 | Ask questions | High | As an asker I want to be able to ask questions and tag them to a specific topic, so that they are more easily accessed by others | | US16 | Comment | High | As an asker I want to be able to send comments on other questions, so that I can engage better in a specific topic. | Moderator | Identifier | Name | Priority | Description| | -------- | -------- | -------- | -------- | | US17 | Remove comments | High | As a Moderator I want to be able to remove comments that break the platform's guidelines, so that I can help in keeping a cleaner feed. | | US18 | Ban users | High | As a Moderator I want to be able to ban certain users, so that he can no longer enjoy the asker's privileges. | | US19 | Tag topics | Medium | As a Moderator I want to be able to tag certain questions to a speecific topic, so that they are more easily accessed by other askers. | # 2.3 Supplementary requirements This section contains business rules, technical requirements and other non-functional requirements on the project. Business rules A business rule defines or constrains one aspect of the business, with the intention of asserting business structure or influencing business behaviour. Business rules often supplement usage or user interface requirements. | Identifier | Name | Description | | --- | --- | --- | | BR01 | Edit questions / answers | The owner of the question / answer can edit his submission after submitting. | | BR02 | Own likes and answers | The user can answer his own question or comment, however he cannot like them. | | BR03 | Deleted user questions / answers | Questions / answers submitted by an user that deleted his account are saved so that others can still see them. | | BR04 | Deleted date and posted date | The date when a certain post is deleted must be higher than the date of its submission. | Technical requirements Technical requirements are concerned with the technical aspects that the system must meet, such as performance-related issues, reliability issues and availability issues. | Identifier | Name | Description | | --- | --- | --- | | TR01 | Availability | The system must be available 99 percent of the time in each 24-hour period | | TR02 | Accessibility | The system must ensure that everyone can access the pages, regardless of whether they have any handicap or not, or the web browser they use | | **TR03** | **Usability** | **The system should be simple and easy to use. It is a critical point because the app is designed to be used by everyone, with or without technical experience, so a very good usability is a critical requirement.** | | TR04 | Performance | The system should have response times shorter than 2 s to ensure the user's attention | | **TR05** | **Web application** | **The system should be implemented as a web application with dynamic pages (HTML5, JavaScript, CSS3 and PHP). It is critical because the app should be easily accessible from anywhere without the need to install specific applications or software, adopting standard web technologies.** | | TR06 | Portability | The server-side system should work across multiple platforms (Linux, Mac OS, etc.). | | **TR07** | **Database** | **The PostgreSQL database management system must be used, with a version of 11 or higher. It is a critical point because a big part of the app is based around accessing this system.** | | TR08 | Security | The system shall protect information from unauthorised access through the use of an authentication and verification system | | TR09 | Robustness | The system must be prepared to handle and continue operating when runtime errors occur | | TR10 | Scalability | The system must be prepared to deal with the growth in the number of users and their actions | | TR11 | Ethics | The system must respect the ethical principles in software development (for example, personal user details, or usage data, should not be collected nor shared without full acknowledgement and authorization from its owner) | Restrictions | Identifier | Name | Description | | --- | --- | --- | | C01 | Deadline | The project should be ready by the end of the semester, so it can be delivered for evaluation and presentation. |