---
# System prepended metadata

title: Requirements

---

# Requirements

## Actors

![Figure 1 - Actors diagram](https://i.imgur.com/q0nTcmF.png)
Figure 1 - Actors diagram

---


| Identifier |                      Description             |
| :--------: | :------------------------------------------: |
| User | A general user is anyone that uses the site. <br> Generic user that can search and view services and events. <br> It can belong to one of two categories: authenticated and unauthenticated (visitor). |
| Visitor | Can authenticate in the system. |
| Authenticated User | An user that is logged in, can submit new services or events for approval and see the list and the state of the previously submited requests. |
|  GI User | Authenticated user that can manage requests belonging to certain UP entities. |
| Administrator | Administrator is responsible for the management of the website. |

Table 1: Actors' description 

## User stories

### User

| Identifier | Name | Priority  | Description           |
|:----------:|:---: |:---:      |:----------------------|
|US101|Browse Events     |High   |As a User, I want to browse all events, so that I can see if there is one that interests me.|
|US102|View Event Details|High   |As a User, I want to access the event page so that I can know more about its details.|
|US103|Search Events     |High   |As a User, I want to search events so that I can easily find the events that meet my requirements.|
|US104|Explore Events By Tag    |High |As a User, I want to explore events by tag, so that I can find related ones faster.|
|US105|Browse Services     |High   |As a User, I want to browse all services, so that I can see if there is one that is of use to me.|
|US106|View Service Details|High   |As a User, I want to access the service page so that I can know more about its details.|
|US107|Search Services     |High   |As a User, I want to search services so that I can easily find the services that are of use to me.|
|US108|About Page     |Low   |As a User, I want to acess the About Page so that I can know what the website is about.|
|US109|Check FAQ     |Low   |As a User, I want to check the frequently asked questions so that I can clarify some of my questions easily.|
|US110|Check Contacts     |Low  |As a User, I want to check the contacts so that I contact the people who manage the website.|



 Table 2: User's user stories 
 
 

---



### Visitor

| Identifier | Name | Priority | Description |
|:----------:|:---:|:---:|:----------------------|
|US201|Login            |High   |As a Guest, I want to log in the system using my federated authentication, so that I can be authenticated and use the website with my UP account.|

 Table 3: Visitor's user stories
 
 

---


### Authenticated User

| Identifier | Name | Priority | Description |
|:----------:|:---:|:---:|:----------------------|
|US301|Log out|High|As an Authenticated User, I want to sign out of the system, so that I can close my account.|
|US302|View Requests|High|As an Authenticated User, I want to view my requests, so that I can check their status.|
|US303|Create Event request|High|As an Authenticated User, I want to create an event request, so that I can share it with everyone.|
|US304|Create access to virtual machine request|High|As an Authenticated User, I want to create a virtual machine request, so that I can use one.|
|US305|Edit Event request|High|As an Authenticated User, I want to make a request to edit my event, so that I can update it's information.|
|US306|Archive Event request|High|As an Authenticated User, I want to make a request to archive my event.|

Table 4: Authenticated User's user stories 



---



### GI User
| Identifier | Name | Priority | Description |
|:----------:|:---:|:---:|:----------------------|
|US401|Archive events|High|As an GI, I want to archive other user’s events, of a certain UP entity, so that the site is free of events that have already happened or won't happen anymore.|
|US402|Archive services|High|As an GI, I want to archive services, of a certain UP entity, so that the site is free of services that don't work/exist anymore.|
|US403|Manage Event Requests|High|As an GI, I want to manage event requests, of a certain UP entity, so that they can be displayed on the website or not.|
|US404|Manage Service Requests|High|As an GI, I want to manage service requests, of a certain UP entity, so that they can be displayed on the website or not.|

Table 5: GI User's user stories 



---


###  Administrator

| Identifier | Name | Priority | Description |
|:----------:|:---:|:---:|:----------------------|
|US501|Assign GI User Accounts|High|As an Administrator, I want to be able to assign GI to a user account, so that I can have someone managing requests.|
|US502|Remove GI User Accounts|High|As an Administrator, I want to be able to remove GI to a user account, so that I can relieve them of those privileges.|
|US503|Archive events|High|As an Administrator, I want to archive other user’s events, so that the site is free of events that have already happened or won't happen anymore.|
|US504|Archive services|High|As an Administrator, I want to archive services, so that the site is free of services that don't work/exist anymore.|
|US505|Manage Event Requests|High|As an Administrator, I want to manage event requests, so that they can be displayed on the website or not.|
|US506|Manage Service Requests|High|As an Administrator, I want to manage service requests, so that they can be displayed on the website or not.|

Table 6: Administrator's user stories 



## Supplementary requirements

### Business rules

| Identifier | Name | Description |
|:----------:|:---:|:-------------|
|BR01|Event Date|The ending time of the event must come after the starting time.|


# Sitemap
![Sitemap](https://i.imgur.com/DOhQbEM.png)

# Wireframe

![](https://i.imgur.com/h6C79VK.png)

![](https://i.imgur.com/fq32Yw8.png)

![](https://i.imgur.com/9AhSZCP.png)

![](https://i.imgur.com/K6MGVfy.png)

![](https://i.imgur.com/aKxAKtM.png)

![](https://i.imgur.com/ax462kw.png)

# Technology

For building this project, we plan on using the following technologies

- Laravel
- Css (framework to be decided)
- PostgreSQL
- Git (Github or FEUP´s Gitlab)
- Js (framework to be decided)


# Event request form

- Name of the event
- Theme
    - Main theme
    - Sub theme(s)
- Purpose
- Start Day
- End Day
- Location(s) (maybe the location can be diferent each day )
- Spoke person(s) (can either be the one who makes the request or someone else)
- Other things if needed

# Event edit form
- What to edit 
- Reason for the change

# Event delete form
- Reason to delete

# Service request form
- Requested service
- Purpose
- (não sei se metemos a pessoa meter qual a instituição(ões) que lhe podem dar o serviço)
- (os serviços têm limite de tempo, tipo "quero um serviço durante x dias"?)
- (os pedidos de serviço têm duração?)

