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
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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. |
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’. |
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. |
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. |
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. |
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. |
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. |
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
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. |