Buffalo is a web Framework in Go. It‘s not trying to rediscover the wheel in processes such as routing or templates. Instead, it is a kind of glue that connects all the best packages available and allows them to be connected effectively.

Buffalo is an ecosystem for web development that is designed to make Go developer’s life easier. Buffalo begins by generating a web project that has everything in it from front-end (JavaScript, SCSS, etc.) until back-end (database, routing etc.) The project is set and can be launched directly. Buffalo then offers simple API which helps building its own web app in Go as quickly as possible.

Buffalo is not only a Framework, but also a holistic environment for a web development and a project structure allowing developers to get straight to work.

Buffalo framework’s main functions

  • Routing. Buffalo uses Gorilla toolkit to manage routs, session and cookies. There are faster routers, though, but despite this, Gorilla is one of the strongest routing tools.
  • Templates. Templates can be written using Plush, with a syntax similar to Rails. Functionality can be extended using customised helpers.
  • Tools. Writing the web application module always starts with the same operations. Buffalo offers a simple set of tools, the buffalo command generating many parts of the application and setting up usual actions.
  • Testing. Testing can be monotonous, so Buffalo helps defining test kits and generating actions, sources and models to produce test patterns exactly for the code that has been added recently. It is possible to run it by using a simple tools command.
  • Quick changes implementation. It is possible to write a code, to save and restore it and all changes are visible immediately.
  • Configuration. Using Webpack-generated configuration, it is possible to build a front-end to optimize both front-end and back-end performance.
  • Models. Deep integration with pop offers an easy way to work with databases. It supports MySQL, MariaDB, PostgreSQL, CockroachDB and SQLite.
  • Tasks. Grift works like Rake tasks in Ruby.

The advantages of using Buffalo

  • Simplicity. Buffalo is simple to use and it simplifies many routine activities.
  • Documentation. There is a relatively rich Buffalo documentation available.

The disadvantages of using Buffalo

  • Small user base. This Framework isn’t too familiar. There aren’t too many references to it in the development forums. There is only one company in StackShare that reports on the use of Buffalo, CrossChx.
  • Integration of existing tools. In fact, Buffalo is a pack of already existing tools.