Creating a model-driven app from scratch