web-based administrative UI

closes #19