refactor: webapp