Under the hood of Baserow
Because Baserow is open source, we carefully considered everything which went into the technology stack. Under the hood of every docker container are two t frameworks that made the cut: Django and Vue.js.
Of the many reasons we chose Django, one of them is the already established popularity of the software. The popularity of Django means the learning curve for creating plugins and extensions is lower. We also recognised the importance of Django Channels, which makes it easy to handle WebSockets needed for collaboration. There’s also the way Django handles apps (reusable packages) that we can use for our own plugin system! Furthermore, Django is a framework proven on sites as big as Instagram! When batteries come included, why bother reinventing the wheel?
This was a difficult decision, as there are many front-end frameworks like Vue.js, such as Angular and React. In the end we choose Vue for its simplicity, in house experience, and popularity. We think Vue.js is the best choice because it is still a fully featured framework without being overly complex.
Just because we are making it easy to create plugins doesn’t mean they are going to be any less powerful. It is going to be as easy as checking out a standard boilerplate, running through a small CLI wizard, and adding a single configuration line in the Baserow settings. That is it! Plugin developed! In the near future we also want to introduce a marketplace where you can easily download and install plugins created by third party developers.
Of course, our tech stack expands well beyond Django and Vue.js. We included several other small packages such as SASS, Webpack, Django Rest Framework, Sphinx, stylelint, ESLint, and many others. We fully embrace open source software that is well written.
What about the operations?
Our managed SaaS platform is hosted through Digital Ocean. For our phase they offer the best value for our money. We wouldn’t be open source developers if we don’t use the best tools available for the job. To manage our infrastructure at Digital Ocean we use Terraform to give us the ability to easily define everything as code and make changes. To deploy the whole platform we use a combination of Ansible and Packer to create a base image that is easily deployed to our servers so we can spend as much time as possible shipping new features through the managed Postgres database.