Project Controller with views and tests, closes #30