# ER: Requirements Specification Component
<p>TaskSquad is a tool that aims to facilitate all the communication that a project requires. Tasks, questions that may arise during the project can use taskSquad to solve any problem that may arise during the project.</p>
## A1: TaskSquad
<p>The major objective of this project is to provide a project management platform with a user-friendly and effective web interface. We want to give our users the tools they need to efficiently work together on projects, improve team communication, make project progress more visible, and simplify task management. In a highly competitive business environment, effective project delivery is essential for success.
Similar difficulties with task tracking and team coordination exist in businesses of all sizes and across all sectors. The platform attempts to meet this demand by offering a reliable and adaptable solution that can be customized to meet different company requirements.
</p>
<p>The need to increase operational efficiency in enterprises through better project management is what spurs this project's motivation. The intention is to get rid of the uncertainty and disarray that frequently appear in projects and cause delays and lost productivity. We wish to offer businesses a tool that will help them more regularly and successfully complete their projects.
</p>
<p>Main features of this website is establishing the project and assigning members. Priorities, classifications, for task management.
For better communication, use task comments.
Tracking the creation and completion of tasks.
Forums for discussion that are dedicated to a certain project.
</p>
<p>Projects and tasks can be created, managed, commented on and completed, and discussion boards can be joined by Common User.</p>
<p> The project manager can do the usual user operations, a project manager can search and add members, assign tasks to project members , change project specifics, and control member access.</p>
<p> The post author is inside of the project can post some doubt about the task or edit that same post. </p>
<p> The administrator can manage all user accounts,ban users, and have access to global project data, but they are unable to initiate or take part in projects.</p>
<p> A visitor only have acess to our home page,about us page and register/login page </p>
<p>From small teams working on internal projects to major corporations handling complicated projects with several teams, this project intends to serve the demands of a diverse group of users. This project management platform, in our opinion, will be an important instrument for enhancing productivity.
</p>
## A2: Actors and User stories
### 1. Actors
For the TaskSquad system, the actors are represented in Figure 1 and described in Table 1

