Because Baserow is open source, we carefully considered everything what went into the technology stack. Under the hood of every docker container are two frameworks that made the cut: Django and Nuxt.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?
Nuxt.js is a progressive Vue.js framework that makes web development simple and powerful. It was not an easy decision to use Vue and Nuxt 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. Especially in combination with Nuxt.
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 Nuxt.js. We included several other small packages such as SASS, Webpack, Django Rest Framework, stylelint, ESLint, PostgreSQL and many others. We fully embrace open source software that is well written.
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 Kubernetes 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.
Because we had less time available in this month we have focussed on lots of smaller issues. Among them are the single select field and inserting rows above and below a row.