Y3S1-LabDBWeb

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**
eduardanascimento@gmail.com eduardalbaw2255

Table 89: OnlyFEUP Administration Credentials

User Credentials

**Email** **Password**
laravel@hotmail.com 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

Triggers

Routes

User Stories

About 30 new low-priority User Stories were added:

Web Resources Specification

Implemented Web Resources

Module M01: Authentication
**Web Resource Reference** **URL**
R101: Login Form GET [/login](https://lbaw2255.lbaw.fe.up.pt/login)
R102: Login Action POST /login
R103: Logout Action GET [/logout](https://lbaw2255.lbaw.fe.up.pt/logout)
R104: Register Form GET [/register](https://lbaw2255.lbaw.fe.up.pt/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}](https://lbaw2255.lbaw.fe.up.pt/user/1)
R202: View user home page GET [/home](https://lbaw2255.lbaw.fe.up.pt/home)
R203: Edit user profile page GET [/user/edit](https://lbaw2255.lbaw.fe.up.pt/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](https://lbaw2255.lbaw.fe.up.pt/home/notifications)
R215: Delete Notification POST /notification/delete
R216: Update Notification POST /notification/update
R217: Messages GET [/messages](https://lbaw2255.lbaw.fe.up.pt/messages)
R218: Private Messages GET [/message/{id}](https://lbaw2255.lbaw.fe.up.pt/message/1)
R219: Create Message POST /message/create
R220: About page GET [/about](https://lbaw2255.lbaw.fe.up.pt/about)
R221: Help page GET[ /help](https://lbaw2255.lbaw.fe.up.pt/help)
R222: Features page GET [/features](https://lbaw2255.lbaw.fe.up.pt/features)
R223: Images GET [/images/{type}](https://lbaw2255.lbaw.fe.up.pt/images/%7Btype%7D)

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

**Web Resource Reference** **URL**
R401: View user search page GET [/home/search](https://lbaw2255.lbaw.fe.up.pt/home/search)
R402: Search users GET [/api/user](https://lbaw2255.lbaw.fe.up.pt/api/user)
R403: Search posts GET [/api/post](https://lbaw2255.lbaw.fe.up.pt/api/post)
R404: Search comments GET [/api/comment](https://lbaw2255.lbaw.fe.up.pt/api/comment)
R405: Search groups GET [/api/group](https://lbaw2255.lbaw.fe.up.pt/api/group)

Table 94: Search implementation

Module M05: Administration
**Web Resource Reference** **URL**
R501: View admin page GET [/admin](https://lbaw2255.lbaw.fe.up.pt/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}](https://lbaw2255.lbaw.fe.up.pt/group/2)
R702: All groups page GET [/groups](https://lbaw2255.lbaw.fe.up.pt/groups)
R703: Edit group page GET [/group/{id}/edit](https://lbaw2255.lbaw.fe.up.pt/group/17/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](https://lbaw2255.lbaw.fe.up.pt/api/userVerify)
R802: Notifications GET[ /api/notifications](https://lbaw2255.lbaw.fe.up.pt/api/notifications)
R803: Notification context GET[ /api/context](https://lbaw2255.lbaw.fe.up.pt/api/context)
R804: Private messages GET [/api/messages](lbaw2255.lbaw.fe.up.pt/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, A**ndré 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