Requirements for GUI functionality (taken from DNSCheck 1.*'s) for the Zonemaster project. This is the functional requirements from the current DNSCheck.
Link to example: http://dnscheck.iis.se
Link to code: https://github.com/dotse/dnscheck/tree/master/webui

Language:
[1.1] The GUI MUST support multiple languages in a standardized and reasonably easy-to-understand way (especially to make it easy to add more languages in the future). 
 [1.2] The GUI MUST have a way of identifying preference of connected users' language and this SHOULD be implemented on the client side (for example using language preference settings from connecting browser).
 [1.3] The GUI MUST have a easily configurable default language as a fallback from req [1.2].
 [1.4] The GUI MUST support IDN 2.0 domains as input.
 [1.5] The GUI MUST have an easy-to-understand way to change the language from the first page.
 [1.6] When a user has chosen a language the index, faq and results from the database MUST be in the chosen language UNLESS specific messages are missing where in such a case the default language COULD be used for these, or all, messages.

Usability:
[2.1] The GUI MUST have more than one possible view towards the users and the default SHOULD be the most simple one.
 [2.2] The GUI MUST have a view containing the "undelegated"-functionality, this view SHOULD be perfectly clear on what this means (for example a small warning that notifies the user when presenting undelegated-results). 
 [2.3] The simple view SHOULD highlight found errors and warnings for the test being run.
 [2.4] The simple view SHOULD give the user the possibility to see more information about encountered errors from within the simple view, if he/she so chooses. 
 [2.5] The GUI MUST be able to give a simple, summarized verdict on the domain being tested (for example; green/yellow/red).
 [2.6] The GUI MUST provide a list with previous runs for the given domain and these SHOULD be kept separate between normal and "undelegated" testruns.
 [2.7] The list from [2.6] MUST contain working links to the previous tests and these MAY be the same links as created in [4.2].
   	
Security:
[3.1] The GUI MUST have a chroot-similar design where its config, outside of reach of the web root itself, is read only once at startup.
 [3.2] The GUI MUST have all sensitive information in the protected configuration file from [3.1] but MAY have options elsewhere if deemed necessary. 
 [3.3] The GUI SHOULD have an easy-to-read source code that is well documented and commented.

Functionality:
[4.1] The GUI MUST have the same functionality over IPv6 as is given over IPv4 and SHOULD inform the user from what address they are connecting.
 [4.2] The GUI MUST create unique links for every test generated through its interface and these links SHOULD be easy to find for the user.
 [4.3] The GUI SHOULD allow links to tests that were generated from other sources than the GUI itself but MAY not allow all available sources to be accessed.





