Skip to content

Latest commit

 

History

History
1982 lines (1705 loc) · 37 KB

pa.md

File metadata and controls

1982 lines (1705 loc) · 37 KB

PA: Product and Presentation

A9: Product

The OnlyFEUP final product is the result of the implementation of the information system designed in the previous stages (A1 to A7), using PHP and Laravel Framework to produce dynamic web pages, AJAX for a better user experience and PostgreSQL as a database.

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.

Installation

The release with the final version of the source code in the group's Git repository is available here, in PA tag.

Full Docker command to launch the image available in the group's GitLab Container Registry using the production database:

docker run -it -p 8000:80 --name=lbaw2255 -e DB_DATABASE="lbaw2255" -e DB_SCHEMA="lbaw2255" -e DB_USERNAME="lbaw2255" -e DB_PASSWORD="reWisDQE" git.fe.up.pt:5050/lbaw/lbaw2223/lbaw2255

Usage

The final product is available online on https://lbaw2255.lbaw.fe.up.pt

Administration Credentials

Email

Password

[email protected] eduardalbaw2255

Table 89: OnlyFEUP Administration Credentials

User Credentials

Email

Password

[email protected] password

Table 90: OnlyFEUP User Credentials

Application Help

Features related to Help were implemented as long as the rest of the main features. It can be visualized on alert messages on some actions and on some static pages, like “HELP”, “About us” and “Features”.

You can access these pages by their url path, like “/help”, “/about” and “/features” or by pressing the buttons that we created to access these pages. These buttons are always placed in the sidebar.

image_2023-01-02_183103153

Figure 7: OnlyFEUP static pages


On the “HELP!” page we have two main sections. The “frequently asked questions” section presents some usual questions asked and their answers and the “contacts” section shows the administrators’ information so that users may contact them.

OnlyFEUP help page

Figure 8: OnlyFEUP help page

The “About us” page is useful to give some knowledge about our Social Media and about our staff.

image_2023-01-02_183220441

Figure 9: OnlyFEUP AboutUs page

The “Features” page, like the name says, presents the main features implemented divided by topics.

image_2023-01-02_183242128

Figure 10: OnlyFEUP Features page

As alert messages, we decided to implement error/success messages on actions like creating posts/comments and groups and some confirmation messages on relevant actions like deleting a group/account.

image_2023-01-02_183301990

Figure 11: Example of success messages

image_2023-01-02_183321708

Figure 12: Group deletion confirmation message

Input Validation

As the back-end input validation we used the Illuminate\Http\Request granting us access to a function called “validate” that has different types of validation. We used this feature to validate the inputs of our forms, like the login/register form, and the edit user/group profile form as we can see in the next examples:

image_2023-01-02_183355290

Figure 13: Token validation in password recovery

image_2023-01-02_183411905

Figure 14: Back-end input validation in edit user profile page

As the front-end input validation we used javascript. For example, when we edit an existing comment or post but remove the text completely, there is a warning:

Front-end input

Figure 15: Front-end input validation in edit an empty post

Check Accessibility and Usability

Accessibility Checklist, 18/18

Usability Checklist, 27/28

HTML and CSS Validation

HTML Validation, here the warnings and errors are the result of the bootstrap framework and because of the many posts and comments that repeats then.

CSS Validation

Revisions of the Project

There are many revisions made to the project since the requirements specification stage:

Database Schema

  • Two attributes added to users table: 'description' and 'remember_token';
  • Changed passwords encryption method to bcrypt;
  • Media table and its references (in tables or triggers) deleted;
  • New table for blocked users: 'blocked';
  • New table for user notification configurations: ‘configuration’;
  • New table for user private messages: ‘message’;
  • New attribute for posts privacy: ‘is_public’;
  • New attribute for comments replies: ‘previous’;
  • Eight new types of notifications: ‘leave_group’, ‘invite’, ‘ban’, ‘group_ownership’, ‘post_tagging’, ‘comment_post’, ‘reply_comment’, ‘comment_tagging’;

Triggers

  • Update trigger 10 'delete_post_action': when deleting a post it also deletes its comments, subcomments, likes and notifications (business rule BR17);
  • Update trigger 11 ‘delete_comment_action’: when deleting a comment it also deletes its likes, subcomments and notifications (business rule BR18);
  • New trigger 12 ‘delete_group_action’: when deleting a group it also deletes its posts, members, likes, comments, subcomments, notifications and group_notifications (business rule BR19)
  • New trigger 13 ‘delete_mainnotification_action’: after deleting a subnotification, delete main notification table entry;
  • New trigger 14 ‘configuration_action’: When new user appears, he initially gets all kinds of notification (business rule BR20);

