Over a million developers have joined DZone.

The Software Stack Explained

DZone's Guide to

The Software Stack Explained

Build a Platform That Can Disrupt Industries

· IoT Zone ·
Free Resource

Digi-Key Electronics’ Internet of Things (IoT) Resource Center Inspires the Future: Read More

The following article was contributed to DZone by Samer Fallouh, Vice President of Engineering at Dialexa, a technology development company that contributes information of value to DZone on a regular basis.

You have an idea for an Internet of Things solution or a product, and you need to hire a team capable of creating the product you have in mind.     Is the software stack a part of your evaluation? What should you look for in a team to help you find the right company capable of bringing your ideas to realization?

When considering engineering partners, it is important to understand what tools they use in order to accomplish the project you are looking for. Not all software companies offer innovative solutions when it comes to platforms. You need a forward-thinking team capable of not only creating your masterpiece, but also ensuring that it does not become obsolete in a short amount of time.

At Dialexa, we build end-to-end products. We have designed and built scalable IoT platforms, mobile apps and electronic devices. Clients typicially come to us with an idea and will leave with a product; whether it is a software or hardware solution.  Our engineers, designers, and developers work together to pick the right technologies to solve the problem and bring an innovative idea to life.

Choosing the right technologies and tools, such as the right solution stack, is an important part of the architectural challenges we try to solve. We are always researching and adopting emerging cutting-edge technologies. Of course, we always consider what has been previously architected on a particular application when applicable, as we are not in the business of reinventing the wheel. However, we do look at the big picture and the company's long-term goals to avoid the "quick and dirty" trap that many technology companies fall into. In this post, we share an example of a software stack we have used to build platforms that are now disrupting the automotive, parking and lawn care industries.


Before we discuss an example Dialexa stack, it is important to understand what a software stack is in general. Software stacks are also called "solution stacks" or "technology stacks" and used to provide a complete platform to run applications. These components give the software the power and versatility necessary to process complex instructions. Software stacks generally include operating systems and/or runtime environments, a database, a web server and a web application framework. In some instances, software stacks may include programming languages, software servers, web interface, clients, client interfaces, and other required pieces of software.

Some of the well known software stacks are LAMP (Linux, Apache, MySQL, and PHP), WINS (Windows Server, IIS, .NET, and SQL Server), and recently emerging MEAN stack which we will discuss below.


In recent years at Dialexa, we have used a stack which is akin to the MEAN stack. The MEAN stack derives its name from MongoDB, Express, AngularJS, and Node.js. MEAN.JS is an open-source software stack written in JavaScript. The MEAN stack's runtime environment is Node.js which can sit on top of various operating systems and because Node.js runs JavaScript applications, it makes software exceedingly portable across platforms.  MongoDB is a type of nonrelational database called NoSQL that is a document oriented database that avoids the tabular forms of relational databases like SQL. Express.js provides APIs and offers features for mobile and web applications. AngularJS provides an extended HTML vocabulary that allows the programmer to handle more dynamic environments, thus providing more agile solutions. You can find more about the MEAN stack here


The example Dialexa stack has some similarities to the MEAN stack, which is why we mention it here for the sake of comparison. We do base our platform on the Node.js runtime environment, which enables us the same portability and flexibility as the MEAN Stack. But instead of using MongoDB, we choose to use PostgreSQL (Postgres) and Elasticsearch. This combination of relational and nonrelational data stores allowed us to build real-time dashboards monitoring hundreds of transactions per minute without the risk of blocking the actual transactions flow.

The next step is choosing the right framework for our API layer. The MEAN stack uses Express framework which has the biggest community supporting it out there. Express is a great framework that offers a simple way to get a server up and running in no time; however, one can argue that it is not optimized for larger teams. Hapi.js an open-source framework that came out of WalmartLabs which we've adapted in our example stack. Hapi.js is built with configuration over convention, it has authentication and powerful validation built in. All of this makes Hapi the better tool for more complex platforms that require bigger teams contributing to the same code base; Hapi made a lot of our clients happy!

Lastly, we use EmberJS instead of AngularJS. At the time when we made this decision, Angular was geared more towards single-page applications. Ember with its MVC structure, was designed to build full, scalable applications with various routing controls we never thought were possible.

It is not about using what we are comfortable with; it is about using the right tools for the job.

All these components work together in perfect synergy to create a robust platform for a project. These elements will continue for many years to come, because they are state of the art. It is JavaScript and runs on Node.js and portable to a number of different platforms.

Digi-Key’s IoT Component Selector is your one-stop-shop for the IoT

iot app development ,tech stack ,iot platform development ,solution stack ,software stack ,application platform

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}