Skip to content
This repository has been archived by the owner on Nov 16, 2023. It is now read-only.
José Miguel Isidro edited this page Jan 8, 2023 · 1 revision

PA: Product and Presentation

A9: Product

The EVUP project was created with the aim of developing a platform specifically for students and organizations at Universidade do Porto to connect and share events.

1. Installation

Final version of the source code here

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

2. Usage

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

2.1. Administration Credentials

Administration URL: https://lbaw2252.lbaw.fe.up.pt/admin

Email Password
admin@evup.com 1234

2.2. User Credentials

Type Email Password
basic account user@evup.com 1234
event organizer organizer@evup.com 1234
blocked account blocked@evup.com 1234

3. Application Help

The application design is intuitive and most of the features available are displayed with either commonly used icons or explicity described in text. For a great number of actions within the apllication, we provide an 'action confirmation' preventing users from causing irreversable mistakes, such as deleting an event:

help.png

Furthermore, we provide contextual help in tooltips for actions that are more hidden.

Additionally, all the textboxes include placeholders that inform the user of their purpose, and there are messages informing them of possible input errors.

Most buttons include a title which further explains the action for that button.

help.png

We have also implemented custom Alerts so that a message is displayed informing the user of the status of an action after it has been performed.

help.png

In case an error occurs, an Error Alert will be displayed.

help.png

Lastly, we provide an interactive Contacts page, where users can submit bug reports, new feature ideas and ask any doubts regarding our application. These submissions may later be reviewed by our administrators.

4. Input Validation

We have input validation on both client and server sides:

On the client side, we have explicit types for all input fiels, as is shown in the example below:

<input type="email" name="email" value="{{ old('email') }}" required placeholder="Email" class="w-full border-none bg-transparent outline-none placeholder:italic focus:outline-none" />

We have also validation in the server side, where we use validators to check the data filled by the user. As an example, when editing the profile we also check if the new username/ email already exist (since they are unique keys). The following code is the validator when creating an event:

$validator = Validator::make(
      $request->all(),
      [
        'name' => 'required|string|min:3|max:100',
        'eventaddress' => 'required|string|min:3|max:200',
        'description' => 'required|string|min:3|max:100',
        'image' => 'required|image|mimes:jpg,png,jpeg,gif,svg|max:4096',
        'endDate' => 'required|date',
        'startDate' => 'required|date',
      ]
    );

    $errors = [];
    if ($validator->fails()) {
  
      foreach ($validator->errors()->messages() as $key => $value) {
        $errors[$key] = is_array($value) ? implode(',', $value) : $value;
      }

      return redirect()->back()->withInput()->withErrors($errors);
    }

5. Check Accessibility and Usability

Accessibility results: 15/18 Usability results: 23/28

Accessibility results

Usability results

6. HTML & CSS Validation

We validate HTML here and CSS here.

HTML

Page Errors Warnings PDF Link
Home Page 0 3 homePage.pdf
Event Page 1 5 eventPage.pdf
Profile 1 3 profile.pdf
MyEvents 0 2 myEvents.pdf
Admin Panel 0 2 adminPanel.pdf
About 0 2 about.pdf
Contact 0 2 contact.pdf
Login 0 1 login.pdf

Css

css.pdf

7. Revisions to the Project

We have implemented some extra (low) features and did not implement a ticket system, contrary to what was specified in the requirements specification stage.

In the requirements specification stage, we initially choose Portability as one of our main Technical requirements, however we later changed our minds and put our efforts into improving Availability for the users.

8. Web Resources Specification

Updated OpenAPI specification in YAML format to describe the final product's web resources.

Open API

9. Implementation Details

9.1. Libraries Used

TailwindCSS (link)

Tailwind CSS is a utility-first CSS framework that provides a set of low-level utility classes for building custom user interfaces. It allows developers to style their HTML elements directly using these classes, rather than writing custom CSS, making it easier and faster to build custom designs. It is responsive, customizable, and extensible.

TailwindCSS - Flowbite (link)

Flowbite is a library of components built on top of the utility-classes from Tailwind CSS and it also includes a JavaScript file that makes interactive elements works, such as modals, dropdowns, and more.

Laravel (link)

A PHP Framework For Web Artisans, that provides the strucure and starting point for creating our application.

Laravel Socialite (link)

Laravel package to authenticate with OAuth API, more specifically with Google, as it can be seen in the login page.

Laravel Mail (link)

Laravel package used to send mails. It it used to send Contact Form Notifications, Unban Appeal Notifications and Reset Password Notifications.

Mailtrap.io (link)

Mailtrap is a platform or safe and comprehensive email testing. Mailtrap is implemented as a dummy SMTP server. It catches all your test emails and displays them in virtual inboxes. Used to catch all mails sent by our web application.

9.2 User Stories

User

US Identifier Name Module Priority Team Members State
US01 Browse Events M03: Events high Sara Reis 100%
US02 View Public Event M03: Events high Daniela Tomás, Sara Reis 100%
US03 Search Events M03: Events high Sara Reis 100%
US04 Explore Events by Tag M03: Events medium Sara Reis 100%
US05 Explore Events by Category M03: Events medium Sara Reis 100%
US06 See About Us M08: Static Pages medium José Miguel Isidro 100%
US07 Consult Main Features M08: Static Pages medium José Miguel Isidro 100%
US08 Consult Contacts M08: Static Pages medium José Miguel Isidro 100%
US09 Appeal for Unblock M02: Profile and User Information low José Miguel Isidro 100%

Table 2: User user stories.

Visitor