Routes

  • /messages, for user private messages;
  • /sendEmail, for sending email with recover password token;
  • /recoverPassword, for recover password action;
  • /user/doFollowRequest,** /user/cancelFollowRequest**, /user/acceptFollowRequest, /user/rejectFollowRequest, for user following manipulation;
  • /api/comment, for comment searching;
  • /api/notifications, for notification management;
  • /api/context, to get notification context;
  • /comment/like, /comment/dislike,** /comment/create**, /comment/delete, /comment/edit, for comment management;
  • /message/{id} and /message/create for private messages management;
  • /notification/delete and /notification/update for user notifications management;
  • /images/{type} for image privacy and visibility;

User Stories

About 30 new low-priority User Stories were added:

  • User functionalities: ‘started following’ and ‘accepted follow request’ notifications, manage and delete notifications, see notification context,
  • Group functionalities: ‘invited to group’, ‘ban’, ‘join’ and ‘new ownership’ notifications, join public and private groups, request to join in private groups, remove posts/comments from groups, change group visibility, manage group invitations, delete group, give group ownership, accept invites and leave group. Mark group as favorites,
  • Comment functionalities: reply to comments, tag users in comments, new tagging user notification, edit comment, delete comment
  • Post functionalities: post tagging notification, hashtags and searching for hashtags, manage post visibility, post media (images and videos),
  • Message functionalities: see messages status, send private messages with text and/or media (images, videos and audios);

Web Resources Specification

Implemented Web Resources

Module M01: Authentication

Web Resource Reference

URL

R101: Login Form

GET /login

R102: Login Action POST /login
R103: Logout Action

GET /logout

R104: Register Form

GET /register

R105: Register Action POST /register
R106: Send Email Action POST /sendEmail
R107: Recover Password Action POST /recoverPassword

Table 91: Authentication implementation

Module M02: Users

Web Resource Reference

URL

R201: View user profile

GET /user/{id}

R202: View user home page

GET /home

R203: Edit user profile page

GET /user/edit

R204: Edit user profile action POST /user/edit
R205: Profile Delete POST /user/profileDelete
R206: Delete User POST /user/delete
R207: Remove follower POST /user/removeFollower
R208: Follow POST /user/follow
R209: Unfollow POST /user/unfollow
R210: Do Follow Request POST /user/doFollowRequest
R211: Cancel Follow Request POST /user/cancelFollowRequest
R212: Accept Follow Request POST /user/acceptFollowRequest
R213: Reject Follow Request POST /user/rejectFollowRequest
R214: User Notifications

GET /home/notifications

R215: Delete Notification POST /notification/delete
R216: Update Notification POST /notification/update
R217: Messages

GET /messages

R218: Private Messages

GET /message/{id}

R219: Create Message POST /message/create
R220: About page

GET /about

R221: Help page

GET /help

R222: Features page

GET /features

R223: Images

GET /images/{type}

Table 92: Users implementation

Module M03: Posts

Web Resource Reference

URL

R301: Create post action POST /post/create
R302: Delete post action POST /post/delete
R303: Edit post action POST /post/edit
R304: Like post action POST /post/like
R305: Unlike post action POST /post/unlike

Table 93: Posts implementation

Module M04: Search

Web Resource Reference

URL

R401: View user search page

GET /home/search

R402: Search users

GET /api/user

R403: Search posts

GET /api/post

R404: Search comments

GET /api/comment

R405: Search groups

GET /api/group

Table 94: Search implementation

Module M05: Administration

Web Resource Reference

URL

R501: View admin page

GET /admin

R502: Block a user from logging in action POST /admin/user/block
R503: Unblocking a user from logging in action POST /admin/user/unblock

Table 95: Administration implementation

Module M06: Comments

Web Resource Reference

URL

R601: Create comment action POST /comment/create
R602: Delete comment action POST /comment/edit
R603: Edit comment action POST /comment/edit
R604: Like comment action POST /comment/like
R605: Unlike comment action POST /comment/unlike

Table 96: Comments implementation

Module M07: Comments

Web Resource Reference

URL

R701: Group page

GET /group/{id}

R702: All groups page

GET /groups

R703: Edit group page

GET /group/{id}/edit

R704: Edit group action POST /group/edit
R705: Create group POST /group/create
R706: Joining group POST /group/join
R707: Group leave POST /group/leave
R708: Group delete POST /group/delete
R709: Give group ownership POST /group/makeOwner
R710: Group join request POST /group/doJoinRequest
R711: Cancel group join request POST /group/cancelJoinRequest
R712: Accept Join Request POST /group/acceptJoinRequest
R713: Reject Join Request POST /group/rejectJoinRequest
R714: Remove member POST /group/removeMember
R715: Invite POST /group/invite
R716: Cancel Invite POST /group/cancelInvite
R717: Reject Invite POST /group/cancelInvite
R718: Accept Invite POST /group/acceptInvite
R719: Favorite group POST /group/favorite
R720: Unfavorite group POST /group/unfavorite
R721: Delete group media POST /group/deleteMedia

