add budget model and controller with tests