Raise your hand if you ever wanted to:
- Make a website that non-technical folks (clients? family members?) can edit right in the browser
- Make a website that presents an editable collection of items (your portfolio?)
- Upload images to a website you made, right from the browser
- Make an app to track and/or share an aspect of your life
- Make a website that lets other people suggest edits to your data
- Make an app that calculates something and presents the results in a custom way.
You can put your hand down now, it will get tired up there.
What if I told you, that you can do these things (and more!), just with HTML and CSS? No programming code to write, no servers to manage. You can make any element editable and saveable just by adding one HTML attribute to it. In fact, you can store your data locally in the browser, on Github, on Dropbox, or any other service just by changing an HTML attribute.
You can also turn any HTML element into a collection, with customizable controls for adding items, deleting items, and rearranging items via drag and drop. And your website visitors could suggest edits to your data that create Github pull requests behind the scenes, straight from your website.
What if I told you can dynamically display the results of calculations on this data anywhere in your UI with a syntax that is engineered to be easy to read and write, even by non-programmers? And that you can create dynamic, interactive websites with the same processes and hosting providers you use for static websites?
These are only some of the things you can do with Mavo, the project I’ve been working on for the past two years at MIT CSAIL and am excited to release today. Mavo is a language that extends HTML to describe applications that manage, store, and transform data. All you need to do to use Mavo in any HTML page is to include its two files. Yup, that’s it.