Table 97: Groups implementation

Module M08: API

Web Resource Reference

URL

R801: Verify username

GET /api/userVerify

R802: Notifications

GET /api/notifications

R803: Notification context

GET /api/context

R804: Private messages

GET /api/messages

Table 98: Comments implementation

OpenAPI Specification

Full OpenAPI documentation for OnlyFEUP is available in the annexes to this document and in the main repository.

Implementation Details

Libraries and Frameworks Used

User Stories

ID

Name

Priority

Module

Team Members

State

US01 See Home Page high M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US02 View Public Timeline high M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US03 View Public Profiles high M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US04 Search Public Users high M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US05 See About Us medium M02

Lourenço Gonçalves, André Costa

100%
US06 Consult FAQ / Help / Contacts medium M02

Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US07 See Main Features medium M02

Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US08 Sign-up high M01

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US09 Sign-in high M01

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US10 Sign-out high M01

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US11 View User Profiles high M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US12 View personalized timeline high M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US13 Create Post high M03

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US14

View Own

Profile

medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US15 Support Profile Picture medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US16 Recover Password medium M01

Fábio Sá, Marcos Ferreira

100%
US17 Delete Account medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US18 Send Follow Request medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US19 View profiles followed medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US20 Search for Posts, Comments, Groups and Users medium M04

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US21 Exact Match Search medium M04

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US22 Full-Text Search medium M04

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US23 Search filters medium M04

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US24 Search over Multiple Attributes medium M04

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US25 Follow someone medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US26 Manage Received Follow Requests medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US27 Manage Followers medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US28 Comment on Posts medium M06

Fábio Sá, Marcos Ferreira

100%
US29 React to post medium M03

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US30 React to comment medium M05

Fábio Sá, Marcos Ferreira

100%
US31 Create Groups medium M07

Lourenço Gonçalves, André Costa

100%
US32 Manage Group Invitations medium M07

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US33 Edit profile medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US34 View Personal notifications medium M02

Fábio Sá

100%
US35 Placeholders in Form Inputs medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US36 Contextual Error Messages medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US37 Contextual Help medium M02

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US38 Follow Requests Notification medium M02

Fábio Sá

100%
US39 Started Following Notification low M02

Fábio Sá

100%
US40 Accepted Follow Notification low M02

Fábio Sá

100%
US41 Invite Group Notification low M07

Fábio Sá

100%
US42 Reply to Comments low M06

Marcos Ferreira, Fábio Sá

100%
US43 Tag Users in Posts low M03

Marcos Ferreira, Fábio Sá

100%
US44 Post Tagging Notification low M03

Fábio Sá

100%
US45 Comment and Reply Tagging Notification low M06

Fábio Sá

100%
US46 Join Public Group low M07

Lourenço Gonçalves, André Costa, Fábio Sá

100%
US47 Request to Join Private Group low M07

Lourenço Gonçalves, André Costa, Fábio Sá

100%
US48 Manage my notifications low M02

Fábio Sá

100%
US49 Delete notifications low M02

Fábio Sá, Marcos Ferreira

100%
US50 Hashtags low M02

Marcos Ferreira, Fábio Sá

100%
US51 Notification context low M02

Marcos Ferreira, Fábio Sá

100%
US52 Send Private Messages low M08

Marcos Ferreira, Fábio Sá

100%
US53 Private Messages Status low M08

Marcos Ferreira, Fábio Sá

100%
US54 Send Private Media low M08

Marcos Ferreira

100%
US55 Edit Group Information medium M07

Lourenço Gonçalves, André Costa, Marcos Ferreira

100%
US56 Remove member medium M07

Lourenço Gonçalves, André Costa, Marcos Ferreira

100%
US57 Add to group medium M07

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US58 Remove post from group low M07

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US59 Change group visibility low M07

Lourenço Gonçalves, André Costa

100%
US60 Manage Group invitations low M07

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US61 Manage Join Requests low M07

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US62 Delete my group low M07

Lourenço Gonçalves, André Costa, Marcos Ferreira

100%
US63 Give Ownership low M07

Lourenço Gonçalves, André Costa, Marcos Ferreira

100%
US64 Request Join Notification low M07

Fábio Sá

100%
US65 Joined Notification low M07

Fábio Sá

100%
US66 Accepted Invite Notification low M07

