Webapp big refactor

#348
:+1: