Tech Stack¶
A Tech Stack (Technology Stack) refers to the combination of languages, frameworks, tools, and infrastructure used to build, deploy, and run an application.
- 1. Category
- 2. References
1. Category¶
1.1. DevOps¶
-
Container Manager
-
Git Hooks Manager
-
A framework for managing and maintaining multi-language pre-commit hooks.
-
-
Dependency Update Manager
-
Dependabot is a tool to automatically update dependencies by creating pull requests.
-
Renovate is a tool to automatically update dependencies by creating pull requests.
-
-
Release Manager
-
Semantic-Release automates the release process by analyzing commit messages to release (major, minor, patch), generating release notes and changelogs.
-
-
Task Manager / Runner
-
Policy / Compliance Manager
-
Supply Chain Manager
-
Trivy is a comprehensive security scanner for vulnerabilities, misconfigurations, and compliance issues in container images, file systems, and Git repositories.
-
-
Context / Environment Manager
-
direnv is an environment switcher for the shell to automatically load and unload environment variables based on the current directory.
-
-
Secrets Manager
-
SOPS (Secrets OPerationS) is an editor of encrypted files that supports YAML, JSON, ENV, and INI formats, to encrypt specific fields while keeping the overall structure of the file intact.
-
-
Key Manager
-
Vaultwarden is a self-hosted password manager compatible with Bitwarden clients, providing secure storage and management of passwords and sensitive information.
-
-
Documentation Generators
-
MkDocs is a Static Site Generator (SSG) designed for building project documentation using Markdown.
-
-
Analysis
-
SAST
SAST (Static Application Security Testing) is a method of analyzing source code or compiled code to identify security vulnerabilities and weaknesses without executing the program.
-
DAST
DAST (Dynamic Application Security Testing) is a method of testing the security of an application while it is running.
-
SCA
SCA (Software Composition Analysis) is a method of analyzing the components and dependencies of a software application to identify potential security vulnerabilities and license compliance.
-
-
Version Control System (VCS)
-
Git is a distributed version control system to collaborate and coordinate on a project by tracking changes in source code during software development.
-
-
Platform
-
Conventions & Style Guides
-
Zero Trust Architecture (ZTA) is a security model that requires strict identity verification, enforces continuous verification, least-privilege access, strong identity and device posture checks, and microsegmentation of the network perimeter.
-
1.2. Go¶
1.2.1. Backend¶
-
Programming & Scripting
-
Go (Golang)
A statically typed, compiled language.
-
-
Dependency Manager
-
Go Modules are the official dependency management system for Go, allowing developers to manage versions and dependencies of their projects.
-
-
Test Frameworks
-
Cache Manager
-
GroupCache is a caching and cache-filling library, intended as a replacement for memcached.
-
-
Logging
-
Authentication
-
A package for handling OAuth and OAuth2 authentication.
-
-
Authorization
-
An authorization library that supports access control models like ACL, RBAC, ABAC.
-
-
Repository Strategy
-
The Modular Monolith organizes a single application into distinct, self-contained modules within one repository.
-
-
Conventions & Style Guides
-
The Go Style Guide and accompanying documents codify the current best approaches for writing readable and idiomatic Go.
-
1.2.2. API¶
-
Web Frameworks
-
Documentation Generators
-
Swagger
Swagger is a set of open-source tools built around the OpenAPI Specification that can help to design, build, document, and consume REST APIs.
-
1.2.3. Frontend¶
-
Programming & Scripting
-
JavaScript
JavaScript is a programming language that conforms to the ECMAScript specification.
-
TypeScript is a superset of JavaScript that compiles to plain JavaScript.
-
-
CSS Frameworks
-
A utility-first CSS framework for rapidly building custom designs.
-
HTML, CSS, and JavaScript framework for developing responsive, mobile projects on the web.
-
-
UI Frameworks
-
UI Components
-
DaisyUI is a component library for Tailwind CSS.
-
-
State Manager
-
Packaging
-
Test Frameworks
-
Playwright is a framework for Web Testing and Automation to testing Chromium, Firefox and WebKit with a single API.
-
Jest is a JavaScript Testing Framework.
-
1.2.4. Database¶
-
Relational Drivers
-
Pure Go Postgres driver for database/sql.
-
PostgreSQL driver and toolkit offering native bindings and database/sql compatibility.
-
Extensions to database/sql for Go with convenience helpers.
-
A SQL Compiler to generate type-safe code from SQL.
-
A ORM (Object Relational Mapping) library to work with relational databases.
-
-
Non-Relational Drivers
-
Official MongoDB driver for Go.
-
-
In-Memory Drivers
-
Redis client for Go supporting Cluster, Sentinel, and generic commands.
-
1.2.5. Hosting¶
-
Web Servers
-
Reverse Proxy
-
Traefik is a modern HTTP reverse proxy and load balancer for deploying microservices.
-
-
Certificate Manager
-
Let's Encrypt is a free, automated, and open certificate authority providing SSL/TLS certificates.
-
-
Container Registry
-
Public container registry for storing and distributing Docker images.
-
1.3. C/C++¶
1.3.1. Backend¶
-
Programming & Scripting
-
C
Standard C11/C17 is used for low-level programming and hardware interfacing.
-
C++
Standard C++17 is utilized to leverage modern object-oriented and functional programming features while maintaining compatibility.
-
-
Build Systems
-
Cross-platform build-system generator. Preferred for modern C/C++ projects; integrates with multiple toolchains and CI systems.
-
Lightweight, fast build backend used as CMake's primary generator for improved build performance.
-
Traditional make-based build tool for Unix-like environments and simple projects.
-
-
Cache Manager
-
Dependency Manager
-
Compilers & Toolchains
-
GNU Compiler Collection (GCC)
GCC is a compiler system supporting various programming languages for compiling C and C++ code on Unix-like systems.
-
Clang
Clang is an open-source compiler for the C family of programming languages, offering fast compilation and user-friendly error messages.
-
-
Analysis
-
A platform for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities.
-
A tool to automatically format C/C++ code according to a set of rules and style guides.
-
A suite of runtime tools to detect various types of bugs, including memory errors (AddressSanitizer), undefined behavior (UndefinedBehaviorSanitizer), and thread data races (ThreadSanitizer).
-
-
Test Framework
-
GoogleTest (gtest/gmock) is a testing framework for C++, providing a rich set of features for unit testing and test-driven development.
-
A library for coverage-guided fuzz testing of C++ code, integrated with GoogleTest.
-
A microbenchmark support library for GoogleTest, designed to measure the performance of C++ code.
-
-
A testing tool integrated with CMake, primarily used for running tests and ensuring code quality across builds.
-
A modern, C++-native, header-only test framework for unit-tests, TDD and BDD.
-
A test coverage program used to analyze and create code coverage reports for C/C++ programs.
-
-
Documentation Generators
-
Doxygen is a open-source API documentation generator for various programming languages, including C++.
-
-
Repository Strategy
-
The Modular Monolith organizes a single application into distinct, self-contained modules within one repository.
-
-
Conventions & Style Guides
-
The Google C++ Style Guide is adopted as the primary coding style guide for consistency and readability.
-
Guidelines for writing clear, portable, and maintainable CMake scripts, including target-based patterns, recommended project layout, and best practices.
-
1.4. Python¶
1.4.1. Backend¶
-
Programming & Scripting
-
Python is a high-level, interpreted programming language known for its readability and versatility.
-
-
Dependency Manager
-
pip is the package installer for Python to install packages from the Python Package Index and other indexes.
-
-
Analysis
-
Test Frameworks
-
pytestis widely used for writing simple as well as scalable test cases in Python.
-
-
CLI
Note
Concider the Order of Precedence for the configuration of variable parameters, from highest to lowest: - Command-Line Flags - Environment Variables (Env Vars) - Dotenv Files (
.env) - Config Files (.<cli>.yml) - Default Variables-
ConfigArgParse is a drop-in replacement for argparse that adds support for configuration files and environment variables with proper precedence order.
-
Click is a Python package for creating command-line interfaces with support for configuration precedence.
-
Typer is a library for building CLI applications based on Python type hints.
-
argparse is Pythons built-in command-line parsing library. Natively does not support configuration files, it can be extended with libraries like
configargparseto support order of precedence.
-
-
Conventions & Style Guides
-
Guide for writing consistent and idiomatic Python programs.
-
Command Line Interface Guidelines
An open-source guide to write command-line programs, based on traditional UNIX principles with modern updates.
-
1.5. Shell¶
Note
Prefer high-level interpreted languages e.g. Python over Shell scripts to benefit from readable syntax and mature tooling for testing, linting, formatting, and error reporting.
-
Programming & Scripting
-
Bash (Bourne Again SHell) is a Unix shell and command language for writing scripts to automate tasks and workflows.
-
-
Analysis
-
ShellCheck is a static analyzer for shell scripts.
-
shfmt formats shell scripts consistently across dialects (Bash, Dash, Ksh).
-
-
Test Frameworks
-
Bats (Bash Automated Testing System) is a TDD-style framework for testing Bash scripts, providing tests, assertions, and reporting.
-
-
CLI
-
Argbash is not a parsing library, but it is rather a code generator that generates a bash library tailor-made for script.
-
-
Conventions & Style Guides
-
The guide defines best practices for writing readable, maintainable shell scripts, covering naming, indentation, commenting, and scripting patterns.
-
1.6. PowerShell¶
-
Programming & Scripting
-
PowerShell is a cross-platform shell and scripting language for task automation and configuration management.
-
-
Module Manager
-
PowerShell Modules are self-contained packages of functions, cmdlets, and resources that organize, distribute, and enable reuse of PowerShell code.
-
-
Registry
-
PowerShell Gallery is the central repository for publishing, discovering, and installing PowerShell modules and scripts.
-
-
Analysis
-
PSScriptAnalyzer performs static code analysis to enforce best practices and identify script issues.
-
-
Test Frameworks
-
Pester is a PowerShell testing framework, providing assertions, mocking, and test discovery for unit tests.
-
-
Conventions & Style Guides
-
Advanced Functions enable cmdlet-like behavior with parameter validation or pipeline support.
-
Approved PowerShell Verbs standardize cmdlet and function naming for consistency.
-
One True Brace Style (OTBS), a variant to K&R, defines indentation and brace placement compatible with PowerShell syntax.
-
Microsoft PowerShell Documentation is the official reference for language features and cmdlets.
-
Cmdlet Development Guidelines prescribe naming, parameter handling, and output best practices.
-
1.7. Containerization¶
-
Container Manager
-
Docker is an open-source platform for automating the deployment, scaling, and management of applications using containerization.
-
-
Registry
-
Docker Hub is a cloud-based registry service for building and shipping application or service containers.
-
-
Analysis
-
A Dockerfile linter that helps to build best practice Docker images.
-
-
Conventions & Style Guides
-
Hardened Container Images
Curated base images and guidelines hardened to reduce attack surface and minimize image size.
-
Docker provides a comprehensive guide on best practices for writing Dockerfiles.
-
1.8. Orchestration¶
-
Orchestration Manager
-
Kubernetes (kubectl, kustomiz)
Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications.
-
Docker Compose is a tool for defining and running multi-container Docker applications.
-
-
Module Manager
-
Helm is a package manager for Kubernetes that simplifies the deployment of applications on a Kubernetes cluster.
-
-
Secrets Manager
-
External Secrets Operator is a Kubernetes operator that integrates with external secret management systems to securely manage and inject secrets into Kubernetes workloads.
-
HashiCorp Vault is a tool for securely accessing secrets, such as API keys, passwords, and certificates.
-
Kubernetes Secrets is a built-in feature of Kubernetes to store and manage sensitive information, such as passwords, OAuth tokens, and SSH keys, in a secure manner.
-
-
Policy Manager
-
Kyverno is a policy engine designed for Kubernetes.
-
Open Policy Agent (OPA) is a general-purpose policy engine used to enforce policies across various systems.
-
HashiCorp Sentinel is a policy as code framework that provides fine-grained, logic-based policy decisions for infrastructure management.
-
-
Test Frameworks
-
A Helm chart testing framework for unit testing Helm charts.
-
-
Repository Strategy
-
The Modular Monolith organizes a single application into distinct, self-contained modules within one repository.
-
-
Conventions & Style Guides
-
A common set of labels allows tools to work interoperably and describing objects in a common manner.
-
A style guidelines for the writing of Kubernetes documentation.
-
Kubernetes SIG (Special Interest Groups) provides Guides and API References for Kubectl and Kustomize.
-
1.9. Infrastructure Management¶
-
Provisioning Manager
-
Terraform is an open-source Infrastructure-as-Code (IaC) tool that enables users to define and provision infrastructure resources using a declarative configuration language.
-
OpenTofu is a community-driven fork of Terraform, created to continue the development of Terraform after HashiCorps decision to change the license.
-
-
Module Manager
-
Modules are self-contained packages of Terraform configurations.
-
A collection of reusable Terraform modules for managing AWS resources.
-
-
-
Registry
-
A repository for Terraform modules and providers to share and reuse Terraform configurations.
-
-
Analysis
-
Test Frameworks
-
Terraform built-in TDD-style testing by writing Terraform
integration tests,unit tests, ormocksto verify Infrastructure-as-Code (IaC) configurations. -
TDD-style testing for Infrastructure-as-Code (IaC) configurations.
-
BDD-style testing for Infrastructure-as-Code (IaC) configurations.
-
-
Documantion
-
A tool for generating documentation for Terraform modules.
-
-
Repository Strategy
-
The Modular Monolith organizes a single application into distinct, self-contained modules within one repository.
-
-
Conventions & Style Guides
-
HashiCorp Terraform Style Guide
The HashiCorp Terraform Style Guide is a comprehensive resource that provides best practices and guidelines for writing Terraform configurations.
-
1.10. Configuration Management¶
-
Configuration Manager
-
Ansible is an open-source Configuration-as-Code (CaC) tool to streamline the process of configuration management, application deployment, and task automation.
-
-
Module Manager
-
Ansible Collections are curated and pre-packaged Ansible content that includes playbooks, roles, modules, and plugins.
-
Ansible Collection for OpenStack of Ansible playbooks and roles designed to deploy and manage OpenStack cloud infrastructure.
-
-
-
Registry
-
A repository for Ansible roles and collections to share and reuse Ansible content, such as roles (predefined automation tasks) and collections (bundles of roles, modules, and plugins).
-
-
Analysis
-
Ansible-lint is a static analysis tool for Ansible playbooks and roles.
-
-
Test Frameworks
-
Ansible-test is a testing framework for Ansible that allows developers to write and run tests for their Ansible roles and playbooks.
-
Molecule is a testing framework for Ansible roles that provides a way to create and manage test environments.
-
-
Repository Strategy
-
The Modular Monolith organizes a single application into distinct, self-contained modules within one repository.
-
1.11. Documentation Management¶
-
Markup Language
-
Markdown is a lightweight markup language with plain text formatting syntax for Documentation-as-Code.
Note
Documentation uses CommonMark Flavored Markdown renderers.
-
-
Static Site Generator (SSG)
-
MkDocs is a Static Site Generator (SSG) designed for building project documentation based on Markdown files and converts them into a full-featured website.
-
-
Hosting Platform
-
GitLab Pages is used for hosting the static documentation website generated by Static Site Generators (SSG).
-
GitHub Pages is used for hosting the static documentation website generated by Static Site Generators (SSG).
-
-
Analysis
-
markdownlint
A static analysis tool for Markdown files that ensures adherence to formatting rules and conventions.
-
-
Conventions & Style Guides
-
A comprehensive guide to writing clear, concise, and well-formatted documentation using Markdown.
-
GitLab Documentation Style Guide
GitLabs style guide for writing documentation, providing guidelines on structure, formatting, and best practices for clarity and consistency.
-
1.13. GitOps¶
-
Frameworks
-
Terraform Enterprise is a commercial version of Terraform that provides additional features for managing infrastructure at scale.
-
Spinnaker is an open-source continuous delivery platform that provides a comprehensive solution for deploying applications across multiple cloud providers.
-
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.
-
Flux is a GitOps tool for Kubernetes that automates the deployment of applications and infrastructure changes.
-
1.14. Cloud Computing¶
1.14.1. Hosting¶
-
Provisioning Manager
-
The AWS provider is used to interact with the resources supported by Amazon Web Services (AWS).
-
The OpenStack provider is used to interact with the resources supported by OpenStack.
-
The Azure provider is used to interact with the resources supported by Microsoft Azure.
-
The Google Cloud Platform (GCP) provider is used to interact with the resources supported by Google Cloud Platform.
-
1.15. Observability¶
-
Monitoring/Metrics
Timestamped, structured records of system performance (e.g., CPU usage, memory consumption).
-
Prometheus is an open-source monitoring and alerting toolkit designed for reliability and scalability.
-
Prometheus Alertmanager is an open-source tool that handles alerts generated by Prometheus.
-
Prometheus Node Exporter is an open-source tool that collects hardware and operating system metrics from Linux-based systems.
-
Prometheus Blackbox Exporter is an open-source tool that allows users to probe endpoints over various protocols (HTTP, HTTPS, DNS, TCP, ICMP) and collect metrics about their availability and performance.
-
Grafana is an open-source analytics and monitoring platform that provides a powerful and flexible way to visualize and analyze time-series data.
-
-
Logging/Logs
Timestamped, structured, unstructured or semi-structured records of system events (e.g., application logs, system logs, access logs).
-
Grafana Loki is an open-source log aggregation system designed to efficiently collect, store, and query logs from various sources.
-
Promtail is an open-source agent that collects logs from various sources and sends them to Grafana Loki for storage and analysis.
Caution
Promtail is deprecated and will be replaced by Grafana Alloy.
-
-
Tracing/Traces
Records of end-to-end request flows across distributed systems.
-
Grafana Tempo is an open-source, high-scale distributed tracing backend designed to ingest and store trace data from various sources.
-
Grafana Alloy is an open-source distribution of the OpenTelemetry Collector, designed to aggregate observability signals such as metrics, logs, and traces from various sources.
-
-
Profiles
Records of resource utilization and performance characteristics (e.g., CPU, memory, I/O) at the code level (e.g., function execution times).
Note
Profiles are not yet widely adopted in the industry, but they are gaining traction as a way to gain deeper insights into application performance and resource utilization.
-
Conventions & Style Guides
-
OpenTelemetry is an open-source observability framework that provides a set of APIs, libraries, agents, and instrumentation to collect and export telemetry data (metrics, logs, and traces) from applications.
-
OpenMetrics is an open-source standard for transmitting metrics data in a consistent and efficient format.
-
eBPF (Extended Berkeley Packet Filter) is a powerful technology that allows developers to run custom code in the Linux kernel without modifying the kernel itself.
-
1.16. Database¶
-
Relational Database (SQL)
-
A robust, open-source object–relational database system that extends SQL with advanced features. PostgreSQL is widely adopted for
Online Transaction Processing (OLTP), offeringACIDcompliance, complex query support, extensibility, and strong indexing for high-performance workloads. -
A C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. Ideal for embedded applications, local development, and testing.
ORM (Object–Relational Mappers)
- [x] [GORM](https://gorm.io/) > Active Record–inspired ORM with support for associations, migrations, and query building for Go. - [x] [SQLAlchemy](https://www.sqlalchemy.org/) > The Python SQL Toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL. - [ ] [Ent](https://entgo.io/) > An entity framework for Go, a powerful ORM for modeling and querying data. -
-
Non-Relational Database (NoSQL)
-
A distributed, document-oriented database that stores data in flexible JSON-like structures. MongoDB is suited for semi-structured or unstructured datasets, emphasizing horizontal scalability, automatic sharding, and high availability for modern NoSQL workloads.
ODM (Object–Document Mappers)
- [ ] [Beanie](https://github.com/roman-right/beanie) > An asynchronous Python object-document mapper (ODM) for MongoDB, built on top of Motor and Pydantic. -
-
In-Memory Database (Caching / Message Broker)
-
An open-source, in-memory data structure store used as a cache, database, and message broker. Redis supports advanced data types, persistence, clustering, and pub/sub messaging, making it ideal for low-latency caching and real-time event-driven architectures.
-
A high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
-
2. References¶
- Sentenz Manager Tools article.
- Sentenz Repository Strategies article.
- Sentenz Everything as Code (XaC) article.
- Sentenz Everything Ops (XOps) article.