Mavo framework

Mavo's launch

It's hard to believe sophomore year is over! One of my favorite parts of this year was working on the Mavo framework, a project from the Haystack group (MIT CSAIL), with Lea Verou.

Mavo is a web framework for creating dynamic web applications using only HTML. It enables data binding using just HTML expressions, and is an alternative to other frameworks, like AngularJS from Google and React.js from Facebook. Although non-programmers and designers can create static web pages easily with a basic knowledge of HTML and CSS, it's still fairly difficult to build interactive views. Current tools have steep learning curves. Some frameworks have poor performance, especially when users don't know how to use them optimally. Even creating simple web applications requires at least a couple hundred lines and knowledge of JavaScript. Mavo aims to solve these problems by being a WYSIWYG tool, where users can describe complex data schemas by adding HTML attributes.

Mavo is still very much under active development (and the beta was released only a couple weeks ago!) You can find the gitter chats here! Lea  also wrote an article introducing Mavo here.

Firebase backend plugin

I implemented and wrote tests for a Firebase backend plugin (see a list of all Mavo plugins so far here). Before, Mavo supported storage abstractions for local storage, Github, and Dropbox. The Firebase backend extends the Mavo storage model, including publicly updatable storage, publicly readable and user-only writeable storage, and many other possible permission models.

If you want to add your own Mavo backend, check out the docs I wrote and let me know if you have any questions! (Warning: docs are changing frequently - if the link is broken, please let me know!)

You can also fork my repo here.

In the future (Fall 2017)

Next fall, I'm planning on continuing work on the Firebase backend plugin, and creating more granular permissions. Most exciting, I will be implementing a permissions model for groups and admins! The Github issue is currently open here.