<center>Figure 1: TaskSquad actors.</center>
###
| Identifier|Description |
|---------|------------|
| User | Generic user that has access to public information |
| Authenticated User | An authenticated user can be added to a project as a member or one of the leaders |
| Visitor | Unauthenticated user that can register itself (sign-up) or sign-in in the system |
| Adminstrator |Authenticated user that is responsible for the management of users and for some specific supervisory and moderation functions |
| Project Member |The project member can access all the project information, such as the tasks in that project or the members in that project |
| Project Leader |The project leader can add or remove project members and assign tasks to project members |
| Post Author |Any Project Member can post on the project |
| OAuth API |External OAuth API that can be used to register or authenticate into the system |
<center> Table 1: TaskSquad actors description</center>
### 2. User Stories
#### 2.1 Visitor
| Name | Identifier | Priority | Description |
| ----------- | ---------- | -------- | ------------------------------------------------------- |
| US01 |Sign-in|high|As a Visitor, I want to authenticate into the system, so that I can access privileged information |
|US02|Sign-up|high|As a Visitor, I want to register myself into the system, so that I can authenticate myself into the system|
|US03|Recover Password |medium | If a Visitor has an account and don´t remember the password, he can recover the password
|US04|OAuth API Sign-up|low|As a Visitor, I want to register a new account linked to my Google account, so that I do not need to create a whole new account to use the platform|
|US05|OAuth API Sign-in|low|As a Visitor, I want to sign-in through my Google account, so that I can authenticate myself into the system|
<center> Table 2: Visitor user stories</center>
#### 2.2 User
| Name | Identifier | Priority | Description |
| ----------- | ---------- | -------- | ------------------------------------------------------- |
|US11| Accept Email Invitation|high|As a user can receive invites from others user to join their projects via email|
|US12|Home|high |As a User, I want to access the home page, so that I can see a brief presentation of the website|
|US13|About Us|low|As a User, I want to access the about page, so that I can see a complete description of the website and its creators |
|US14| Contacts |low | As a User, I can see all the information about contacts in a Contacts page
<center> Table 3: User user stories</center>
#### 2.3 Authenticated User
| Name | Identifier | Priority | Description |
| ----------- | ---------- | -------- | ------------------------------------------------------- |
|US21|Create Project|high|Authenticated User can create a Project|
|US22|View My Projects|high|As an authenticated user, I can see all my projects, whether I'm a member or a leader|
|US23| Delete Account|high| If a authenticated user wishes, he can delete his account. After that, the Authenticated User can never use this account again
|US24|View Profile|high| As an authenticated user, I can see my profile whenever I want
|US25|Edit Profile|high| As an authenticated user, I can edit my profile whenever I want
|US26|Manage Project Invitation|medium |As an authenticated user can receive invitations to access the group |
|US27|Mark Project as Favorite|low |As an authenticated user, I can mark various projects as favourites |
<center> Table 4: Authenticated User user stories</center>
#### 2.4 Adminstrator
| Name | Identifier | Priority | Description |
| ----------- | ---------- | -------- | ------------------------------------------------------- |
|US31| Administer User Accounts|high| As an Administrator, I can search and view any account of the website
|US32| Browse Projects|high|As an Administrator, I can do a search to find a certain project.|
|US33| View Project Details|high|As an Administrator, I can see all the details of all the projects, such as tasks, members, etc|
|US34| Block or Unblock accounts|low|As an Administrator, I can block or unblock any user for bad behaviour in the website
|US35|Remove Posts|low| As an Administrator, I want to remove a post, so that I can remove inappropriate content|
<center> Table 5: Adminstrator user stories.</center>
#### 2.5 Project Member
| Name | Identifier | Priority | Description |
| ----------- | ---------- | -------- | ------------------------------------------------------- |
| US41 |Create Task|high|As a project member, I can create a task |
|US42|Manage Tasks|high|As a project member, I can assign a property to a task|
|US43|View Task Details|high|A member can see all the details of tasks with priority or content |
|US44|Complete an Assigned Task|high|As a project member, I can complete the task assigned to myself |
|US45|Search Tasks|high|As member from the project, I can search for any tasks of the project|
|US46|Assign Users to Tasks|high|As a project member, I can assign a task to a person|
|US47|Leave Project|high|As a project member, I can leave the project when I want|
|US48|Assigned to Task | high|If I am assigned a task to do, I'll receive a notification about it.
|US49|Change Project Leader|high|Any Project Member receives a notification if there is any modification in the project leader|
|US410|Completed Task in Project Managed or in Participating Task|high|Any project member can receive a notification when any task from user is completed.
|US411|Comment on Task|medium|As a project member, I can comment a task|
|US412|View Project Team|medium|As a project member, I can view all project team |
|US413|View Team Members Profiles|medium |As a project member, I can view all team members profiles|
|US414|Search for task|medium | A Project Member can search for any Task e see any details from that task like questions or who will do it.
|US415|View Project Timeline|low|As a project member, I can see a Project Timeline with all the progress|
|US416|Browse the Project Message Forum|low|As a project member, I can search for any message from project Message forum|
|US417|Post Message to Project Forum|low|As a project member, I can post any post in forum |
|US418|Report to Admin|low|If a Project Member sees any incorrect behaviour from other user, a Project Member can report to admin |
|US419| View Posts|low| A project Member can view a post on the project
|US420| Like on Post |low| A project Member can like a post on the project
|US421|Comment on Post |low| A project Member can comment a post on the project
|US422| Create tag|low| A project Member can create a tag and qualify it by importance for the task in the project
|US423| View tag| low| A project Member can view a tag on a task in the project
|US424| Search tag| low| A project Member can search for a tag on a task in the project
<center> Table 6: Project Member user stories</center>
#### 2.6 Project Leader
| Name | Identifier | Priority | Description |
| ----------- | ---------- | -------- | ------------------------------------------------------- |
| US51 |Add user to Project|high|As a project leader you can add several users to your project |
|US52| Accept Invitation to Project| high | When any new Project Member joins the project, all the leaders are informed with a notification
| US53 |Assign New Leader|medium|As a Project Leader you can assign a new leader with the same privilege like you |
| US54 |Edit Project Details|medium|As a Project Leader you can edit all the important project details like members, deadlines, etc... |
| US55 |Assign Task to Member|medium|A Project Leader can assign a new task to any member|
| US56 |Remove Project Member|medium|If a project Leader wants to remove a member from the project, he can do that |
| US57 |Archive Project|medium|A Project Leader can save the project in a section Archive to see the project later |
| US58 |Manage Members Permissions|low|A Project Leader can give or take away privilege to members |
| US59 |Invite to Project by Email|low|If a project leader cannot find the user he wants to add, he can invite the user by email |
<center> Table 7: Project Leader user stories</center>
#### 2.7 Post Author
| Name | Identifier | Priority | Description |
| ----------- | ---------- | -------- | ------------------------------------------------------- |
| Edit Post | US61 | low | As Post Author you have a possibility to edit your post |
| Delete Post | US62 | low | As Post Author you have a possibility to delete your post |
<center> Table 8: Post Author user stories</center>
### 3. Supplementary Requirements
#### 3.1. Business rules
| Identifier | Name | Description |
| ---------- | ------------------ | ------------------------------------------------------------------------------------------------------ |
| BR01 | Project Leader | To be a leader of a group you have to be a member of the group |
| BR02 | Add Member | To add a group member you must be the group leader |
| BR03 | Remove Member | To remove a group member you must be the group leader |
| BR04 | Assign Task | To assign a task to a member, you must be a leader or member |
| BR05 | Receive Task | Only a member of this group can receive a task from this group |
| BR06 | Create a Post | Only a member or leader of this project can create a post for this project |
| BR07 | Edit a Post | A Leader or who makes that post can edit the post of this project can be assigned a task |
| BR08 | Delete a Post | A Leader or who makes that post can delete the post of this project can be assigned a task |
| BR09 | Comment a Post | A member or leader of this project can comment a post from this project |
| BR10 | Complete a task | Only a Leader or who makes this task can say the task is done |
| BR11 | Create a Project | Only a authenticated user can create a project |
| BR12 | View My Projects | Only a authenticated user can view my projects |
| BR13 | Manage tasks | Only a leader of the project can manage tasks |
| BR14 | View Tasks Details | A member or a leader can view details of a tasks |
| BR15 | Search Tasks| A member or a leader can search details of a task from the project |
|BR16 |Administrator accounts| Administrator accounts are independent of the user accounts, i.e. they cannot create or participate in projects
|BR16 | Minimum Project Leader| Every Project has one user minimum|
|BR17| Minimum Project Member | Every Project has one member minimum|
|BR18|See others Profiles| Only Authenticated user can see any profile page from another user
|BR19|Like on My own post| As post author you can't like your post|
BR20| Post character limit| Any post has a limit of 280 character|
BR21| Deleted Account |Even though the user has deleted the account, the posts, likes and comments remain in the database, but the user's name changes to a random name
BR22|Comment Date|The date of a comment on a post is greater than the date when the post was made|
<center> Table 9: TaskSquad business rules</center>
#### 3.2. Technical requirements
| 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.The TaskSquad system is designed to be used by media consumers from all ages, 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 that the TaskSquad system is 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.).The MediaLibrary system is destined for personal use. To make it easily available to a large user base, it should be platform-independent|
|TR07|Database|The PostgreSQL database management system must be used, with a version of 11 or higher|
|TR08|Security|The system shall protect information from unauthorized 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)|
<center> Table 10: TaskSquad Technical requirements </center>
#### 3.3. Restrictions
| Identifier | Name | Description |
| ---------- | ------------------ | ------------------------------------------------------------------------------------------------------ |
|C01|Deadline|The system should be ready to be used at the beginning of the Summer holidays, to be able to register the loans of the season|
<center> Table 11: TaskSquad Restrictions </center>
## A3: Information Architecture
This artifact presents a brief overview of the information architecture of the system to be developed. It has the following goals:
1. Help to identify and describe the user requirements, and raise new ones;
2. Preview and empirically test the user interface of the product to be developed;
3. Enable quick and multiple iterations on the design of the user interface.
This artifact includes two elements:
1. A sitemap, defining how the information is organized in pages;
2. A set of wireframes, defining the functionality and the content for each page. Wireframes are designed for at least two of the most important pages.
### 1. Sitemap
<p> A sitemap is a visual representation of the relationship between the different pages of a website that shows how all the information fits together. The sitemap includes all planned pages and provides a high-level view of how the information space is organized.
In a sitemap, each box represents an individual page, and only the main navigational paths are represented as links (i.e., not all possible paths are included). Individual pages may be grouped to represent areas of related features (e.g., administration area). Page stacks may be used to indicate a group of functionally identical pages (e.g., ‘view user profile’).
The TaskSquad system is organized in six main areas, the static pages that provide general information about the system (Static Pages), the pages used to explore and access the items collection (Personal Area), the individual user page (User Pages), the Project Member Page , the Project Leader Page and the pages with administration features (Admin Pages).
</p>

