# Code structure The Bulma module should be removed. The actual Bulma-related code should be in the package [purescript-bulma][psbulma], which currently lacks some features. The general style of the website should be in a module. Modules should have their own specific API. When a module currently requires to send messages, the API should reflect semantics instead of providing the module a way to just carry raw messages. For example, there are currently modules able to send messages (with a very simple `MessageToSend message` API), but instead of dealing with raw messages that need to be built inside the module, the API should be more semantic such as `ChangePassword new-password`. Once modules will have specific APIs, the entire state of the application could be moved into a single module (or *component*) so every state modification can be handled in a single place. Minor modifications: - split `App.Zone` to improve compilation times - explanations and static content in general should be written using some kind of templates, not directly in Halogen # Features About zone records: - allow '@' in record names (replaced by the fqdn, the "root" domain, such as "example.netlib.re.") - enable to change NS records, but after a accepting the consequences About the admin interface: - enable administrators to ask for users' info and show zones - perform a few more administrative operations (*TBD*) Slightly more complex features to implement: - zone-wise indications to help people configure their zone for specific uses (web, mail) # Tests Check for common errors: - nodes with both a CNAME and another RR - verify that SPF mechanisms point to available records More specialized tests or debug options: - verify the length of received messages in `App.Message.IPC` - MAYBE: run `named-checkzone` on the genetared zone and provide the result in case of an error # Display - say that there is no IPv6 on the server at the moment, so there is no point doing IPv6 address updates - admin interface: basically just rewrite the whole thing, it's a mess Details: - *maybe* notifications should disappear after a few seconds - hide logs by default? # General note The code should be reviewed and a decent documentation should be provided. Right now, the code is still in a somewhat early stage and **multiple** refactoring should take place. For example, modules have a very generic API; they can provide or receive messages from (respectively *to*) authd or dnsmanagerd. Instead, modules should have a more specific API and not deal with message encoding at all. Furthermore, *maybe* the state of the entire application should be stored in a single module, with a single function handling all state modifications when a message is received, enabling a simpler data management. # TODO in authd and dnsmanagerd - enable users to change their NS - MIGRATION-related: remove migrated accounts with no connection in over 6 months [psbulma]: https://github.com/KaneRoot/purescript-bulma