In computing, a solution stack, also called software stack, technology stack or simply tech stack, is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to “run on” or “run on top of” the resulting platform.
For example, to develop a web application, the architect defines the stack as the target operating system, web server, database, and programming language. Another version of a software stack is operating system, middleware, database, and applications. Regularly, the components of a software stack are developed by different developers independently of one another.
Some components/subsystems of an overall system are chosen together often enough that the particular set is referred to by a name representing the whole, rather than by naming the parts. Typically, the name is an acronym representing the individual components.
The term “solution stack” has, historically, occasionally included hardware components as part of a final product, mixing both the hardware and software in layers of support.
Full-stack developer A full-stack developer is expected to be able to work in all the layers of the application (front-end and back-end). In the past, several developers commonly specialized doing individual application layers, that over time merged into a full-stack developer who works both the front and back end development of a website, web application or desktop application. They use APIs, typically REST or GraphQL, to connect the front to the back. With this ability, they can lead platform builds across the full solution stack, involving databases, user-facing websites, and working with clients during the planning phase of projects.
JavaScript stacks A JavaScript stack is a collection of technologies that use JavaScript as a primary programming language across the entire software development process, typically combining front-end and back-end tools to build full-scale web applications. With the rise of Node.js, JavaScript can now be executed server-side, allowing developers to use a single language for both client and server development. This unification simplifies the development workflow, improves code reuse, and enhances productivity by enabling consistent logic and tooling across the application. JavaScript stacks are often favored for their speed, scalability, and access to a vast ecosystem of libraries and frameworks available through platforms like npm. The increasing popularity of these stacks reflects a broader shift toward full-stack JavaScript development in modern web engineering.Tilkov, Stefan, and Steve Vinoski. "Node.js: Using JavaScript to Build High-Performance Network Programs." IEEE Internet Computing, vol. 14, no. 6, 2010, pp. 80–83. DOI: 10.1109/MIC.2010.145Pimentel, Jon. Full-Stack React Projects. Packt Publishing, 2018.
OS-level stacks MLVN MongoDB (database) Linux (operating system) Varnish (software) (frontend cache) Node.js (JavaScript runtime) WISAV/WIPAV Windows Server (operating system) Internet Information Services (web server) Microsoft SQL Server/PostgreSQL (database) ASP.NET (backend web framework) Vue.js (frontend web framework)
OS-agnostic web stacks GRANDstack GraphQL (data query and manipulation language) React (web application presentation) Apollo (Data Graph Platform) Neo4j (database management systems)
JAMstack JavaScript (programming language) APIs (Application programming interfaces) Markup (content)
MEAN MongoDB (database) Express.js (application controller layer) AngularJS/Angular (web application presentation) Node.js (JavaScript runtime)
MERN MongoDB (database) Express.js (application controller layer) React.js (web application presentation) Node.js (JavaScript runtime)
MEVN MongoDB (database) Express.js (application controller layer) Vue.js (web application presentation) Node.js (JavaScript runtime)
PERN PostgreSQL (database) Express.js (application controller layer) React (JavaScript library) (web application presentation) Node.js (JavaScript runtime)
T-REx TerminusDB (scalable graph database) React (JavaScript web framework) Express.js (framework for Node.js)
Specific framework stacks Java-Spring stack The Java-Spring stack is a robust and enterprise-grade technology stack built around the Java programming language and the Spring ecosystem. At its core is the Spring Framework, which provides a comprehensive programming and configuration model for modern Java applications. This stack often includes Spring Boot, a project that simplifies Spring application setup with convention-over-configuration, embedded servers, and production-ready defaults. Additional components such as Spring MVC, Spring Data, and Spring Security are commonly used for building web applications, accessing databases, and implementing authentication and authorization. The Java-Spring stack is frequently paired with relational databases like MySQL or PostgreSQL and typically deployed using servlet containers like Apache Tomcat or platforms such as Spring Cloud for microservices architecture. Known for its scalability, modularity, and long-term stability, the Java-Spring stack is widely adopted in enterprise environments, particularly in finance, telecommunications, and large-scale SaaS platforms.Walls, Craig. Spring in Action. Manning Publications, 2022.
Python-Django stack The Python-Django stack utilizes Python as the primary programming language and Django as the web framework. Django is designed to encourage clean, pragmatic design and follows the DRY (Don't Repeat Yourself) principle. It includes a wide array of built-in features, such as user authentication, an admin interface, form handling, and a powerful ORM. These built-in tools make Django especially effective for content-driven or database-heavy web applications. The stack often pairs Django with PostgreSQL or SQLite as a database and runs on web servers like Gunicorn behind nginx. Because of Python's readability and Django's comprehensive documentation, this stack is widely used in educational platforms, scientific applications, and content management systems.Holovaty, Adrian, and Jacob Kaplan-Moss. The Django Book. Version 2.0.
Ruby on Rails stack The Ruby on Rails stack is built around the Ruby programming language and the Rails web framework. It emphasizes the principle of convention over configuration, which allows developers to build applications quickly by reducing the need for boilerplate code and manual setup. Ruby on Rails comes with an integrated set of tools, such as an object-relational mapping (ORM) system, scaffolding for code generation, and a structured directory layout, making it well-suited for rapid application development. Its focus on simplicity and developer happiness has made it a popular choice among startups and small teams. The stack typically includes a PostgreSQL or MySQL database, a web server like Puma or nginx, and deployment tools such as Capistrano or Heroku.
Other stacks OS-level stacks BCHS OpenBSD (operating system) C (programming language) httpd (web server) SQLite (database)
Ganeti Xen or KVM (hypervisor) Linux with LVM (mass-storage device management) Distributed Replicated Block Device (storage replication) Ganeti (virtual machine cluster management tool) Ganeti Web Manager (web interface)
GLASS GemStone (database and application server) Linux (operating system) Apache (web server) Smalltalk (programming language) Seaside (web framework)
LAMP Linux (operating system) Apache (web server) MySQL or MariaDB (database management systems) Perl, PHP, or Python (scripting languages)
LEAP Linux (operating system) Eucalyptus (free and open-source alternative to the Amazon Elastic Compute Cloud) AppScale (cloud computing-framework and free and open-source alternative to Google App Engine) Python (programming language)
LEMP/LNMP Linux (operating system) nginx (web server) MySQL or MariaDB (database management systems) Perl, PHP, or Python (scripting languages)
LLMP Linux (operating system) lighttpd (web server) MySQL or MariaDB (database management systems) Perl, PHP, or Python (scripting languages)
LYME and LYCE Linux (operating system) Yaws (web server, written in Erlang) Mnesia or CouchDB (database, written in Erlang) Erlang (functional programming language)
MAMP Mac OS X (operating system) Apache (web server) MySQL or MariaDB (database) PHP, Perl, or Python (programming languages)
LAPP Linux (operating system) Apache (web server) PostgreSQL (database management systems) Perl, PHP, or Python (scripting languages)
WAMP Windows (operating system) Apache (web server) MySQL or MariaDB (database) PHP, Perl, or Python (programming language)
WIMP Windows (operating system) Internet Information Services (web server) MySQL or MariaDB (database) PHP, Perl, or Python (programming language)
WINS Windows Server (operating system) Internet Information Services (web server) .NET (software framework) SQL Server (database)
WISA Windows Server (operating system) Internet Information Services (web server) SQL Server (database) ASP.NET (web framework)
OS-agnostic web stacks ELK Elasticsearch (search engine) Logstash (event and log management tool) Kibana (data visualization)
MARQS Apache Mesos (node startup/shutdown) Akka (toolkit) (actor implementation) Riak (data store) Apache Kafka (messaging) Apache Spark (big data and MapReduce)
NMP nginx (web server) MySQL or MariaDB (database) PHP (programming language)
OpenACS NaviServer (web server) OpenACS (web application framework) PostgreSQL or Oracle Database (database) Tcl (scripting language)
PLONK Prometheus (metrics and time-series) Linkerd (service mesh) OpenFaaS (management and auto-scaling of compute) NATS (asynchronous message bus/queue) Kubernetes (declarative, extensible, scale-out, self-healing clustering)
SMACK Apache Spark (big data and MapReduce) Apache Mesos (node startup/shutdown) Akka (toolkit) (actor implementation) Apache Cassandra (database) Apache Kafka (messaging)
XAMPP cross-platform (operating system) Apache (web server) MariaDB or MySQL (database) PHP (programming language) Perl (programming language)
XRX XML database (database such as BaseX, eXist, MarkLogic Server) XQuery (Query language) REST (client interface) XForms (client)
See also
Content management system LAMP (software bundle) List of content management systems Purple squirrel Web framework
References