What is it?
In order to address all these questions, I did a few different things. First, to address the issue of project structure, I thought about what the tried and true methods were. Rails was a huge inspiration here; I really liked the way they walked the user through setup. Although it is possible to set up a rails application from absolute scratch, doing so requires memorization of filenames and locations that Rails uses by default. Instead of forcing the user to do so, Rails conveniently provides command line tools that allow the user to generate a project within seconds. I saw this as an obvious way of enforcing an application structure in the Zephyre framework, and so I implemented command line tools as well. Typing
zephre claim example_project will generate a Zephyre application that is ready for the developer to work with. After generating a project and starting the server, visiting localhost:9000 will show the developer this page:
One of my favorite accomplishments in Zephyre is that it includes the same templating engine as Sinatra and Rails do, which allows developers to write ruby code inside of their HTML code, allowing for much more powerful and dynamic web layouts. Zephyre is an opinionated framework, meaning it pre-determines a set of tools that will be available to the developer by default. The tools I chose to include were Bootstrap and JQuery, since they are in wide use and it is rare to see a website built without these two frameworks/libraries. In the future I plan to add Sass as the default CSS framework as well.
Who should use Zephyre?
Anyone who is looking for an MVC framework that is lighter than Rails, but still has enough helpers and abstraction that you can spend time building your app. I wouldn't recommend using Zephyre in a production environment because it simply is not developed enough to be used for production, and likely has security vulnerabilities that stem from a lack of completion. Zephyre is built for small applications and prototyping. Keep in mind that if you DO decide to use Zephyre, you should be comfortable with potentially breaking updates, as the framework will be going through iterations and changes often in its early stages.