The main goal of the OnlyFEUP project is the development of a web-based social network with the purpose of creating connections between students and staff, sharing resources about courses and subjects. This is a tool that can be used by anyone from FEUP. After signing up and verifying the user is related to the university (students/teachers), they can start using it for a better experience at FEUP.
A team of administrators is defined, which will be responsible for managing the system, ensuring it runs smoothly, removing illegal content and material in which they are not the author or have permission to share.
This application allows users to integrate into groups and follow students/teachers whom they find their work interesting, they can also create groups if none was found. Users will be able to more easily share resources with people who are actually interested (their followers).
Users are separated into groups with different permissions. These groups include the above-mentioned administrators, with access and modification privileges, student users and teacher (FEUP staff) users.
The platform will have an adaptive design, allowing users to have a pleasant browsing experience. The product will also provide easy navigation and an excellent overall user experience.
Project Stakeholders:
FEUP professors
To facilitate the lives of people related to feup by showing relevant information by allowing them to follow and block content, instead of the actual model of e-mail, which are sent to everyone (even people completely unrelated to the matter). Follow that to allow users to more easily connect with/find students, teachers, groups they are part in, etc.
User:
Delete account
Authenticated User:
Request to join public groups
Post Author:
Manage post visibility
Comment Author
Delete comment
Group Member
Leave group
Group Owner
Manage join requests
Notifications:
Follow request
Actors and user stories contain specifications about the people that are going to use OnlyFeup in any way and how they are going to use it. It serves as a simple and fast documentation to the projectś requirements.
For the OnlyFEUP system, the actors are represented in Figure 1 and described in Table 1.
Figure 1: OnlyFEUP actors | Identifier | Description | |————|————-| | User | Generic user that has access to public information | | Visitor | Unauthenticated user that can register itself (sign-up) or sign-in in the system and view the public feed | | Authenticated | Authenticated users that can consult information, insert works, items and ideas, comment on another person’s work and manage and chat in your groups. | | Group Owner | Users that created or have permissions to edit the group name, description, group’s visibility, add/remove participants, edit participants permissions (member to owner or vice-versa). | | Group Member | Users that can participate, chat and socialize in a community/group but don’t have the permissions of an owner | | Post Author | Users that can edit or delete their own post | | Comment Author | Users that can comment on someone’s or on their own posts | | Administrator | Administrator have the power to remove posts (to remove offensive posts) and block/unblock people |
Table 1: OnlyFEUP actors description
For the OnlyFEUP system, consider the user stories that are presented in the following sections.
**Identifier** | **Name** | **Priority** | **Description** |
US01 | See Home Page | high | As a User, I want to see the Home Page so that I can start navigating the site. |
US02 | View Public Timeline | high | As a User, I want to be able to view the Public Timeline so that I can keep up with what’s happening. |
US03 | View Public Profiles | high | As a User, I want to be able to view public profiles so that I can see their posts and information. |
US04 | Search Public Users | high | As a User, I want to be able search for public users so that I can view their profiles. |
US05 | See About Us | medium | As a User, I want an ‘About Us’ section so that I can find out more about OnlyFEUP’s creators. |
US06 | Consult FAQ / Help / Contacts | medium | As a User, I want a ‘FAQ / Help’ section so that I can find a solution to a problem |
US07 | See Main Features | medium | As a User, I want a ‘Main Features’ section, so that I can find what can I expect from OnlyFEUP |
Table 2: User user stories
**Identifier** | **Name** | **Priority** | **Description** |
US08 | Sign-up | high | As a Visitor, I want to register myself into the system, so that I can authenticate myself into the system |
US09 | Sign-in | high | As a Visitor, I want to authenticate into the system, so that I can access privileged information |
Table 3: Visitor user stories
**Identifier** | **Name** | **Priority** | **Description** |
US10 | Sign-out | high | As an Authenticated User, I want to sign out, so that I am not logged in anymore. |
US11 | View User Profiles | high | As an Authenticated User, I want to see User Profiles, so that I can see their posts |
US12 | View personalized timeline | high | As an Authenticated User, I want to view a personalized timeline, so that I can view posts that I actually have an interest in. |
US13 | Create Post | high | As an Authenticated User, I want to create posts, so that I can share information to my followers. |
US14 | View Own Profile | medium | As an Authenticated User, I want to see my profile, so that I can see what I wrote in the past |
US15 | Support Profile Picture | medium | As an Authenticated User, I want to see my profile picture, so that I can share my face. |
US16 | Recover Password | medium | As an Authenticated User, I want to recover my password, so that Change it in case I forget it. |
US17 | Delete Account | medium | As an Authenticated User, I want to delete my account, so that I can stop thinking about FEUP. |
US18 | Send Follow Request | medium | As an Authenticated User, I want to send follow request to a private profile, so that I can show interest in following the respective user. |
US19 | View profiles followed | medium | As an Authenticated User, I want to view profiles followed, so that I can get information and view posts about people that I follow. |
US20 | Search for Posts, Comments, Groups and Users | medium | As an Authenticated User, I want to search for stuff, so that I can find things relevant for me at a certain time. |
US21 | Exact Match Search | medium | As an Authenticated User, I want to search exactly what I am looking for, so that I can find things relevant for me at a certain time. |
US22 | Full-Text Search | medium | As an Authenticated User, I want to search in Posts and Comments texts, so that I can find things relevant for me. |
US23 | Search filters | medium | As a user, I want to be able to filter the search results so that I can find what I want more efficiently |
US24 | Search over Multiple Attributes | medium | As a user, I want to be able to search over text attributes, like name or username, description or title, so that I can find relevant data more efficiently. |
US25 | Follow someone | medium | As an Authenticated User, I want to follow someone with a public profile, so that I can start viewing their posts in my feed. |
US26 | Manage Received Follow Requests | medium | As an Authenticated User, I want to manage received follow requests, so that I can control who can follow me or not. |
US27 | Manage Followers | medium | As an Authenticated User, I want to manage followers, so that I can remove someone from following me. |
US28 | Comment on Posts | medium | As an Authenticated User, I want to comment on posts, so that I can share my point of view or pass information related to the post. |
US29 | React to post | medium | As an Authenticated User, I want to like posts, so that I can show my support of it. |
US30 | React to comment | medium | As an Authenticated User, I want to like comments, so that I can show my support of it. |
US31 | Create Groups | medium | As an Authenticated User, I want to create a group, so that I can share information about specific topics to people who are interested in it. |
US32 | Manage Group Invitations | medium | As an Authenticated User, I want to manage group invitations, so that I can control the amount of invitations that I receive about a certain topic. |
US33 | Edit profile | medium | As an Authenticated User, I want to edit my profile, so that I can change my picture, my name and/or my description. |
US34 | View Personal notifications | medium | As an Authenticated User, I want to view notifications, so that I can view who interacted (or wants to interact) with me. |
US35 | Placeholders in Form Inputs | medium | As an Authenticated User, I want to see placeholders in form inputs, so I can have help on what to write there. |
US36 | Contextual Error Messages | medium | As an Authenticated User, I want to see contextual error messages after inputs, so I can have help on what went wrong. |
US37 | Contextual Help | medium | As an Authenticated User, I want to see contextual help, so I can have help on how to perform any task. |
US38 | Follow Requests Notification | medium | As an Authenticated User, I want to receive notification when someone requests to follow me, so I keep informed about possible followers. |
US39 | Started Following Notification | low | As an Authenticated User, I want to receive notification when someone starts to follow me, so I keep informed about new followers. |
US40 | Accepted Follow Notification | low | As an Authenticated User, I want to receive notification when someone accepts my follow request, so I keep informed about users that I've been following recently |
US41 | Invite Group Notification | low | As an Authenticated User, I want to receive notification when someone invites me to join their group, so I can accept or not the invitation. |
US42 | Reply to Comments | low | As an Authenticated User, I want to reply to comments, so that I can share my point of view or pass information related to a comment. |
US43 | Tag Users in Posts | low | As an Authenticated User, I want to be able to tag users in my posts so that I can inform the viewers of the people related to the posts and their respective accounts. |
US44 | Post Tagging Notification | low | As an Authenticated User, I want to receive notification when someone tags me in their post, so I keep informed. |
US45 | Comment and Reply Tagging Notification | low | As an Authenticated User, I want to receive notification when someone tagged me in their comment or reply, so I keep informed. |
US46 | Join Public Group | low | As an Authenticated User, I want to be able to join public groups so that I can view its posts and interact with its members. |
US47 | Request to Join Private Group | low | As an Authenticated User, I want to able to request join private groups, so that I can view its posts and interact with its members |
US48 | Manage my notifications | low | As an Authenticated User, I want to be able to manage what notifications I receive, so that I am only notified for things I care about. |
US49 | Delete notifications | low | As an Authenticated User, I want to delete old notifications, so that I clear my notifications page. |
US50 | Hashtags | low | As an Authenticated User, I want to be able to create, see and search for hashtags in posts, comments or descriptions |
US51 | Notification context | low | As an Authenticated User, I want to see notification context, so that I can see post/comment/subcomment associated it |
US52 | Send Private Messages | low | As an Authenticated User, I want to send private messages to another OnlyFEUP user, so I can contact them directly. |
US53 | Private Messages Status | low | As an authenticated user, I want to see if there are any new unseen private messages so I can quickly see who has contacted me recently |
US54 | Send Private Media | low | As an Authenticated User, I want to send media (photos, videos or audios) to another OnlyFEUP user, so I can contact them directly and in private mode. |
Table 4: Authenticated User user stories
**Identifier** | **Name** | **Priority** | **Description** |
US55 | Edit Group Information | medium | As a Group Owner, I want to edit the name or the description of the group, so that the purpose of the group is well explained. |
US56 | Remove member | medium | As a Group Owner, I want to remove/ban a member of a group, so that they can no longer access the information of the group. |
US57 | Add to group | medium | As a Group Owner, I want to add someone to the group, so that they can access the group information. |
US58 | Remove post from group | low | As a Group Owner, I want to remove a post from a group, so that its information is no longer visible. |
US59 | Change group privacy | low | As a Group Owner, I want to change the group privacy, so that I can choose if the group information is public or not and who can enter in the group. |
US60 | Manage Group invitations | low | As a Group Owner, I want to manage my invitations, so that I can delete an invitation if I change my mind. |
US61 | Manage Join Requests | low | As a Group Owner, I want to manage group join requests, so that I can accept or reject possible members. |
US62 | Delete my group | low | As a Group Owner, I want to delete my group so all members can no longer access the information of the group |
US63 | Give Ownership | low | As a Group Owner, I want to give ownership of my group, so that I will be not group owner anymore |
US64 | Request Join Notification | low | As a Group Owner, I want to receive request join notifications, so that I see who wants to join in my group. |
US65 | Joined Notification | low | As a Group Owner, I want to receive join notifications, so that I see who is joining my group. |
US66 | Accepted Invite Notification | low | As a Group Owner, I want to receive accepted invite notifications, so that I see who accepts my invitation to join my group. |
US67 | Leave Group Notification | low | As a Group Owner, I want to receive leave group notifications, so that I see who leaves my group. |
Table 5: Group owner user stories
**Identifier** | **Name** | **Priority** | **Description** |
US68 | View group members | medium | As a Group Member, I want to see the members of a group, so that I can see users with the same likes as me |
US69 | Post on group | medium | As a Group Member, I want to post on a group, so that all members can see or access the idea/resource that I shared. |
US70 | Leave group | medium | As a Group Member, I want to be able to leave a group, so that I no longer receive notifications from it. |
US71 | Favorite | low | As a Group Member, I want to be able to mark groups as my favorites |
US72 | Ban Notification | low | As a Group Member, I want to receive notification when I get banned from a group, so I keep informed. |
US73 | Ownership Notification | low | As a Group Member, I want to receive a notification when I become the group owner, so I can stay informed about my new group. |
Table 6: Group member user stories
**Identifier** | **Name** | **Priority** | **Description** |
US74 | Edit post | high | As a Post Author, I want to edit my post, so that I can correct a mistake I made. |
US75 | Delete post | high | As a Post Author, I want to delete a post, so that I can remove something that I put by mistake. |
US76 | Likes on Own Post Notification | medium | As a Post Author, I want to receive notification when someone likes my post, so I stay informed. |
US77 | Comments on Own Posts Notification | medium | As a Post Author, I want to receive notification when someone comments on my post, so I keep informed of the user's opinions. |
US78 | Manage post visibility | low | As a Post Author, I want to manage post visibility, so that I can restrict the post visibility only to my followers. |
US79 | Post media | low | As a Post Author, I want to see my posts with media (photos, videos), so I can share them instead of text. |
Table 7: Post Author user stories
**Identifier** | **Name** | **Priority** | **Description** |
US80 | Edit comment | medium | As a Comment Author, I want to edit my comment, so that I can correct a mistake I made. |
US81 | Delete comment | medium | As a Comment Author, I want to delete my comment, so that I can remove a comment that is no longer relevant. |
US82 | Likes on Own Comment Notification | low | As a Comment Author, I want to receive notification when someone likes my comment, so I stay informed. |
US83 | Replies on Own Comment Notification | low | As a Comment Author, I want to receive notification when someone replies to my comment, so I keep informed of the user's opinions. |
Table 8: Comment Author user stories
**Identifier** | **Name** | **Priority** | **Description** |
US84 | Special Search privileges | high | As an Administrator, I want to search for profiles and groups even if they are private, so that I can investigate if there is something against the guidelines. |
US85 | Administrator Account | medium | As an Administrator, I want to have an administrator account, so I can see OnlyFEUP data with privileges. |
US86 | Administer user accounts | medium | As an Administrator, I want to administer user accounts, so that I can investigate a report. |
US87 | Block and unblock user accounts | medium | As an Administrator, I want to block an user, so that I can punish them for not following the guidelines. |
US88 | Delete user account | medium | As an Administrator, I want to delete an user account, so that I can remove an user that repeatedly broke the guidelines. |
US89 | Delete posts and comments | medium | As an Administrator, I want to delete posts and comments, so that I can remove content that does not follow the guidelines. |
US90 | Delete groups | low | As an Administrator, I want to delete groups, so that I can remove content that does not follow the guidelines. |
Table 9: Administrator user stories
**Identifier** | **Name** | **Description** |
BR01 | Deleted account | The history of an item must be maintained even if the item is deleted in order not to lose the loan record for all items. |
BR02 | Only people related to Feup | Since it will only work when connected to the university’s wifi or VPN, it is already restricted to people related to FEUP. |
BR03 | Media types | Media types needs to be as required because of the size of files itself: * Images in jpg,png,jpeg,gif * Videos in mp4 * Audios in mp3 Since they are more compact (although not lossless) and will be less taxing on the database. |
BR04 | Profiles | Profiles can be public or private. Content of private profiles are only visible to followers or administrators. |
BR05 | Interact with own Posts | Authenticated users can comment/like their own posts/comments. |
BR06 | Dates | The date of each post is always less than or equal to the current date. |
Table 10: OnlyFEUP Business Rules
**Identifier** | **Name** | **Description** |
TR01 | Availability | The system must be available 99 percent of the time. |
**TR02** | **Accessibility** | **The system should work with different hardware and software, so that OnlyFEUP can be available to a plethora of users (even if the hardware/software is reasonably old).** |
**TR03** | **Usability** | **The system should be simple and easy to use.** |
TR04 | Performance | The system should have response times that are reasonably fast and does not handicap the users’ usability of the product. |
TR05 | Web application | The system should be implemented HTML, CSS, javascript and PHP |
TR06 | Portability | The server-side system should be platform independent and work with different hardware/software to accommodate eventual changes and upgrades deemed necessary. |
TR07 | Database | The system should store data in a reliable and non-redundant database. |
**TR08** | **Security** | **The system shall protect information from unauthorized access, ensuring that only the user itself, the people whom the user has shared the information and administration of onlyFEUP can access the data, and even so only as a necessity.** |
TR09 | Robustness | The system must be prepared to handle errors and be able to continue working/boot itself up in case of a failure. |
TR10 | Scalability | The system must be prepared to deal with the growth in the number of users, and the number of posts and files to be stored. |
TR11 | Ethics | The system must respect the legislation of the places where it operates (in our case Portugal), and the system should respect the users’ preferences and privacy. |
Table 11: OnlyFEUP technical requirements
Usability and accessibility were chosen as the most critical technical requirements because, since it is a social network, it needs to be simple and easy to use by any user, also because of the many users and their different equipment, software, operating system, ways of using the systems, versions of software, etc it needs to be robust to handle all of the these mentioned above.
Since the user is also going to be creating and submitting information as normal usage of the system, it is important that their information is secure from unauthorized access and in compliance with the privacy regulations.
**Identifier** | **Name** | **Description** |
R01 | Deadline | The system should be ready to be used by the end of the semester |
R02 | Database | The database should use PostgreSQL |
Table 12: OnlyFEUP restrictions
The image below represents the pages that are going to exist in onlyFEUP and how they can be accessed or used. It is a simple design of the process of using the website.
Figure 2: OnlyFEUP SiteMap
The wireframes below show the template and localization of the important interactive elements. The home page is the most significant page in our system and because of it it is represented below, the next pages that required some clarification and thinking about its usability are the profile page and the groups page. As such they also have wireframes.
Figure 3: OnlyFEUP HomePage
Figure 4: OnlyFEUP ProfilePage
Figure 5: OnlyFEUP Groups Page
September 22:
Context of project, stakeholders, motivation
by:
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto
September 25:
Main features, groups, relation between groups, goals and objectives
by:
André Costa
Lourenço Gonçalves
Marcos Ferreira Pinto
September 25:
Identifying actors and their descriptions, started user stories; business rules 1,2,3
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto
September 26:
Started formating tables for user stories
by:
Fábio Sá
Marcos Ferreira Pinto
September 27:
Finished user stories, business rules, technical requirements, restrictions.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto
October 02:
Text reformatting and some corrections
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto
October 04:
Corrections to user stories, business rules and technical requirements
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto
September 27:
Started and finished sitemap.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto
September 29:
Corrections to sitemap. Started working on wireframes
by:
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto
October 02:
Finished wireframes.
by:
André Costa
Lourenço Gonçalves
Marcos Ferreira Pinto
October 04:
Sitemap labels. Final corrections to sitemap.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto