Server side validation and showing error messages

* [x] have server side validation and recieve errors
* [x] show errors
* [x] end up in a nice state after error (**nice enough**)