Bulletin Board

The bulletin board is a marketplace for trading items, like specialist books and artwork (wouldn’t recommend to sell your Monet there). Also, you can advertise many other things such as second-hand jeans, a free room in your shared apartment or you can offer math tutoring.

Implementation

If you are interested in the implementation, lets dive into it with following quicklinks:

  • <Android>

  • <Backend>

  • <iOS>

Functional Requirements

BB-1 Navigation

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

android x.x.x, ios x.x.x

Dependency

BB-2

Motivation

As a user, I want to have an easy and intuitive access to the feature, so that I do not have to look for the access in several submenus.

Description

The feature SHALL be accessible by the navigation of the application. The default start screen of this feature SHALL be the collection of adverts.

BB-2 Advert collection

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to browse through a list of offer or requests, so that I can find the advert that fits the most to myself. Furthermore, I want to interact with the list, so I can set filters or sorting of the list.

Description

This SHALL be the default screen of the feature. The screen SHALL show a list of adverts.

BB-2.1 Information/Data properties

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to see the most important information regarding an advert in the list, so I can select the most interesting adverts to have a look on their details on the details screen.

Description

Each advert SHALL be listed with following properties: Title, creation time, primary picture, category name, and price. Furthermore, the time SHALL be either set as human-readable timestamp or human-readable time difference between now and the time of publishing. Also, SHALL the entry have a color theme depending on its category.

BB-2.2 Search

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to search for a specific term, so that I can limit the results to items I am interested in.

Description

A search bar SHALL be provided to enable the user to enter a search term. By clicking on a button or confirming the term via the keyboard, a user SHALL be able to start the search and filter the results by the given search term. The back end SHALL process the search term by separating each word in the term and connecting them via and-operators. The query SHALL be run over titles and descriptions. The response SHALL only contain positive findings.

BB-2.3 Filter

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to search through adverts using a search string, so that I can look for a specific item of interest.

Description

(The screen SHALL offer a drop-down menu with pre-determined categories. The user then selects one or many categories. Then, only advertisements related to the selected categories SHALL be shown.) The screen SHALL offer a text field to enter a search string. After the user confirms the search string, the screen SHALL only list adverts that are related to the given search string.

BB-2.3.1 Prefiltered default view

Priority

med

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to have a seperated view for offers and requests, so that I can exclude the wrong type of advert from scratch.

Description

The screen SHALL offer a control element to switch between two views of a list. One SHALL only display adverts of type offer. The other one SHALL only display adverts of type request.

BB-2.4 Sort

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to sort adverts regarding some of their properties, so that I can quickly find adverts that are more relevant for me.

Description

The screen SHALL offer control elements to sort adverts after certain properties in customizable order. Such properties SHALL be date of creation, price, and contact name. Furthermore, other properties MAY be also included for sorting. Options for sorting directions SHALL be limited to ascending and descending.

BB-2.5 Reload

Priority

high

Status

determined

Involved stakeholders

Front End Developer Teams

Implemented in

android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to see only a limited amount of adverts at a time. Furthermore, I want to load further adverts when I reach the end of the current list, so that I have a good overview but also can continue my search if necessary.

Description

When the end of the advert list is reached, the next set of adverts shall be loaded and attached to the current list.

BB-2.6 Refresh

Priority

high

Status

determined

Involved stakeholders

Front End Developer Teams

Implemented in

android VERSIONnr., ios VERSIONnr.

Dependency

Motivation

As a user, I want to refresh the current list of adverts, so I can check whether there are new adverts.

Description

The user SHALL be able to refresh the adverts by performing a swipe-down gesture. Then, the newest set of adverts SHALL be requested from the server and displayed on the screen at the top of the list. This SHALL be possible in any view regardless of the current filter or search term.

BB-2.7 Share adverts

Priority

high

Status

determined

Involved stakeholders

Front End Developer Teams

Implemented in

android VERSIONnr., ios VERSIONnr.

Dependency

Motivation

As a user I want to be able to share adverts with others.

Description

The user MUST have the option to share the ads via a link. Then the link SHALL lead to this ad. and the link SHALL have this domain “https://uniapp.informatik.uni-ulm.de”. and if the link does not lead to an ad, the app SHALL lead to the UniApp page.

BB-3 Advert Detail Screen

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

BB-2

Motivation

As a user, I want to open a detailed view of an advert, so that I can get more information about an advert in comparison to the basic information of the advert list of BB-2.

Description

The Advert Detail Screen SHALL display all relevant information about an object in a seperate screen. The screen SHALL offer an option to leave the Advert Detail Screen to go back to the Advert Collection Screen.

BB-3.1 Data

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to see all required information for a deal, so that I can contact and negotiate with the sender of the advert by a given communication channel.

Description

The screen SHALL display at least following attributes on the Advert Detail Screen: Title, price, category, type, description, primary and other pictures, and user contact information. The type of an advert describes whether it is an offer or a request.

BB-3.2 Connect by phone

Priority

high

Status

determined

Involved stakeholders

Front End Developer Team

Implemented in

android VERSIONnr. , ios VERSIONnr.

Dependency

BB-3.1

Motivation

As a user, I want to call the creator of an advert if a phone number is given, so that I can negotiate with the creator.

Description

When an advert creator’s phone number is available, the screen SHALL offer a control element to start a call with auto-dialing the given phone number.

BB-3.3 Connect by e-mail

Priority

high

Status

determined

Involved stakeholders

Front End Developer Team

Implemented in

android VERSIONnr. , ios VERSIONnr.

Dependency

BB-3.1

Motivation

As a user, I want to contact an advert creator via e-mail if their e-mail address is given, so that I can make a deal with them.

Description

When an advert creator’s e-mail address is available, the screen SHALL offer a control element to start the user’s mail client with auto-filling the email-address.

BB-4 Advert Creation Screen

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

BB-2

Motivation

As a user, I want to fill a form, so that I can add a new advert with the necessary information.

Description

The Advert Collection Screen SHALL offer a control element to switch to an Advert Creation Screen. On the latter a form SHALL be displayed to create a new advert.

BB-4.1 Required Data

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to see which data is required to enter, so that I can save time and reduce data which is published via this service.

Description

The system follows the concept of data minimization. Therefore, it SHALL require as minimal information as possible while still stay available and functional. Because of that, an advert SHALL require following properties: title, description, contact name, email, category, type of advert. An advert’s type is either ‘BUY’ or ‘SALE’ depending whether it is an offer or a request. Further properties MAY be added. The UI element for selecting the advertisment type (e.g. buy or sell) should be variable depending on the number of possible advertisment types. If only two types are possible a switch should be used for selection. For three and more possible advertisment types a dropdown should be used for the selection.

BB-4.2 Optional Data

Priority

med

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to be able to leave optional fields empty, so that I can choose which data I want to share.

Description

The system SHALL offer as many properties as optional as possible. Following properties SHALL be: phone number, price, activeness state, primary picture and further pictures. The activeness state describes whether an advert can be found publicly or not. Inactive adverts can only be reviewed by their owner. The primary picture is the thumbnail of the advert. Further properties MAY be added.

BB-4.3 Advert Categories

Priority

low

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation

As a user, I want to add a category, so that others can find my advert more easily.

Description

The screen SHALL offer a control element to select a category. The categories SHALL be requested from the backend to link the advert to the category properly and provide a fixed selection for the user.

BB-5 MyAdverts Collection Screen

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

BB-1

Motivation/Reason

As a user, I want to have a list of my own adverts, so that I can list and manage them.

Description

There SHALL be a seperate screen which is accessible by a control element in the navigation to list all adverts of the current user. The list will not differ between offer or request. Furthermore, the screen SHALL enable some interactions with a specifc advert using control elements.

BB-5.1 Edit own Adverts

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation/Reason

As a user, I want to have a separate form which enables to modify properties of my advert, so that I can update or expand properties of my advert especially sensitive personal information.

Description

There shall be a control element next to each item of the list. By clicking on this element, the MyAd Detailed Screen shall open.

BB-5.2 Toggle State of Advert

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation/Reason

As a user, I want to deactivate adverts which are deprecated, so that I do not receive unnecessary messages from interested people to save their and my time. Furthermore, I want to be able to activate inactive adverts in case they are still open and valid.

