Functional Specification - xrnl/aginun Wiki

Original URL: https://github.com/xrnl/aginun/wiki/Functional-Specification

This document only contains the specification for the current version in development. Once we have more capacity in our team we will list out all the possible useful functionalities for the platform and classify each of them using the MoSCoW method. From this prioritized list, we will select the features needed in the next versions of the platform.

Users

We distinguish between two types of users:

  1. Rebels (members of an Extinction Rebellion working group, who are looking for volunteers to help with roles and tasks in their working group)
  2. Volunteers (members and non-members of Extinction Rebellion, who are looking to help with a role or task within Extinction Rebellion)

When the term user is used it refers to both types of user.

Use cases

version 0.0.1

In this version, we only include the necessary functionality for a minimum viable product. Specifically, in this version it should be possible to view, filter, add, edit and delete roles.

#1: Accessing the platform

Main success scenario

  1. A user accesses the platform by navigating to actnow.extinctionrebellion.nl
  2. When the platform has loaded, the user sees a set of available roles within Extinction Rebellion NL.

Extensions

#2: Creating a role

  1. Rebel signs in with an account of its working circle (e.g. Outreach & Training) or with an account of its local group (e.g. XR Utrecht). This account is not created by them but is instead given to them by the developers of the platform.
  2. When they log in, the rebel sees the same interface as when first accessing the platform, however, now the previously inactive new role button is active.
    1. If a user is not logged in, and they hover or click on the new role button, a tooltip explains that they cannot create a role without being logged in.
  3. Rebel clicks on the 'new role' button and a modal window appears containing a form to create a new role. This form contains fields for all the role details.
    1. The form has dropdowns for pre-defined fields (e.g. time commitment) and text fields for open fields (e.g. role title).
    2. The form has the local group field and working group field pre-selected based permissions of the account. For example, if the account belongs to the national Outreach and Training circle, the local group field will be set to National and the working group field set to Outreach and Training. If the account belongs to the XR Zwolle local group, the local group field will be set to XR Zwolle and the working group could be selected by the user from a dropdown.
      1. When a rebel hovers or clicks on a pre-selected field a tooltip explains why that field is preselected.
  4. Rebel publishes the role by filling out a form and clicking the publish button.
    1. The publish button is inactive while there is still a field in the form that is not validated (empty, only spaces, wrong input...)
      1. When the rebel hovers or clicks over the inactive publish button a tooltip explains that they need to correctly complete the form before publishing.
  5. After a rebel focuses out of a field with input that does not pass the validation (e.g. no input) they immediately get informative feedback about what input is expected (e.g. with some red text showing up under the field)
  6. The rebel can stop creating a role by clicking the cancel button or by clicking outside of the modal window. The next time the rebel clicks on new role the form contains the information the rebel had previously entered.
  7. After the rebel publishes the role the modal window closes and the rebel immediately sees the role as the first one on the list of roles.

#3: Finding a role

Main success scenario

  1. The volunteer sees a set of roles when they first access the platform. For each role, they see the following fields: title, working group, local group and time commitment.
  2. The volunteer can view more roles by scrolling down until there are no more roles to show.
  3. The volunteer can search roles by the role name. After the volunteer types in the role name and presses enter they only see those roles whose title has a (case-insensitive) subset of text matching the text that the user entered.
    1. The volunteer can click on a cross icon within the search field that clears the text from the search field and removes the search filter.
  4. The volunteer can filter roles by working group by selecting items from a list of existing working groups. After an item is selected (or de-selected), the list of viewable roles updates to those matching one of the selected working groups.
    1. The volunteer can de-select an individual working group to remove it from the filter.
  5. The volunteer can filter roles by local group by selecting items from a list of existing local groups. After an item is selected (or de-selected), the list of viewable roles updates to those matching one of the selected local groups.
    1. The volunteer can de-select an individual local group to remove it from the filter.
  6. The volunteer can filter roles by time commitment using a slider ranging from minimum to maximum time commitment.
  7. The volunteer can use multiple filters at the same time.
  8. The volunteer can click on a button to clear all filters.

Extensions

#4: Applying for a role

Main success scenario

  1. The volunteer clicks on a role to open a modal view that contains all the information about the role details. At the top of the modal, the volunteer sees instructions on how to apply for the role by contacting the role aide.
  2. The volunteer contacts the role aide via email, phone or Mattermost to apply for the role.
  3. If the volunteer gets the role, a rebel registers that a role has been filled by searching for the role, clicking on the role to go to the role details view and clicking on the role filled button.
    1. The role filled button is only visible to the account that created the role.
    2. When the role filled button is clicked, the role is removed from the list of available roles that volunteers can see. The role is not deleted from the database. Instead, a timestamp is assigned to that role indicating when the role was filled. Keeping this information is useful to evaluate the performance of the platform and for the integration team to follow up with rebels that posted the role.

Extensions

#5: Deleting a role

  1. Rebel signs in with the account of its circle (see 2.1)
  2. Rebel searches for the role they want to delete, clicks on the role to go to the role details view and clicks on the delete role button.
    1. The delete role button is only visible to the account that created the role.
    2. A prompt asks the rebel if they are sure they want to delete the role. If they click yes the role is deleted, if they click no the role is not deleted.
    3. When the delete role is clicked the role is removed from the list of available roles and from the database.
      1. Backups of the database are carried out every week so we can retrieve roles that are deleted unintentionally or with bad intentions.

#6: Editing a role

  1. Rebel signs in with the account of its circle (see 2.1)
  2. Rebel searches for the role they want to edit, clicks on the role to go to the role details view and clicks on the edit role button to switch the role detail view to the role edit view.
    1. The edit role button is only visible to the account that created the role.
    2. When the edit role button is clicked to enter the role edit view, the read-only fields should become editable in accordance with the specification in 2.3.
    3. When the edit role button is clicked to enter the role edit view, the delete role and role filled buttons should be replaced with cancel and save buttons.
  3. Rebel edits fields and clicks save to update the role details (following the same validation rules as specified in 2.4).
    1. When save is clicked the role edit view is restored to the role details view with the new details.
    2. When cancel is clicked the role edit view is restored to the role details view with the old details.