Genie Framework - Highly Productive Web Development With Julia

Easy to learn and easy to use are two different things - up to the point that many times there’s a tradeoff between learning path and productivity (ease of use).

Genie is self-titled “the highly productive Julia web framework,” so this is a hint that productivity is a crucial concern. We did a pretty good job at nailing this and Genie is easy to use.

It is designed around the convention-over-configuration design pattern so that all that is required is adhering to a minimum workflow and things will work. And since people are terrible at remembering things (aka “conventions”), Genie bundles a multitude of powerful code generators which handle a variety of tasks, from bootstrapping a new app (with the proper file structure and all) to adding controllers and models.

When advisable, Genie reduces unnecessary choices by simply picking the best practice, especially when it involves performance and security (for example, view files are cached by default, input is sanitized by default, and so on).

Genie is also full-stack, so it has powerful front-end capabilities, employing some of the best front-end tools (Yarn, Webpack). It also implements a streamlined messaging system to build web sockets-powered applications easily.

Finally, Genie bundles all the necessary features - but no more. This means that it always uses known techniques: Genie apps are plain Julia projects, dependencies are managed by Pkg, code is organized into basic Julia modules, etc.

Following the philosophy of Julia, Genie allows one to start small and simple, with pretty much just a routes file. From there, it’s easy to grow to a full-size web app. All this makes for a powerful combination. It takes just a few lines of code and only a few minutes to build an API around your Julia code or whip up a web page.

Now, learning and discovering all these features is a bit harder. There are a series of guides on the GitHub repo which explain common workflows and use cases — but the documentation is lacking. However, this will change soon - Genie is close to v1, so at this point, the focus is on stability, testing, and documentation. Things will change massively in this regard in the next couple of months, which will hopefully make Genie as easy to learn as it’s easy to use!

2 Likes

I have heard of Genie before, a few people mentioned it that I am subbed to on YouTube. It sounds pretty straightforward and a lot less complicated than other options out there, that is for sure.

1 Like