Make registration page more capable
Most importantly, separate username from e-mail address so that the latter can remain hidden and can also be changed. Additionally it would be nice to capture other information, most or all of which would be optional. For example, orcid or institution name.
This also requires development of a profile page where the user can edit his or her information, and also some kind of password reset feature. How to provide this in a secure fashion without intervention from support staff (of which there are none) is non-trivial.
The following XQuery examples show how to attach the “friendly” name, the email address, and an arbitrary chunk of JSON to a user account. In the latter case there would be no way to do lookups on this information without iterating over every user in the database.
let $x := sm:set-account-metadata('jonsnow',xs:anyURI('http://axschema.org/namePerson/friendly'),'Jon Snow')
let $x := sm:set-account-metadata('jonsnow',xs:anyURI('http://axschema.org/contact/email'),'jonsnow@thenorth.org')
let $x := sm:set-account-metadata('jonsnow',xs:anyURI('http://exist-db.org/security/description'),'{orcid: "https://orcid.org/0xdeadbeef",favorite_color: "blue"}')