Beaker

October 20, 2022

Cape Town

Beaker is a bleeding-edge smart contract development framework built on PyTeal for the Algorand Virtual Machine (AVM). A well-known engineer of Algorand Inc., Benjamin Guidarelli spearheads the framework's development. In case you were curious like I was, Benjamin chose the name Beaker to pay homage to Flask, the micro web framework for Python, due to how much he enjoyed working with it in the past.

While still in alpha, Beaker has come a long way and already offers developers many benefits. When asked what his top three reasons would be for using Beaker, Benjamin mentioned (1) code structure, (2) convenience, and (3) the community of builders working towards making the framework better.

I can vouch for all the points above from my experience with Beaker, which has been incredibly positive. In a nutshell, I would describe what the framework looks to achieve as follows: it seems to boost productivity when developing AVM smart contracts by abstracting PyTeal and testing boilerplate/complexity away from the developer so that they may focus solely on business logic

critical to their application. Beaker has already saved me time and effort while developing and testing my smart contracts. For example, regarding code structure, Beaker gives me a way to concretely define methods of a smart contract familiarly without having to worry about routing. When it comes to convenience, a great example of this is the built-in application client that makes deploying and testing my smart contracts with the Algorand Sandbox completely trivial.

Regarding Benjamin's third point precisely, I enjoyed using Beaker so much that I made a small contribution to the framework. While designing a set of smart contracts that used the factory pattern, I noticed that Beaker could not yet compile deeply nested smart contracts. I opened up an initial pull request with a half-baked solution and collaborated with Benjamin (who was incredibly responsive and helpful) to improve it. We then arrived at a result we were both happy with, and the pull request was merged. With the factory pattern being a popular design pattern in smart contract development, I believe this addition to Beaker will be incredibly beneficial. I can't wait to make more contributions in the future.

As for the next big step for Beaker, Benjamin aims to productionalise it, i.e., add more testing and documentation, before releasing the beta version as part of Algokit - an upcoming all-in-one collection of tools used to see through the entire lifecycle of developing and deploying AVM web3 applications.