add web frontend

and refactor backend xml generation

(large commit)