Anvil: Full Stack Web with Nothing but Python
2021-06-03, 10:00–10:45, Main Room

What if we could build our front ends in Python too? Anvil is a framework to get us there: no HTML, JS, CSS, React, Bootstrap or Webpack required!

Instead, how about a Python UI toolkit, a drag-and-drop designer, and a full-stack runtime that doesn't require you to squeeze all your application state over JSON and HTTP? Find out how it's done, and why I think it's a good idea.


Building a modern web app requires so much: HTML, CSS, JS, Python, SQL, React, Bootstrap, Webpack...and Django, of course ;). What if we could build a better abstraction?

Our answer is Anvil: a full-stack Python environment where everything is a Python object, from your UI components to your database rows. In this talk, I'll walk you through how and why we constructed this new approach to the web.

We'll start with a question: Why is web programming hard? It's because your data takes so many forms: database rows, Python objects, JSON on REST, JS objects, HTML DOM, and finally pixels. Most of a web developer's job is translating between these awkwardly different representations. Frameworks like Django help, but now you have a stack of leaky abstractions: web frameworks, ORMs, JS frameworks, CSS frameworks, build tools... These frameworks help you go faster, but they double the amount you need to know!

So I'll show our stab at an answer: A framework where everything is a Python object, requests to the server are function calls, and Python is a browser-side language. I'll talk about running Python in the browser. I'll talk about full-stack autocompletion. There will even be live coding.

And then I'll talk about how it breaks. Because every abstraction breaks, and this abstraction is bigger than most. So I'll touch on what it means to go down with the ship, to use an ejector seat, or to open an escape hatch.

Join me for a rollicking tour of a new way to approach the web!