<center>Figure 2: TaskSquad sitemap.</center>
### 2. Wireframes
<p>Wireframes are used to describe layout ideas, content, and the overall page-level design. A page wireframe defines how space is allocated and how content is prioritized, including which features are available.</p>
<p>For the TaskSquad system, the wireframes for the item details page (UI01) and the user profile page (UI02) are presented in Figures 1 and 2, respectively.</p>

<center>Figure 3: Home Page (UI01) wireframe. </center>
<br>

<center>Figure 4: Sign Up Page (UI02) wireframe. </center>
<br>

<center>Figure 5: Login Page (UI03) wireframe.</center>
<br>

<center>Figure 6: About Page (UI04) wireframe. </center>
<br>

<center>Figure 7: Profile Page (UI05) wireframe. </center>
<br>

<center>Figure 8: Timeline Page (UI06) wireframe. </center>
<br>

<center>Figure 9: Project Page (UI07) wireframe. </center>
<br>

<center>Figure 10: Task Page (UI08) wireframe. </center>
<br>
Changes made to the first submission:
Item 1
...
GROUP2373, 2/10/2023
David dos Santos Ferreira , up202006302@fc.up.pt (Editor)
Ana Sofia Oliveira Teixeira , up201806629@fe.up.pt
Ana Sofia Silva Pinto , up202004606@fc.up.pt
Gabriela Dias Salazar Neto Silva , up202004443@fe.up.pt