refactor monolithically into one js file and one html template in ./client