US Identifier Name Module Priority Team Members State
US10 Sign-in M01: Authentication high Sara Reis 100%
US11 Sign-up M01: Authentication high Sara Reis 100%
US12 Logout M01: Authentication high Sara Reis 100%
US13 Recover Password M01: Authentication medium José Miguel Isidro 100%
US14 OAuth API Sign-in M01: Authentication low Sara Reis 100%
US15 OAuth API Sign-up M01: Authentication low Sara Reis 100%

Table 3: Visitor user stories.

Authenticated User

US Identifier Name Module Priority Team Members State
US16 Request to be Event Organizer M03: Events high Hugo Almeida 100%
US17 Invite Users to Public Event M03: Events high Sara Reis 100%
US18 Manage Events Attended / to Attend M03: Events high Sara Reis 100%
US19 View Profile M02: Profile and User Information high Hugo Almeida, José Miguel Isidro, Sara Reis 100%
US20 Edit Profile M03: Events high Sara Reis 100%
US21 Request to Join Event M03: Events medium Sara Reis 100%
US22 Add a Profile Picture M02: Profile and User Information medium Sara Reis 100%
US23 View Personal Notifications M06: Notifications medium José Miguel Isidro 100%
US24 Recover Password M01: Authentication medium José Miguel Isidro 100%
US25 Delete Account M02: Profile and User Information medium José Miguel Isidro 100%
US26 Report Event M03: Events low José Miguel Isidro 100%

Table 4: Authenticated User user stories.

Attendee

US Identifier Name Module Priority Team Members State
US27 View Event Comments M08: Comments medium Daniela Tomás 100%
US28 Add Comments M03: Events medium Daniela Tomás, José Miguel Isidro 100%
US29 Answer Polls M07: Polls medium Hugo Almeida 100%
US30 Upload Files M02: Profile and User Information medium Sara Reis 100%
US31 Vote in Comments M08: Comments medium Daniela Tomás 100%
US32 View Attendees List M03: Events medium José Miguel Isidro 100%
US33 Leave Event M03: Events medium Sara Reis 100%
US34 Edit comments M08: Comments medium Daniela Tomás 100%
US35 Delete Comment M03: Events medium Daniela Tomás, José Miguel Isidro 100%
US36 Answer Comments M03: Events low Daniela Tomás, José Miguel Isidro 100%

Table 5: Attendee user stories.

Event Organizer

US Identifier Name Module Priority Team Members State
US37 Create Event M03: Events high Sara Reis 100%
US38 Edit Event Details M03: Events high Daniela Tomás 100%
US39 Add User to Event M03: Events high José Miguel Isidro 100%
US40 Manage Event Participants M03: Events high José Miguel Isidro 100%
US41 Create Polls M07: Polls medium Hugo Almeida 100%
US42 Cancel Event M03: Events medium José Miguel Isidro 100%
US43 Manage Event Visibility M03: Events medium José Miguel Isidro 100%
US44 Manage Available Tickets None low None 0%
US45 Send Event Invitations M03: Events low Sara Reis 100%
US46 Manage Join Requests in Public Events M03: Events low José Miguel Isidro 100%
US47 Manage Join Requests in Private Events M03: Events low José Miguel Isidro 100%
US48 Answer Comments M08: Comments low Daniela Tomás, José Miguel Isidro 100%
US49 Event Dashboard M03: Events low José Miguel Isidro 100%

Table 6: Event Organizer user stories.

Administrator

US Identifier Name Module Priority Team Members State
US50 Remove comments M04: User Administration high Daniela Tomás, José Miguel Isidro 100%
US51 Ban and Unban (block and unblock) user M04: User Administration high José Miguel Isidro 100%
US52 Delete Event M04: User Administration high José Miguel Isidro 100%
US53 Verify Event Organizer M04: User Administration high José Miguel Isidro, Sara Moreira Reis 100%
US54 Browse Events M04: User Administration high José Miguel Isidro 100%
US55 View Event Details M04: User Administration high Daniela Tomás 100%
US56 Manage Event Reports M04: User Administration high José Miguel Isidro 100%
US57 Cancel (delete) Event M04: User Administration medium José Miguel Isidro 100%
US58 Administrator Accounts M04: User Administration medium José Miguel Isidro 100%
US59 Administer User Accounts (search, view, edit, create) M04: User Administration medium José Miguel Isidro 100%
US60 Delete User Account M04: User Administration medium José Miguel Isidro 100%
US61 View Unban (unblock) appeals M04: User Administration low José Miguel Isidro 100%
US62 View User Contact Submissions M04: User Administration low José Miguel Isidro 100%
US63 Admin Dashboard M04: User Administration low José Miguel Isidro 100%

Table 7: Admin user stories


A10: Presentation

This artifact corresponds to the presentation of the product.

1. Product presentation

The EVUP project was created with the aim of developing a platform specifically for students and organizations at Universidade do Porto to connect and share events. The platform provides a space for students and organizations to create and join events that are relevant to them. An administrative team has been appointed to oversee the operation of the platform and ensure that all users follow the website's rules and regulations.

The website was built using HTML5, JavaScript, and CSS, and utilizes the TailwindCSS library for the frontend and the Laravel PHP framework for the backend.

URL to the product: http://lbaw2252.lbaw.fe.up.pt

2. Video presentation

Video Screenshot

Link to Video


Revision history

Changes made to the first submission:

  1. Fixed some errors and bugs that caused the website to crash
  2. Added validation and usability files
  3. Last Changed: 03/01/2023
  4. Editor for the first submission: Hugo Almeida

GROUP2223