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.
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
The final product is available online on https://lbaw2255.lbaw.fe.up.pt
**Email** | **Password** |
eduardanascimento@gmail.com | eduardalbaw2255 |
Table 89: OnlyFEUP Administration Credentials
**Email** | **Password** |
laravel@hotmail.com | password |
Table 90: OnlyFEUP User Credentials
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.
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.
Figure 8: OnlyFEUP help page
The “About us” page is useful to give some knowledge about our Social Media and about our staff.
Figure 9: OnlyFEUP AboutUs page
The “Features” page, like the name says, presents the main features implemented divided by topics.
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.
Figure 11: Example of success messages
Figure 12: Group deletion confirmation message
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:
Figure 13: Token validation in password recovery
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:
Figure 15: Front-end input validation in edit an empty post
Accessibility Checklist, 18/18
Usability Checklist, 27/28
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.
There are many revisions made to the project since the requirements specification stage:
About 30 new low-priority User Stories were added:
**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
**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
**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
**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
**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
**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
**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
Full OpenAPI documentation for OnlyFEUP is available in the annexes to this document and in the main repository.
**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
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
https://git.fe.up.pt/lbaw/lbaw2223/lbaw2255/-/blob/main/docs/lbaw2255.mp4
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
January 2:
Product Presentation text, Video presentation, update wiki
by:
André Costa
Fábio Sá
Lourenço Gonçalves
Marcos Ferreira Pinto