Description

Each advert’s entry in the list SHALL offer a control element to perform a toggle between the activeness states of an advert.

BB-5.3 Delete own Advert

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation/Reason

As a user, I want to delete old adverts of mine, so that I can keep my history clean.

Description

Each advert’s entry in the list SHALL offer a control element to perform a deletion of an advert. The deletion SHOULD request a confirmation by the user before performing the deletion.

BB-5.3.1 Automatic expiration of adverts

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation/Reason

As a maintainer, I want to remove old and potentially deprecated adverts from the list of active adverts, so that users only see interesting and valid adverts.

Description

30 days after an advert is activated, it automatically is set to ‘inactive’.

BB-5.3.2 Automatic removal of inactive adverts

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

BB-1

Motivation/Reason

As a maintainer, I want to remove adverts, that are most likely expired, so that I do not need to maintain them.

Description

60 days after an advert is set to ‘inactive’, it will be removed completly from the database.

BB-5.4 Display inactive adverts

Priority

med

Status

determined

Involved stakeholders

Developer Team

Implemented in

android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation/Reason

As a user, I want to identify active adverts immediately, so I can determine whether an advert is publicly accessible.

Description

Inactive elements SHALL be greyed out or blurred to mark them as inactive. Active elements SHALL stay as they are.

BB-6 MyAdverts Detail Screen

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

BB-5.1, BB-3.1

Motivation/Reason

As a user, I want to have a form filled using the current information of the selected advert so that I can update properties of the advert.

Description

The MyAdverts Detail Screen SHALL offer a form which displays the data defined in BB-3.1. Furthermore, these properties of an advert SHALL be changeable. Also, the screen SHALL offer a control element to confirm the changes and submit them to the backend.

BB-7 Registration of new Device

Priority

high

Status

?

Involved stakeholders

Developer Team

Implemented in

backend x.x.x, android x.x.x, ios x.x.x

Dependency

Motivation

As a user, I want to be able to create and publish several adverts. When switching to a new device, I want to see all the adverts that I created on the other device, too.

Description

When creating the first advert from a device, there SHALL be an ensurance that only authorized users can publish adverts. The e-mail is stored so that there is no verification for publishing required again.

BB-8 Contacting Function

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

BB-3

Motivation/Reason

As a user, I want to be able to send my contact details to the owner of the advert so we can discuss further details about the advert. For example, I can send my e-mail address or phone number and add a short message. The owner of the advert then can contact me based on the provided contact information.

Description

When a user wants to respond to a published advert, they shall have the possibility to send the publisher their contact information. On the advert detail screen, there shall be a button, that, if pressed, opens up a form. The form includes two text fields and one button. One text field for leaving the contact option (e.g. e-mail, phone number) and one field for an optional message by the user. With the button, the user confirms the first contact. Their contact information shall be sent anonymously to the owner of the advert. After sending the contact form, the advert detail screen is shown again.

BB-9 Account resetting/Transfer

Priority

high

Status

determined

Involved stakeholders

Developer Team

Implemented in

backend VERSIONnr. , android VERSIONnr. , ios VERSIONnr.

Dependency

Motivation/Reason

As a user, I want to be able to use the bulletin board feature even after a reinstall of the app. Therefore, a mechanism must be in place to either link an email with a new UUID or to completely delete an existing account.

Description

When a user account is registered for a user, who uninstalls the app and then reinstalls it (new UUID), the user should be given the option to choose whether to migrate his old account to the new UUID or to delete the old account and create a new one. This selection is displayed to the user if an account is already registered with his email address, but he tries to create an advertisment with a different UUID. In this case, the advertisment will be set to inactive for the time being, but will still be created.

Non-Functional Requirements

BB-I MyAdverts Detail Screen

Priority

high

Status

determined

Involved stakeholders

Project Team

Implemented in

Dependency

BB-4

Motivation/Reason

As administrator and project owner, I want only verified users to be able to create adverts, so that I can keep the users accountable for their actions.

Description

The system SHALL only publish adverts from verified users. A user can only be verified via an email address from the domain of the University Ulm.