Fábio Sá

100%
US67 Leave Group Notification low M07

Fábio Sá

100%
US68 View group members medium M07

Lourenço Gonçalves, André Costa, Marcos Ferreira

100%
US69 Post on group medium M07

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US70 Leave group medium M07

Lourenço Gonçalves, André Costa

100%
US71 Favorite low M07

Fábio Sá, Marcos Ferreira

100%
US72 Ban Notification low M07

Fábio Sá

100%
US73 Ownership Notification low M07

Fábio Sá

100%
US74 Edit post high M03

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US75 Delete post high M03

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US76 Likes on Own Post Notification medium M03

Fábio Sá

100%
US77 Comments on Own Posts Notification medium M06

Fábio Sá

100%
US78 Manage post visibility low M03

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US79 Post media low M03

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US80 Edit comment medium M06

Fábio Sá, Marcos Ferreira

100%
US81 Delete comment medium M06

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US82 Likes on Own Comment Notification low M06

Fábio Sá

100%
US83 Replies on Own Comment Notification low M06

Fábio Sá

100%
US84 Special Search privileges high M05

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US85 Administrator Account medium M05

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US86 Administer user accounts medium M05

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US87 Block and unblock user accounts medium M05

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US88 Delete user account medium M05

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US89 Delete posts and comments medium M05

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%
US90 Delete groups low M05

Fábio Sá, Lourenço Gonçalves, Marcos Ferreira, André Costa

100%

Table 99: OnlyFEUP implemented features

A10: Presentation

Product Presentation

OnlyFEUP is the first FEUP centered social network! With the purpose of facilitating students and teachers to share and discuss ideas and resources about subjects by posting and/or commenting, bringing closeness between them by creating connection and ease of communication. With OnlyFEUP you can create groups to gather people with the same interests, send private messages and much more. Even if you are more conscious about your privacy, there are options to make a private profile, a private group and private posts.

OnlyFEUP is made with HTML5, JavaScript, CSS. The Bootstrap framework was used to improve the user interface and the Laravel framework, which uses PHP, was used for the back-end and content of the pages. The platform also features an adaptive design and a simple navigation system with relevant information always on the same place, the sidebar. In there you can find the most important actions of a particular page. But even if you have questions, just check the static page.

URL to the product: https://lbaw2255.lbaw.fe.up.pt

Video Presentation

video https://git.fe.up.pt/lbaw/lbaw2223/lbaw2255/-/blob/main/docs/lbaw2255.mp4

Revision History

Artifact A9 - Editor: Fábio Sá

November 30:
Delete post with ajax request, https version, fixed post query in feed.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 1:
Delete account, work on static pages
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 2:
Delete account modification to use transactions
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 3:
Started working on unfollow and following with request (for private accounts), work on notification and new features for groups and groups’ page, work on password recovery
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 4:
Likes and unliking (remove likes), sidebar update, added edit group page
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 5:
Bug fixes in notification, follows and unfollows and deleting a user
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 6:
Notification with ajax request and real time notifications
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 7:
Edit group action, buttons to join group (including request in private groups), admin features for >groups
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 9:
Like’s restrictions, modification in queries for various information.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 10:
Group notifications, optimizations on search.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 11:
Comments and subcomments
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 12:
Added feature to remove member from group, likes and unliking for comments
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 13:
Edit comment; counter for comments, subcomments and replies
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 14:
Groups’ invites, deleting a group, bootstrap setup, started work on group ownership transfer, css changes >and adaptation with bootstrap.
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 15:
Posting in groups, finished group ownership transfer, counter for notifications, bootstrap changes
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 16:
Line breaks in textfields, relative timestamps, fixed create post to not accept empty posts
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 17:
Notifications’ settings, chat section created, css changes, added more media formats
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 18:
Major visual redesign of onlyFEUP (posts, comments, buttons, profile page)
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 19:
Continuation of visual design changes (favicon, sidebar adaptive size, login and register pages, scroll bars, search page)
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 20:
Design changes (edit group page, profile edit page, work on tagging users
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 21:
Comments are now forms, counter now work correctly, bug fixes
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 22:
Addition of chat system
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 23:
Messages in chat now in real time (not reloading needed), added confirmation for important actions, chat design changes, searching comments now fixed
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 24:
Support for images, videos and audio in chat messages
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 27:
Static pages, design changes
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 29:
Added a features page, fixes in general
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

December 30:
Html and css validation (and changes if necessary), update in open api documentation
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

January 1:
Fixes in general, database now in contextual to FEUP
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto

Artifact A10 - Editor: Marcos Ferreira

January 2:
Product Presentation text, Video presentation, update wiki
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto