https://test.vmarmysh.com/user/description/backend
- Why the API does not use a common slash-separated resource notation?
- Why the API does not follow HTTP standard? Why does it not use GET, PUT, DELETE? Why are query parameters used in a wrong way?
- Why are the names of the types so unreadable? (FxNet.Web.Model.MRange<FxNet.Web.Def.Api.Diagnostic.Model.MJournalInfo>)
- FxNet.Web.Def.Api.Diagnostic.View.VJournalFilter - why is search marked as required when it actually is optional?
- Why there are no error status codes defined in the contract?
- Why do deletion and modification commands return 200 with empty bodies?
- Why does /api.user.tree.get creates the tree if it does not exist? Is it a query or a command?
- ReactTest.Tree.Site.Model.MNode - why is the contract of children is undefined?
- According to the examples ReactTest.Tree.Site.Model.MNode.children may contain null items. Why and how is this possible?
- "The database model has to be designed" - why should we design the database model instead of the domain model?
- "The journal of all exceptions" - seems like it is not a part of the domain. Should we not use more appropriate tools for monitoring, such as log or trace aggregators?
- "Your application should provide Rest API similar (ideally the same) to the existing (check swagger)." - this is not a Rest API, it does not follow the Rest principles.
- "You have to delete all children nodes first" - this seems to be a validation error, so it's more like 400 instead of 500, more like ValidationException instead of SecureException and more like a user error instead of exception.
- Since neither the domain rules nor the contract of errors is defined, it is hard to tell which cases should lead to exceptions and which exceptions should be considered "secure".
- Since there is no glossary defined it is hard to understand whether the node or the tree should be considered as an aggregate root. Both solutions would have its own advantages and disadvantages. Here is the "node-as-aggregate" implementation.
- The task requires "2-3 hours". Since it is impossible to write a good maintainable and well-tested code in 2-3 hours, unit tests are missing and the code quality is doubtable.