Blog of Raivo Laanemets

Stories about web development, freelancing and personal computers.

Stack Review 2017

In 2017 the typical setup of my project stack has been:


  • Node.js 8+ with the available ES6+ features.
  • Express 4 with either EJS or JSX-based templates.
  • MySQL database accessed through the mysql package.

The applications are based on a common project template. I do not maintain the template as a separate project. It is improved through project to project and taylored to specific needs. The template covers:

  • Directory structure.
  • A set of always needed dependencies.
  • Better static file serving with cache busting and CDN support.
  • Trivial async/await wrapper for Express.
  • jsend-style API response generator.
  • Useful defaults and helpers for templates (default app title, date formatting, etc).
  • Sessions with signed cookies.
  • MySQL transactional async/await wrapper for queries.


  • Bootstrap 3.
  • Vue.js 2+ or React 15+.
  • Webpack 3+.

The Bootstrap framework provides the common approach to styling. Most web designers are familiar with it, even if not, the documentation is very good and accessible.

Both Vue.js and React are decent view libraries. I have used them both. Vue.js uses HTML as the templating language and is more suitable for projects where the majority of markup is coming from the backend and it needs interactivity. React wants to generate and fully control the markup itself.

I use Webpack for building browser-side JavaScript bundles. It has iterative compilation, and integrates really well with Babel.

Other things

I generally avoid non-web application projects as these are not my expertise. Web scrapping is one of the related topics. I have mostly used PhantomJS so far.

There are some problem domains that benefit from relational and logic programming with Prolog. For example, industrial planning is a such domain. Besides that, I have successfully used SWI-Prolog for developing web applications, including this blog. I currently maintain two Node.js/SWI-Prolog bridge interfaces.

My opinion on the development of mobile applications is to get them done by the platform expert. The Android development tools are extremely complex, iOS tools are a bit better but still require specific knowledge. Recently I have been playing around with DroidScript. DroidScript is a JavaScript-based development system for Android but I have not used it in a project much larger than a Hello World.

For a desktop application project I would pick Electron. Electron is a fusion of Node.js and Chromium runtimes. So far I have developed one project with it. The process is very similar to creating a web application and that is something I know very well.


No comments have been added so far.

Email is not displayed anywhere.
URLs (max 3) starting with http:// or https:// can be used. Use @Name to mention someone.