Signup process - UKHackspaceFoundation/website GitHub Wiki

"Joe's Story"

A user, Joe, goes to the site to register - in this scenario, he has just heard the Foundation is accepting membership applications and wants to get his hackspace (UltraHack) setup as a Member Space.

  • The registration form asks for email, password and which hackspace he frequents - presented as a list of known hackspaces (this list is based on the same database used for the homepage map, not all of the spaces listed will be members of the Foundation). Selecting a space is optional, as individual members do not need to be associated with a space. Joe selects his hackspace (Ultrahack) from the list.
  • Upon completing the form, Joe is emailed a verification link, which also allows him to set his password once he clicks on it
  • Once Joe's account is verified, his association to Ultrahack also needs to be verified:
    • If there were existing Representatives for the space, they would be requested to approve Joe's association with Ultrahack, but in this case, Joe is first member of Ultrahack to register, so the approval request goes to a site admin
    • In addition, the profile for Ultrahack has a contact email address, so the system sends that address a curtesy email noting Joe's registration with a reply address for anyone at Ultrahack that wants to contend it
  • Once Joe has verified his account he can update his own profile info, apply for individual membership and/or view the details for Ultrahack, but can't do anything else for Ultrahack until his association with it is approved. When that approval is received - Joe is notified by email
  • Now Joe's association is approved, he has the ability to update the profile info for Ultrahack (e.g. add missing info), and/or Apply for Ultrahack to become a Member Space
  • Joe selects "Apply to be a Member Space" and fills in the associated form, goes through the Direct Debit mandate process (via Gocardless) and is finally told his application will now be reviewed by an Admin. Happy with his work, Joe goes off to make tea.
  • In the meantime, an Admin picks up Joe's application, reads the form submission, googles Ultrahack and decides it looks like a top notch hackspace and after a biscuit, approves Joe's application.
  • As a result, the Gocardless API is tickled into sending a payment request to Joe for the membership fee.
  • Joe's account is also marked as Approved, and his account type is set to Representative. To keep Joe updated on progress, he's emailed to let him know he's been Approved and payment is being requested.
  • A few days later, payment is received and the Gocardless webhook is triggered, causing Joe's account to updated and both his and Ultrahack's status to be set to Valid Members!
  • Joe is sent a celebratory email, which causes much joy and drinking

Other scenarios:

  • If Ultrahack had already been a Member Space, but had less than 2 Representatives associated, then Joe could have applied to be an additional representative - this would also triggers a manual approval step, but routed to the existing Ultrahack Representative to approve
  • If Ultrahack had already been a Member Space with 2 Representatives, Joe would only have been presented with the option to become an Individual Member.

Here's one of the possible user journeys illustrated using https://www.websequencediagrams.com/

title Sign-up for existing space, no existing representatives Joe->Web: goes to /sign-up Web->Joe: Serves sign-up form inc. email, password, space (optional) Joe->Web: Enters details, selects an existing space note right of Web: Creates new user account for Joe Web->Spacecontact: Emails notification of new user associating with the space Web->Joe: Serves membership selection form (individial OR space) Joe->Web: Picks "Apply to become a Member Space" Web->Joe: Serves Member Space form Joe->Web: Fills in form note right of Web: Marks Joe as having started application process Web->Joe: Directs Joe to gocardless DD mandate Joe->Gocardless: Requests mandate form Gocardless->Joe: Serves mandate form Joe->Gocardless: Completes form Gocardless->Joe: Redirects back to sign-up completion note right of Web: Marks Joe as having completed mandate Joe->Web: Requests sign-up completion Web->Joe: Serves sign-up completion, noting Joe will need to wait for manual review/approval Web->Admin: Notifies of membership application Admin->Web: Authorises Joe's application note right of Web: Marks Joe as application approved Web->Joe: Notifies of successful application by email Web->Gocardless: Triggers payment collection Gocardless->Web: Notifies of successful payment note right of Web: Marks Joe as valid member and a Representative Web->Joe: Notifies Joe of active member status