@@ -29,7 +30,6 @@ among other resources that are used in different projects here at [NaN Labs](htt
- [Apps and Boilerplates](#apps-and-boilerplates)
- [Examples](#examples)
-
- [DevOps](#devops)
- [A/B Testing](#ab-testing)
- [Shell Scripting and CLI Tools](#shell-scripting-and-cli-tools)
@@ -43,19 +43,23 @@ among other resources that are used in different projects here at [NaN Labs](htt
- [Infrastructure as Code](#infrastructure-as-code)
- [Serverless Framework, SAM and CloudFormation](#serverless-framework-sam-and-cloudformation)
- [Terraform](#terraform)
+ - [Secrets Management](#secrets-management)
- [Infrastructure from Code](#infrastructure-from-code)
- [Klotho and more!](#klotho-and-more)
- [Dependency Management](#dependency-management)
+ - [Security and Compliance](#security-and-compliance)
+- [Guides, Tutorials and Best Practices](#guides-tutorials-and-best-practices)
- [Contributing](#contributing)
- [Contributors](#contributors)
## Apps and Boilerplates
-| Name | Description | Keywords |
-| ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
-| [AWS Glue ETL Boilerplate](https://github.com/nanlabs/aws-glue-etl-boilerplate) | A complete example of an AWS Glue ETL job that uses the [Serverless Framework](https://www.serverless.com/) to deploy the infrastructure and DevContainers and/or Docker Compose to run the application locally with AWS Glue Libs, Spark, Jupyter Notebook, AWS CLI, among other tools. It provides jobs using Python Shell and PySpark. | _Python_, _AWS_, _Glue_, _ETL_, _Serverless_, _DevContainers_, _Docker Compose_ |
-| [Basic AWS Glue ETL example app](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-glue-full-boilerplate/) | A basic but useful example of an AWS Glue application that uses the [Serverless Framework](https://www.serverless.com/) to deploy the infrastructure and DevContainers and/or Docker Compose to run the application locally with AWS Glue Libs, Spark, Jupyter Notebook, AWS CLI, among other tools. It provides jobs using Python Shell and PySpark. | _Python_, _AWS_, _Glue_, _ETL_, _Serverless_, _DevContainers_, _Docker Compose_ |
+| Name | Description | Keywords |
+| ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [AWS Glue ETL Boilerplate](https://github.com/nanlabs/aws-glue-etl-boilerplate) | A complete example of an AWS Glue ETL job that uses the [Serverless Framework](https://www.serverless.com/) to deploy the infrastructure and DevContainers and/or Docker Compose to run the application locally with AWS Glue Libs, Spark, Jupyter Notebook, AWS CLI, among other tools. It provides jobs using Python Shell and PySpark. | _Python_, _AWS_, _Glue_, _ETL_, _Serverless_, _DevContainers_, _Docker Compose_ |
+| [Basic AWS Glue ETL example app](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-glue-full-boilerplate/) | A basic but useful example of an AWS Glue application that uses the [Serverless Framework](https://www.serverless.com/) to deploy the infrastructure and DevContainers and/or Docker Compose to run the application locally with AWS Glue Libs, Spark, Jupyter Notebook, AWS CLI, among other tools. It provides jobs using Python Shell and PySpark. | _Python_, _AWS_, _Glue_, _ETL_, _Serverless_, _DevContainers_, _Docker Compose_ |
+| [Terraform AWS Starter](https://github.com/nanlabs/terraform-aws-starter) | Get started quickly with AWS infrastructure using a robust Terraform starter kit incorporating secure state management, VPC configuration, security groups, RDS provisioning, secrets management, SSM parameter store, and GitHub Actions integration! | _Terraform_, _Terraform Modules_, _Infrastructure as Code_, _AWS_, _VPC_, _RDS_, _RDS Aurora_, _MongoDB_, _GitHub Actions_, _SSM Parameter Store_, _Secrets Management_, _Security Groups_, _Super Linter_ |
## Examples
@@ -66,7 +70,7 @@ among other resources that are used in different projects here at [NaN Labs](htt
| Name | Description | Keywords |
| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
| [AWS CloudWatch Evidently](https://github.com/nanlabs/devops-reference/tree/main/examples/aws-cloudwatch-evidently/) | A complete analysis of the service and a Proof of Concept on how to integrate it with a Node.js application. | _Node.js_, _AWS_, _CloudWatch_, _CloudWatch Evidently_, _A/B Testing_, _Feature Flags_ |
-| [Feature flags post](https://www.atlassian.com/continuous-delivery/principles/feature-flags) | How to progressively expose your features with feature flags by IAN BUCHANNAN. | _Feature Flags_ |
+| [Feature flags post by Atlassian](https://www.atlassian.com/continuous-delivery/principles/feature-flags) | How to progressively expose your features with feature flags by IAN BUCHANNAN. | _Feature Flags_ |
#### Shell Scripting and CLI Tools
@@ -90,26 +94,29 @@ among other resources that are used in different projects here at [NaN Labs](htt
| [React Boilerplate](https://github.com/nanlabs/react-boilerplate/tree/main/.github/workflows) | Different workflows to validate the code and deploy a React application. | _GitHub Actions_, _React_ |
| [Shell Check](https://github.com/nanlabs/devops-reference/tree/main/.github/workflows/shellcheck.yml) | This workflow validates the shell scripts in the repository using the [shellcheck action](https://github.com/ludeeus/action-shellcheck). | _GitHub Actions_, _Shell Check_ |
| [Terraform Check](https://github.com/nanlabs/devops-reference/tree/main/.github/workflows/tf-check.yml) | This workflow validates the Terraform files in the repository using the [terraform action](https://github.com/dflook/terraform-fmt-check). | _GitHub Actions_, _Terraform_ |
+| [The Ultimate Guide to Code Review Tools](https://github.com/nanlabs/devops-reference/tree/main/examples/the-ultimate-guide-to-code-review-tools) | A guide where we present a curated selection of modern tools designed to revolutionize your code review process! | _Code Review_, _Code Review Tools_ |
| [TODOs to GitHub Issues](https://github.com/nanlabs/devops-reference/tree/main/examples/github-actions-todo-to-issue/) | This tutorial shows how to create a GitHub Action that converts TODO comments into GitHub issues. | _GitHub Actions_, _TODOs_, _Issues_ |
#### Containers, Orchestration and Serverless
##### Containers and Compositions (Docker, Docker Compose, Buildpacks and more)
-| Name | Description | Keywords |
-| -------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| [Airflow and Spark environment using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-airflow/) | Dockerfile and compose.yml to run Airflow locally with initialization scripts. | _Docker_, _Docker Compose_, _Airflow_, _Spark_ |
-| [AWS Cognito local using Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-cognito/) | compose.yml to run Cognito locally. | _Docker_, _Docker Compose_, _Cognito_, _AWS_ |
-| [AWS Glue using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-glue/) | Dockerfile and compose.yml for AWS Glue development with AWS Glue Libs, Spark, Jupyter Notebook, AWS CLI among other tools. | _Docker_, _Docker Compose_, _AWS Glue_, _Spark_, _Jupyter Notebook_, _AWS CLI_ |
-| [AWS Neptune using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-neptune/) | Dockerfile and compose.yml to run AWS Neptune locally with initialization scripts. | _Docker_, _Docker Compose_, _AWS Neptune_ |
-| [Docker Compose NestJS Starter App](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-nestjs) | Docker Compose starter app for NestJS. | _Docker_, _Docker Compose_, _NestJS_, _Node.js_ |
-| [Localstack using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/) | Dockerfile and compose.yml to run Localstack locally with all the necessary services. This example also includes a script to create the necessary resources in Localstack. The provided examples are for DynamoDB, S3, SQS and Kinesis. | _Docker_, _Docker Compose_, _Localstack_, _DynamoDB_, _S3_, _SQS_, _Kinesis_ |
-| [Microsoft SQL Server using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-mssql/) | Dockerfile and compose.yml to run Microsoft SQL Server locally with initialization scripts. | _Docker_, _Docker Compose_, _Microsoft SQL Server_ |
-| [MongoDB + Mongo Express using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-mongodb/) | Dockerfile and compose.yml to run MongoDB and Mongo Express locally with initialization scripts. | _Docker_, _Docker Compose_, _MongoDB_, _Mongo Express_ |
-| [PostgreSQL using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-postgres/) | Dockerfile and compose.yml to run PostgreSQL locally with initialization scripts. | _Docker_, _Docker Compose_, _PostgreSQL_ |
-| [Python Buildpack](https://github.com/nanlabs/devops-reference/tree/main/examples/buildpacks-python) | Buildpack example for Python applications. | _Buildpack_, _Python_ |
-| [Serverless LocalStack with S3 and DynamoDB](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-localstack-with-s3-and-dynamodb/) | Serverless Framework example to run lambda functions locally using [Serverless Offline](https://www.serverless.com/plugins/serverless-offline) with LocalStack. It provides a full local development environment using [Serverless LocalStack](https://www.serverless.com/plugins/serverless-localstack). | _Serverless Framework_, _Serverless Offline_, _Serverless LocalStack_, _LocalStack_, _S3_, _DynamoDB_ |
-| [WordPress Docker Compose Magic](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-wordpress-mysql) | Experience the magic of WordPress with this Docker Compose configuration. It seamlessly combines the power of Nginx, WordPress, and MySQL/MariaDB to create a delightful web environment. The lightweight Nginx handles incoming requests, custom configurations shape the entrance to the WordPress realm, and MariaDB ensures a robust database foundation. Explore the enchanting WordPress Wonderland locally or deploy it to the cloud effortlessly. | _Docker Compose_, _Web Hosting_, _Content Management_, _PHP_, _Nginx Configuration_, _MariaDB Database_, _MySQL Database_ |
+| Name | Description | Keywords |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
+| [Airflow and Spark environment using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-airflow/) | Dockerfile and compose.yml to run Airflow locally with initialization scripts. | _Docker_, _Docker Compose_, _Airflow_, _Spark_ |
+| [AWS Cognito local using Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-cognito/) | compose.yml to run Cognito locally. | _Docker_, _Docker Compose_, _Cognito_, _AWS_ |
+| [AWS Glue using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-glue/) | Dockerfile and compose.yml for AWS Glue development with AWS Glue Libs, Spark, Jupyter Notebook, AWS CLI among other tools. | _Docker_, _Docker Compose_, _AWS Glue_, _Spark_, _Jupyter Notebook_, _AWS CLI_ |
+| [AWS Neptune using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-neptune/) | Dockerfile and compose.yml to run AWS Neptune locally with initialization scripts. | _Docker_, _Docker Compose_, _AWS Neptune_ |
+| [Docker Compose NestJS Starter App](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-nestjs) | Docker Compose starter app for NestJS. | _Docker_, _Docker Compose_, _NestJS_, _Node.js_ |
+| [Embracing the Power of LocalStack for AWS Emulation](https://github.com/nanlabs/devops-reference/tree/main/examples/embracing-the-power-of-localstack-for-aws-emulation) | A comprehensive guide highlighting the benefits of using LocalStack for AWS service emulation. The blog post covers various LocalStack examples for Docker and Serverless setups and explores its application in local development, CI, and more. | _LocalStack_, _AWS_, _Docker_, _Serverless_, _DevOps_, _CI_, _Local Development_ |
+| [Localstack using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/) | Dockerfile and compose.yml to run Localstack locally with all the necessary services. This example also includes a script to create the necessary resources in Localstack. The provided examples are for DynamoDB, S3, SQS and Kinesis. | _Docker_, _Docker Compose_, _Localstack_, _DynamoDB_, _S3_, _SQS_, _Kinesis_ |
+| [Microsoft SQL Server using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-mssql/) | Dockerfile and compose.yml to run Microsoft SQL Server locally with initialization scripts. | _Docker_, _Docker Compose_, _Microsoft SQL Server_ |
+| [MongoDB + Mongo Express using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-mongodb/) | Dockerfile and compose.yml to run MongoDB and Mongo Express locally with initialization scripts. | _Docker_, _Docker Compose_, _MongoDB_, _Mongo Express_ |
+| [PostgreSQL using Docker and Docker Compose](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-postgres/) | Dockerfile and compose.yml to run PostgreSQL locally with initialization scripts. | _Docker_, _Docker Compose_, _PostgreSQL_ |
+| [Python Buildpack](https://github.com/nanlabs/devops-reference/tree/main/examples/buildpacks-python) | Buildpack example for Python applications. | _Buildpack_, _Python_ |
+| [Serverless LocalStack with S3 and DynamoDB](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-localstack-with-s3-and-dynamodb/) | Serverless Framework example to run lambda functions locally using [Serverless Offline](https://www.serverless.com/plugins/serverless-offline) with LocalStack. It provides a full local development environment using [Serverless LocalStack](https://www.serverless.com/plugins/serverless-localstack). | _Serverless Framework_, _Serverless Offline_, _Serverless LocalStack_, _LocalStack_, _S3_, _DynamoDB_ |
+| [Verdaccio with Docker Compose Example](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-verdaccio/) | Verdaccio is a lightweight private npm proxy registry. This example shows how to run Verdaccio locally using Docker Compose. | _Docker_, _Docker Compose_, _Verdaccio_, _Node Package Manager_ |
+| [WordPress Docker Compose Magic](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-wordpress-mysql) | Experience the magic of WordPress with this Docker Compose configuration. It seamlessly combines the power of Nginx, WordPress, and MySQL/MariaDB to create a delightful web environment. The lightweight Nginx handles incoming requests, custom configurations shape the entrance to the WordPress realm, and MariaDB ensures a robust database foundation. Explore the enchanting WordPress Wonderland locally or deploy it to the cloud effortlessly. | _Docker Compose_, _Web Hosting_, _Content Management_, _PHP_, _Nginx Configuration_, _MariaDB Database_, _MySQL Database_ |
##### Development and Cloud Environments
@@ -144,6 +151,7 @@ among other resources that are used in different projects here at [NaN Labs](htt
| [AWS Cognito Local Example](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-cognito-local/) | AWS Cognito local enviroment with Docker and Serverless offline | _Serverless Framework_, _Serverless Offline_, _AWS_, _Cognito_, _Docker_ |
| [AWS Glue with Python Shell and PySpark Jobs](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-glue-deployment/) | Serverless Framework example to deploy an AWS Glue job using Python Shell and PySpark. | _Serverless Framework_, _AWS Glue_, _Python Shell_, _PySpark_ |
| [DocumentDB Cluster](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-documentdb/) | Serverless Framework example to deploy a DocumentDB cluster with all the necessary resources. | _Serverless Framework_, _DocumentDB_ |
+| [Embracing the Power of LocalStack for AWS Emulation](https://github.com/nanlabs/devops-reference/tree/main/examples/embracing-the-power-of-localstack-for-aws-emulation) | A comprehensive guide highlighting the benefits of using LocalStack for AWS service emulation. The blog post covers various LocalStack examples for Docker and Serverless setups and explores its application in local development, CI, and more. | _LocalStack_, _AWS_, _Docker_, _Serverless_, _DevOps_, _CI_, _Local Development_ |
| [Neo4j in EC2](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-neo4j-ec2/) | Serverless Framework example to deploy a Neo4j instance in EC2. | _Serverless Framework_, _Neo4j_, _EC2_ |
| [RDS Postgres Instance](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-rds-postgres/) | Serverless Framework example to deploy a RDS Postgres instance with all the necessary resources. | _Serverless Framework_, _RDS Postgres_ |
| [RDS Postgres Instance with Serverless VPC Plugin](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-rds-postgres-vpc-plugin/) | Serverless Framework example to deploy a RDS Postgres instance with all the necessary resources using [Serverless VPC Plugin](https://www.serverless.com/plugins/serverless-vpc-plugin). | _Serverless Framework_, _RDS Postgres_, _Serverless VPC Plugin_ |
@@ -162,14 +170,21 @@ among other resources that are used in different projects here at [NaN Labs](htt
##### Terraform
-| Name | Description | Keywords |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
-| [Terraform AWS Minecraft Server](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-aws-minecraft-server/) | Terraform example to deploy a Minecraft server in AWS EC2 instance using Docker. | _Terraform_, _AWS_, _Minecraft_, _Docker_, _EC2_ |
-| [Terraform AWS RDS Postgres instance](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-vpc-rds-instance-bastion-starter/modules/rds) | Terraform module for creating AWS RDS Postgres instance. | _Terraform_, _AWS_, _RDS_ |
-| [Terraform AWS VPC resources](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-vpc-rds-instance-bastion-starter/modules/vpc) | Terraform module for creating AWS VPC resources. | _Terraform_, _AWS_, _VPC_ |
-| [Terraform Bastion Host](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-vpc-rds-instance-bastion-starter/modules/bastion) | Terraform module which creates an EC2 instance acting as a bastion host | _Terraform_, _AWS_, _Bastion_ |
-| [Terraform Starter Kit for AWS VPC, RDS instance, and Bastion Host](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-vpc-rds-instance-bastion-starter) | Terraform Starter kit for creating AWS infrastructure using Terraform that contains a VPC, RDS instance, and a bastion host. | _Terraform_, _AWS_, _VPC_, _RDS_, _Bastion_ |
-| [Using Serverless Framework with Terraform](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-terraform-example) | The definitive example of how to use Terraform and Serverless Framework together. | _Serverless Framework_, _Terraform_, _AWS_ |
+| Name | Description | Keywords |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [Terraform AWS Minecraft Server](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-aws-minecraft-server/) | Terraform example to deploy a Minecraft server in AWS EC2 instance using Docker. | _Terraform_, _AWS_, _Minecraft_, _Docker_, _EC2_ |
+| [Terraform AWS RDS Postgres instance](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-vpc-rds-instance-bastion-starter/modules/rds) | Terraform module for creating AWS RDS Postgres instance. | _Terraform_, _AWS_, _RDS_ |
+| [Terraform AWS Starter](https://github.com/nanlabs/terraform-aws-starter) | Get started quickly with AWS infrastructure using a robust Terraform starter kit incorporating secure state management, VPC configuration, security groups, RDS provisioning, secrets management, SSM parameter store, and GitHub Actions integration! | _Terraform_, _Terraform Modules_, _Infrastructure as Code_, _AWS_, _VPC_, _RDS_, _RDS Aurora_, _MongoDB_, _GitHub Actions_, _SSM Parameter Store_, _Secrets Management_, _Security Groups_, _Super Linter_ |
+| [Terraform AWS VPC resources](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-vpc-rds-instance-bastion-starter/modules/vpc) | Terraform module for creating AWS VPC resources. | _Terraform_, _AWS_, _VPC_ |
+| [Terraform Bastion Host](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-vpc-rds-instance-bastion-starter/modules/bastion) | Terraform module which creates an EC2 instance acting as a bastion host | _Terraform_, _AWS_, _Bastion_ |
+| [Terraform Starter Kit for AWS VPC, RDS instance, and Bastion Host](https://github.com/nanlabs/devops-reference/tree/main/examples/terraform-vpc-rds-instance-bastion-starter) | Terraform Starter kit for creating AWS infrastructure using Terraform that contains a VPC, RDS instance, and a bastion host. | _Terraform_, _AWS_, _VPC_, _RDS_, _Bastion_ |
+| [Using Serverless Framework with Terraform](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-terraform-example) | The definitive example of how to use Terraform and Serverless Framework together. | _Serverless Framework_, _Terraform_, _AWS_ |
+
+##### Secrets Management
+
+| Name | Description | Keywords |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [The Ultimate Guide to Secrets Management for Developers](https://github.com/nanlabs/devops-reference/tree/main/examples/the-ultimate-guide-to-secrets-management-for-developers) | Unlock the arcane art of secrets management with our comprehensive guide! Tailored for the average dev, this post is a treasure map leading to the best practices for storing and accessing sensitive data. Learn to navigate tools like AWS Parameter Store, `direnv`, `teller`, and more, with easy-to-follow examples that bring the theory to life. Perfect for those who've never realized the gravity of a leaked secret, this guide will be your enchanted scroll of wisdom. | _Secrets Management_, _Cloud Secrets Management_, _direnv_, _teller_, _Security_, _DevOps_, _Best Practices_, _Environment Variables_, _Encryption_, _SOPS_, _Secure Configuration_ |
#### Infrastructure from Code
@@ -181,9 +196,31 @@ among other resources that are used in different projects here at [NaN Labs](htt
#### Dependency Management
-| Name | Description | Keywords |
-| ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------- |
-| [Node Package Managers](https://github.com/nanlabs/devops-reference/tree/main/examples/node-package-managers) | Comparison of the most popular Node Package Managers: npm, yarn, pnpm. | _Node_, _npm_, _yarn_, _pnpm_ |
+| Name | Description | Keywords |
+| -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
+| [Node Package Managers](https://github.com/nanlabs/devops-reference/tree/main/examples/node-package-managers) | Comparison of the most popular Node Package Managers: npm, yarn, pnpm. | _Node_, _npm_, _yarn_, _pnpm_ |
+| [Verdaccio with Docker Compose Example](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-verdaccio/) | Verdaccio is a lightweight private npm proxy registry. This example shows how to run Verdaccio locally using Docker Compose. | _Docker_, _Docker Compose_, _Verdaccio_, _Node Package Manager_ |
+
+#### Security and Compliance
+
+| Name | Description | Keywords |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [The Ultimate Guide to Secrets Management for Developers](https://github.com/nanlabs/devops-reference/tree/main/examples/the-ultimate-guide-to-secrets-management-for-developers) | Unlock the arcane art of secrets management with our comprehensive guide! Tailored for the average dev, this post is a treasure map leading to the best practices for storing and accessing sensitive data. Learn to navigate tools like AWS Parameter Store, `direnv`, `teller`, and more, with easy-to-follow examples that bring the theory to life. Perfect for those who've never realized the gravity of a leaked secret, this guide will be your enchanted scroll of wisdom. | _Secrets Management_, _Cloud Secrets Management_, _direnv_, _teller_, _Security_, _DevOps_, _Best Practices_, _Environment Variables_, _Encryption_, _SOPS_, _Secure Configuration_ |
+
+## Guides, Tutorials and Best Practices
+
+| Name | Description | Keywords |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [Automate Pull Requests Reviews using Danger](https://github.com/nanlabs/devops-reference/tree/main/.github/workflows/pr-review.yml) | This workflow automates the initial review of Pull Requests using [Danger.js](https://danger.systems/js/). This provides another logical step in your build, through this Danger can help lint your rote tasks in daily code review. You can use Danger to codify your teams norms. Leaving humans to think about harder problems. | _GitHub Actions_, _Danger.js_ |
+| [Embracing the Power of LocalStack for AWS Emulation](https://github.com/nanlabs/devops-reference/tree/main/examples/embracing-the-power-of-localstack-for-aws-emulation) | A comprehensive guide highlighting the benefits of using LocalStack for AWS service emulation. The blog post covers various LocalStack examples for Docker and Serverless setups and explores its application in local development, CI, and more. | _LocalStack_, _AWS_, _Docker_, _Serverless_, _DevOps_, _CI_, _Local Development_ |
+| [Exploring DevContainers: A Versatile Development Environment Solution](https://github.com/nanlabs/devops-reference/tree/main/examples/devcontainers-intro/) | Introduction to Development Containers (DevContainers), a solution to create development environments with a unique approach to address specific development environment needs | _DevContainer_, _VSCode DevContainer_, _GitHub Codespaces_, _Docker_, _Docker Compose_ |
+| [Feature flags post by Atlassian](https://www.atlassian.com/continuous-delivery/principles/feature-flags) | How to progressively expose your features with feature flags by IAN BUCHANNAN. | _Feature Flags_ |
+| [The Ultimate Guide to Code Review Tools](https://github.com/nanlabs/devops-reference/tree/main/examples/the-ultimate-guide-to-code-review-tools) | A guide where we present a curated selection of modern tools designed to revolutionize your code review process! | _Code Review_, _Code Review Tools_ |
+| [The Ultimate Guide to Secrets Management for Developers](https://github.com/nanlabs/devops-reference/tree/main/examples/the-ultimate-guide-to-secrets-management-for-developers) | Unlock the arcane art of secrets management with our comprehensive guide! Tailored for the average dev, this post is a treasure map leading to the best practices for storing and accessing sensitive data. Learn to navigate tools like AWS Parameter Store, `direnv`, `teller`, and more, with easy-to-follow examples that bring the theory to life. Perfect for those who've never realized the gravity of a leaked secret, this guide will be your enchanted scroll of wisdom. | _Secrets Management_, _Cloud Secrets Management_, _direnv_, _teller_, _Security_, _DevOps_, _Best Practices_, _Environment Variables_, _Encryption_, _SOPS_, _Secure Configuration_ |
+| [Tilt + Minikube Development Environment](https://github.com/nanlabs/devops-reference/tree/main/examples/kubernetes-tilt-dev/) | Seamless, efficient, and developer-friendly Kubernetes development environment using Tilt and Minikube. | _Kubernetes_, _Tilt_, _Minikube_, _Development Environment_, _MicroServices_ |
+| [TODOs to GitHub Issues](https://github.com/nanlabs/devops-reference/tree/main/examples/github-actions-todo-to-issue/) | This tutorial shows how to create a GitHub Action that converts TODO comments into GitHub issues. | _GitHub Actions_, _TODOs_, _Issues_ |
+| [Using Serverless Framework with Terraform](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-terraform-example) | The definitive example of how to use Terraform and Serverless Framework together. | _Serverless Framework_, _Terraform_, _AWS_ |
+| [When to use Shell Scripts](https://google.github.io/styleguide/shellguide.html#when-to-use-shell) | A guide from Google on when to use shell scripts. | _Shell Scripting_, _Utilities_ |
## Contributing
@@ -194,7 +231,7 @@ among other resources that are used in different projects here at [NaN Labs](htt
## Contributors
-
+
Made with [contributors-img](https://contrib.rocks).
diff --git a/README.md.tmpl b/README.md.tmpl
index 461801e..7756ed5 100644
--- a/README.md.tmpl
+++ b/README.md.tmpl
@@ -6,6 +6,7 @@
style="width: 200px"
width="200"
src="https://avatars.githubusercontent.com/u/4426989?s=200&v=4"
+ alt="NaNLABS"
>
DevOps Reference
@@ -42,7 +43,7 @@ among other resources that are used in different projects here at [NaN Labs](htt
## Contributors
-
+
Made with [contributors-img](https://contrib.rocks).
diff --git a/examples.json b/examples.json
index f81e80b..9a73685 100644
--- a/examples.json
+++ b/examples.json
@@ -46,17 +46,23 @@
]
},
{
- "name": "Feature flags post",
+ "name": "Feature flags post by Atlassian",
"description": "How to progressively expose your features with feature flags by IAN BUCHANNAN.",
"url": "https://www.atlassian.com/continuous-delivery/principles/feature-flags",
- "tags": ["Examples > DevOps > A/B Testing"],
+ "tags": [
+ "Guides, Tutorials and Best Practices",
+ "Examples > DevOps > A/B Testing"
+ ],
"labels": ["Feature Flags"]
},
{
"name": "When to use Shell Scripts",
"description": "A guide from Google on when to use shell scripts.",
"url": "https://google.github.io/styleguide/shellguide.html#when-to-use-shell",
- "tags": ["Examples > DevOps > Shell Scripting and CLI Tools"],
+ "tags": [
+ "Guides, Tutorials and Best Practices",
+ "Examples > DevOps > Shell Scripting and CLI Tools"
+ ],
"labels": ["Shell Scripting", "Utilities"]
},
{
@@ -121,6 +127,7 @@
"description": "This tutorial shows how to create a GitHub Action that converts TODO comments into GitHub issues.",
"url": "https://github.com/nanlabs/devops-reference/tree/main/examples/github-actions-todo-to-issue/",
"tags": [
+ "Guides, Tutorials and Best Practices",
"Examples > DevOps > Continuous Integration, Delivery and Deployment"
],
"labels": ["GitHub Actions", "TODOs", "Issues"]
@@ -130,6 +137,7 @@
"description": "This workflow automates the initial review of Pull Requests using [Danger.js](https://danger.systems/js/). This provides another logical step in your build, through this Danger can help lint your rote tasks in daily code review. You can use Danger to codify your teams norms. Leaving humans to think about harder problems.",
"url": "https://github.com/nanlabs/devops-reference/tree/main/.github/workflows/pr-review.yml",
"tags": [
+ "Guides, Tutorials and Best Practices",
"Examples > DevOps > Continuous Integration, Delivery and Deployment"
],
"labels": ["GitHub Actions", "Danger.js"]
@@ -244,6 +252,7 @@
"description": "Introduction to Development Containers (DevContainers), a solution to create development environments with a unique approach to address specific development environment needs",
"url": "https://github.com/nanlabs/devops-reference/tree/main/examples/devcontainers-intro/",
"tags": [
+ "Guides, Tutorials and Best Practices",
"Examples > DevOps > Containers, Orchestration and Serverless > Development and Cloud Environments"
],
"labels": [
@@ -539,6 +548,7 @@
"description": "The definitive example of how to use Terraform and Serverless Framework together.",
"url": "https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-terraform-example",
"tags": [
+ "Guides, Tutorials and Best Practices",
"Examples > DevOps > Infrastructure as Code > Serverless Framework, SAM and CloudFormation",
"Examples > DevOps > Infrastructure as Code > Terraform"
],
@@ -630,6 +640,7 @@
"description": "Seamless, efficient, and developer-friendly Kubernetes development environment using Tilt and Minikube.",
"url": "https://github.com/nanlabs/devops-reference/tree/main/examples/kubernetes-tilt-dev/",
"tags": [
+ "Guides, Tutorials and Best Practices",
"Examples > DevOps > Containers, Orchestration and Serverless > Kubernetes"
],
"labels": [
@@ -639,6 +650,97 @@
"Development Environment",
"MicroServices"
]
+ },
+ {
+ "name": "Terraform AWS Starter",
+ "description": "Get started quickly with AWS infrastructure using a robust Terraform starter kit incorporating secure state management, VPC configuration, security groups, RDS provisioning, secrets management, SSM parameter store, and GitHub Actions integration!",
+ "url": "https://github.com/nanlabs/terraform-aws-starter",
+ "tags": [
+ "Apps and Boilerplates",
+ "Examples > DevOps > Infrastructure as Code > Terraform"
+ ],
+ "labels": [
+ "Terraform",
+ "Terraform Modules",
+ "Infrastructure as Code",
+ "AWS",
+ "VPC",
+ "RDS",
+ "RDS Aurora",
+ "MongoDB",
+ "GitHub Actions",
+ "SSM Parameter Store",
+ "Secrets Management",
+ "Security Groups",
+ "Super Linter"
+ ]
+ },
+ {
+ "name": "The Ultimate Guide to Code Review Tools",
+ "description": "A guide where we present a curated selection of modern tools designed to revolutionize your code review process!",
+ "url": "https://github.com/nanlabs/devops-reference/tree/main/examples/the-ultimate-guide-to-code-review-tools",
+ "tags": [
+ "Guides, Tutorials and Best Practices",
+ "Examples > DevOps > Continuous Integration, Delivery and Deployment"
+ ],
+ "labels": ["Code Review", "Code Review Tools"]
+ },
+ {
+ "name": "Verdaccio with Docker Compose Example",
+ "description": "Verdaccio is a lightweight private npm proxy registry. This example shows how to run Verdaccio locally using Docker Compose.",
+ "url": "https://github.com/nanlabs/devops-reference/tree/main/examples/compose-verdaccio/",
+ "tags": [
+ "Examples > DevOps > Containers, Orchestration and Serverless > Containers and Compositions (Docker, Docker Compose, Buildpacks and more)",
+ "Examples > DevOps > Dependency Management"
+ ],
+ "labels": [
+ "Docker",
+ "Docker Compose",
+ "Verdaccio",
+ "Node Package Manager"
+ ]
+ },
+ {
+ "name": "Embracing the Power of LocalStack for AWS Emulation",
+ "description": "A comprehensive guide highlighting the benefits of using LocalStack for AWS service emulation. The blog post covers various LocalStack examples for Docker and Serverless setups and explores its application in local development, CI, and more.",
+ "url": "https://github.com/nanlabs/devops-reference/tree/main/examples/embracing-the-power-of-localstack-for-aws-emulation",
+ "tags": [
+ "Guides, Tutorials and Best Practices",
+ "Examples > DevOps > Containers, Orchestration and Serverless > Containers and Compositions (Docker, Docker Compose, Buildpacks and more)",
+ "Examples > DevOps > Infrastructure as Code > Serverless Framework, SAM and CloudFormation"
+ ],
+ "labels": [
+ "LocalStack",
+ "AWS",
+ "Docker",
+ "Serverless",
+ "DevOps",
+ "CI",
+ "Local Development"
+ ]
+ },
+ {
+ "name": "The Ultimate Guide to Secrets Management for Developers",
+ "description": "Unlock the arcane art of secrets management with our comprehensive guide! Tailored for the average dev, this post is a treasure map leading to the best practices for storing and accessing sensitive data. Learn to navigate tools like AWS Parameter Store, `direnv`, `teller`, and more, with easy-to-follow examples that bring the theory to life. Perfect for those who've never realized the gravity of a leaked secret, this guide will be your enchanted scroll of wisdom.",
+ "url": "https://github.com/nanlabs/devops-reference/tree/main/examples/the-ultimate-guide-to-secrets-management-for-developers",
+ "tags": [
+ "Guides, Tutorials and Best Practices",
+ "Examples > DevOps > Security and Compliance",
+ "Examples > DevOps > Infrastructure as Code > Secrets Management"
+ ],
+ "labels": [
+ "Secrets Management",
+ "Cloud Secrets Management",
+ "direnv",
+ "teller",
+ "Security",
+ "DevOps",
+ "Best Practices",
+ "Environment Variables",
+ "Encryption",
+ "SOPS",
+ "Secure Configuration"
+ ]
}
]
}
diff --git a/examples/compose-glue/README.md b/examples/compose-glue/README.md
index dc13af9..dae0806 100644
--- a/examples/compose-glue/README.md
+++ b/examples/compose-glue/README.md
@@ -8,7 +8,7 @@
```sh
git clone https://github.com/nanlabs/devops-reference.git
-cd devops-reference/examples/docker/glue
+cd devops-reference/examples/compose-glue
docker compose up
```
diff --git a/examples/compose-localstack/README.md b/examples/compose-localstack/README.md
index 25fbc4d..9923f36 100644
--- a/examples/compose-localstack/README.md
+++ b/examples/compose-localstack/README.md
@@ -8,11 +8,11 @@
```sh
git clone https://github.com/nanlabs/devops-reference.git
-cd devops-reference/examples/docker/localstack
+cd devops-reference/examples/compose-localstack
docker compose up
```
-It will execute the script `setup-resources.sh` to setup the resources.
+It will execute the scripts located in the `init.d/` folder to bootstrap the resources.
## Resources
@@ -23,14 +23,18 @@ Once the docker compose is up, it will create the following resources:
- [S3 Bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
- [SQS Queue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)
-## Testing
+## LocalStack Desktop
+
+You can use [LocalStack Desktop](https://docs.localstack.cloud/user-guide/tools/localstack-desktop/) to manage the resources created by the docker compose.
+
+## Testing the services
From outside the container you can execute the following commands to test the service each service:
- **DynamoDB**
```sh
-$ aws --endpoint-url=http://localhost:4566 dynamodb list-tables
+$ awslocal dynamodb list-tables
{
"TableNames": [
"my_table"
@@ -41,7 +45,7 @@ $ aws --endpoint-url=http://localhost:4566 dynamodb list-tables
- **Kinesis**
```sh
-$ aws --endpoint-url=http://localhost:4566 kinesis list-streams
+$ awslocal kinesis list-streams
{
"StreamNames": [
"my_stream"
@@ -52,14 +56,14 @@ $ aws --endpoint-url=http://localhost:4566 kinesis list-streams
- **S3**
```sh
-$ aws --endpoint-url=http://localhost:4566 s3 ls
+$ awslocal s3 ls
2022-08-08 03:16:01 example-bucket
```
- **SQS**
```sh
-$ aws --endpoint-url=http://localhost:4566 sqs list-queues
+$ awslocal sqs list-queues
{
"QueueUrls": [
"http://localhost:4566/000000000000/my_queue"
diff --git a/examples/compose-localstack/compose.yml b/examples/compose-localstack/compose.yml
index 173138e..5747415 100644
--- a/examples/compose-localstack/compose.yml
+++ b/examples/compose-localstack/compose.yml
@@ -19,24 +19,4 @@ services:
volumes:
- "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
- networks:
- - localstack-net
-
- setup-resources:
- image: mesosphere/aws-cli:1.14.5
- volumes:
- - ./:/project
- environment:
- - AWS_ACCESS_KEY_ID=dummyaccess
- - AWS_SECRET_ACCESS_KEY=dummysecret
- - AWS_DEFAULT_REGION=us-east-1
- entrypoint: /bin/sh -c
- command: /project/setup-resources.sh
- networks:
- - localstack-net
- depends_on:
- - localstack
-
-networks:
- localstack-net:
- driver: bridge
+ - "./init.d:/etc/localstack/init/ready.d"
diff --git a/examples/compose-localstack/init.d/init.sh b/examples/compose-localstack/init.d/init.sh
new file mode 100755
index 0000000..6d34d89
--- /dev/null
+++ b/examples/compose-localstack/init.d/init.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+awslocal kinesis create-stream --stream-name my_stream --shard-count 1
+
+awslocal s3 mb s3://example-bucket
+
+awslocal sqs create-queue --queue-name my_queue
+
+awslocal dynamodb create-table --table-name my_table \
+ --attribute-definitions AttributeName=key,AttributeType=S \
+ --key-schema AttributeName=key,KeyType=HASH \
+ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
+
+# you can go on and put initial items in tables...
diff --git a/examples/compose-localstack/setup-resources.sh b/examples/compose-localstack/setup-resources.sh
deleted file mode 100755
index 49f39d1..0000000
--- a/examples/compose-localstack/setup-resources.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-# Lets check if localstack is available. If we can't reach to localstack
-# in 60 seconds we error out
-counter=0
-until nc -z localstack 4566; do
- if [ ${counter} -eq 60 ]; then
- echo "Timeout: Failed to reach localstack."
- exit 1
- fi
- counter=$((counter + 1))
- printf '.'
- sleep 1
-done
-
-aws dynamodb create-table --endpoint-url=http://localstack:4566 --table-name my_table \
- --attribute-definitions AttributeName=key,AttributeType=S \
- --key-schema AttributeName=key,KeyType=HASH \
- --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
-
-aws kinesis create-stream --endpoint-url=http://localstack:4566 --stream-name my_stream --shard-count 1
-
-aws s3 mb s3://example-bucket --endpoint-url=http://localstack:4566
-
-aws sqs create-queue --endpoint-url=http://localstack:4566 --queue-name my_queue
-
-# you can go on and put initial items in tables...
diff --git a/examples/compose-mongodb/README.md b/examples/compose-mongodb/README.md
index 041494c..c9c3f52 100644
--- a/examples/compose-mongodb/README.md
+++ b/examples/compose-mongodb/README.md
@@ -8,7 +8,7 @@
```sh
git clone https://github.com/nanlabs/devops-reference.git
-cd devops-reference/examples/docker/mongodb
+cd devops-reference/examples/compose-mongodb
cp .env.example .env
docker compose up
```
diff --git a/examples/compose-mssql/README.md b/examples/compose-mssql/README.md
index 5b37fa1..06ac98e 100644
--- a/examples/compose-mssql/README.md
+++ b/examples/compose-mssql/README.md
@@ -8,7 +8,7 @@
```sh
git clone https://github.com/nanlabs/devops-reference.git
-cd devops-reference/examples/docker/mssql
+cd devops-reference/examples/compose-mssql
cp .env.example .env
docker compose up
```
diff --git a/examples/compose-neptune/README.md b/examples/compose-neptune/README.md
index 0eb88b8..c2c8822 100644
--- a/examples/compose-neptune/README.md
+++ b/examples/compose-neptune/README.md
@@ -10,7 +10,7 @@ Imitate AWS Neptune using Docker for local dev
```sh
git clone https://github.com/nanlabs/devops-reference.git
-cd devops-reference/examples/docker/neptune
+cd devops-reference/examples/compose-neptune
docker compose up
```
diff --git a/examples/compose-verdaccio/README.md b/examples/compose-verdaccio/README.md
new file mode 100644
index 0000000..0ab2963
--- /dev/null
+++ b/examples/compose-verdaccio/README.md
@@ -0,0 +1,76 @@
+# ๐ Verdaccio with Docker Compose Example ๐ณ
+
+This example demonstrates how to set up a private npm registry using Verdaccio and Docker Compose.
+
+## Why Choose Verdaccio? ๐ค
+
+Verdaccio is a lightweight, easy-to-use, private npm registry. It's perfect for:
+
+- ๐ ๏ธ **Local Package Management**: Manage npm packages locally with ease.
+- ๐ **Speed and Efficiency**: Speed up your development by caching npm packages and reducing reliance on external networks.
+- ๐ก๏ธ **Control and Security**: Keep your private packages secure and share them within your team or organization.
+- ๐ **Continuous Integration Support**: Integrates smoothly into your CI/CD pipeline.
+
+## Getting Started with Verdaccio and Docker ๐
+
+### Prerequisites
+
+- Docker installed on your system (Docker Desktop for Mac/Windows).
+- Docker Compose installed on your system (included with Docker Desktop).
+
+### Setup and Launch ๐ ๏ธ
+
+1. **Create a Verdaccio Folder**: Set up a folder named `verdaccio` for configuration files and storage.
+
+2. **Start Docker Container**: Navigate to the directory containing `compose.yaml` and run:
+
+ ```bash
+ docker-compose up
+ ```
+
+ Or use Docker Desktop's right-click context menu and select `Compose up`.
+
+3. **Access Verdaccio Server**: Open [http://localhost:4873](http://localhost:4873) in your browser. Customize the port in `compose.yaml` if needed.
+
+### Configuration โ๏ธ
+
+- **User Permissions**: By default, all users can publish/unpublish packages. Edit `verdaccio/config.yaml` for specific permissions.
+- **Set Up User Account**: Run `npm adduser --registry http://localhost:4873/` to add a user account.
+
+### Publishing Packages ๐ฆ
+
+1. **Prepare Your Package**:
+
+ - Run `npm run build`.
+ - In `package.json`, temporarily remove or comment out the `publishConfig` field.
+ - Ensure `private` field is set to `false`.
+ - Verify package version is unique to your Verdaccio server.
+
+2. **Publish**:
+ - Run `npm publish --registry http://localhost:4873`.
+
+### Unpublishing Packages ๐๏ธ
+
+- To remove a package, execute:
+
+ ```bash
+ npm unpublish ${package_name} --registry http://localhost:4873 --force
+ ```
+
+## Usage in Projects ๐
+
+- Install packages with:
+
+ ```bash
+ npm install ${package_name}@latest --registry http://localhost:4873
+ ```
+
+ Replace `@latest` with a specific version if needed.
+
+## Pro Tips ๐
+
+- **Set Environment Variable**: Use `export VERDACCIO_URL=http://localhost:4873` for convenience.
+- **Automation Scripts**: Create scripts for publishing and unpublishing.
+- **Proxy Settings**: Configure the proxy in Verdaccio for external or internal use.
+- **Package Size Limit**: Adjust `max_body_size` in the Verdaccio config for package size limits.
+- **Middleware and Logs**: Leverage these for monitoring and tracking.
diff --git a/examples/compose-verdaccio/compose.yaml b/examples/compose-verdaccio/compose.yaml
new file mode 100644
index 0000000..36c6dc4
--- /dev/null
+++ b/examples/compose-verdaccio/compose.yaml
@@ -0,0 +1,15 @@
+version: "3.9"
+
+services:
+ verdaccio:
+ image: verdaccio/verdaccio:6
+ container_name: verdaccio-c2-common-ui
+ restart: always
+ ports:
+ - "4873:4873"
+ volumes:
+ - "verdaccio:/verdaccio/storage"
+ - "./conf:/verdaccio/conf"
+
+volumes:
+ verdaccio:
diff --git a/examples/compose-verdaccio/conf/config.yaml b/examples/compose-verdaccio/conf/config.yaml
new file mode 100644
index 0000000..02cce2c
--- /dev/null
+++ b/examples/compose-verdaccio/conf/config.yaml
@@ -0,0 +1,19 @@
+---
+storage: /verdaccio/storage
+max_body_size: 500mb
+uplinks:
+ nanlabs:
+ url: http://nexus.internal.nanlabs.com/repository/npm-nanlabs/
+packages:
+ "**":
+ access: $all
+ publish: $all
+ unpublish: $all
+ proxy: nanlabs
+middlewares:
+ audit:
+ enabled: true
+logs:
+ - type: stdout
+ format: pretty
+ level: trace
diff --git a/examples/embracing-the-power-of-localstack-for-aws-emulation/README.md b/examples/embracing-the-power-of-localstack-for-aws-emulation/README.md
new file mode 100644
index 0000000..61dee8f
--- /dev/null
+++ b/examples/embracing-the-power-of-localstack-for-aws-emulation/README.md
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+# Embracing the Power of LocalStack for AWS Emulation: Transform Your DevOps Journey ๐
+
+
+
+## Unveiling LocalStack - Your Local AWS Environment
+
+In the dynamic world of software development, simulating cloud services locally is a game-changer. That's where [**LocalStack**](https://www.localstack.cloud/) comes in! ๐ LocalStack provides an easy-to-use, efficient, and cost-effective way to emulate AWS services on your local machine. This incredible tool bridges the gap between development and production, ensuring a seamless transition of your applications to the cloud.
+
+### Why Choose LocalStack? ๐ค
+
+- **Cost-Effective:** Say goodbye to unexpected AWS bills! Test extensively without incurring extra costs.
+- **Development Agility:** Rapid prototyping and testing without the latency of an actual cloud environment.
+- **Consistency:** Ensure your applications behave the same way in development as they do in production.
+- **Offline Development:** Internet down? No problem! Keep coding with LocalStack's offline capabilities.
+
+## Highlighting Our LocalStack Examples
+
+We've curated a set of practical examples to jumpstart your LocalStack experience.
+
+### LocalStack using Docker and Docker Compose ๐ณ
+
+- **What's Inside:** A Dockerfile and compose.yml to spin up LocalStack with essential services like DynamoDB, S3, SQS, and Kinesis.
+- **Perfect For:** Developers looking for a quick setup with Docker to emulate AWS services.
+- **Check it Out:** [LocalStack Docker Example](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/)
+
+### Serverless SQS Offline + Python + LocalStack ๐
+
+- **What's Inside:** A Serverless Framework example with LocalStack to run Lambda functions and SQS locally.
+- **Perfect For:** Python developers keen on serverless architecture, without leaving their local environment.
+- **Check it Out:** [Serverless SQS Python Example](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-sqs-python/)
+
+### Serverless LocalStack with S3 and DynamoDB ๐ฆ
+
+- **What's Inside:** A Serverless Framework setup to run Lambda functions with S3 and DynamoDB using LocalStack.
+- **Perfect For:** Teams focusing on integrating S3 and DynamoDB in their serverless applications.
+- **Check it Out:** [Serverless LocalStack S3 & DynamoDB Example](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-localstack-with-s3-and-dynamodb/)
+
+## LocalStack in Different Scenarios
+
+LocalStack's versatility shines across various use cases:
+
+- **Local Development:** Mimic AWS in your development environment for faster feedback and iteration.
+- **Continuous Integration (CI):** Integrate LocalStack into your CI pipeline for thorough pre-deployment testing.
+- **Local Deployment:** Test your AWS-dependent applications in a contained, controlled environment before going live.
+
+## Making it even easier with LocalStack Desktop ๐ฅ๏ธ
+
+[LocalStack Desktop](https://docs.localstack.cloud/user-guide/tools/localstack-desktop/) is a GUI application that makes it even easier to use LocalStack. It's available for Windows, macOS, and Linux, and it's free to use! ๐
+
+
+
+## Wrapping Up
+
+LocalStack is more than just a tool; it's a catalyst for efficient, effective, and economical cloud application development. Whether you're a solo developer or part of a large team, LocalStack fits right into your workflow, ensuring that your cloud applications are robust, reliable, and ready for the real world.
+
+Happy coding, and may your cloud journey be as seamless as it is exciting! โ๏ธ๐
diff --git a/examples/embracing-the-power-of-localstack-for-aws-emulation/localstack-desktop-resource-browser.png b/examples/embracing-the-power-of-localstack-for-aws-emulation/localstack-desktop-resource-browser.png
new file mode 100644
index 0000000..d072484
Binary files /dev/null and b/examples/embracing-the-power-of-localstack-for-aws-emulation/localstack-desktop-resource-browser.png differ
diff --git a/examples/embracing-the-power-of-localstack-for-aws-emulation/localstack-readme-banner.svg b/examples/embracing-the-power-of-localstack-for-aws-emulation/localstack-readme-banner.svg
new file mode 100644
index 0000000..54c7864
--- /dev/null
+++ b/examples/embracing-the-power-of-localstack-for-aws-emulation/localstack-readme-banner.svg
@@ -0,0 +1,1390 @@
+
+
+
+
diff --git a/examples/serverless-appsync-node-typescript/README.md b/examples/serverless-appsync-node-typescript/README.md
index d255ce4..5602cc0 100644
--- a/examples/serverless-appsync-node-typescript/README.md
+++ b/examples/serverless-appsync-node-typescript/README.md
@@ -53,4 +53,4 @@ npm run sls:deploy
We recommend the following resources to add local development tools to your project:
-- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/docker/localstack/)
+- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/)
diff --git a/examples/serverless-appsync-python/README.md b/examples/serverless-appsync-python/README.md
index e694825..f417b95 100644
--- a/examples/serverless-appsync-python/README.md
+++ b/examples/serverless-appsync-python/README.md
@@ -68,4 +68,4 @@ npm run sls:deploy
We recommend the following resources to add local development tools to your project:
-- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/docker/localstack/)
+- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/)
diff --git a/examples/serverless-glue-deployment/README.md b/examples/serverless-glue-deployment/README.md
index 70d6974..35a5de4 100644
--- a/examples/serverless-glue-deployment/README.md
+++ b/examples/serverless-glue-deployment/README.md
@@ -36,7 +36,7 @@ npm run sls:deploy
We recommend the following resources to add local development tools to your project:
-- [AWS Glue docker example](https://github.com/nanlabs/devops-reference/tree/main/examples/docker/glue/)
+- [AWS Glue docker example](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-glue/)
- [VSCode DevContainer example](https://github.com/nanlabs/devops-reference/tree/main/examples/devcontainer/glue/)
Check out the [Complete AWS Glue example app](https://github.com/nanlabs/devops-reference/tree/main/examples/_apps/serverless-glue/) to see
diff --git a/examples/serverless-glue-full-boilerplate/README.md b/examples/serverless-glue-full-boilerplate/README.md
index 0bc7599..faba86c 100644
--- a/examples/serverless-glue-full-boilerplate/README.md
+++ b/examples/serverless-glue-full-boilerplate/README.md
@@ -24,7 +24,7 @@ npx serverless install -u https://github.com/nanlabs/devops-reference/tree/main/
This example was created as a composition of the following examples:
- [Serverless Glue example](https://github.com/nanlabs/devops-reference/tree/main/examples/serverless-glue/)
-- [AWS Glue docker example](https://github.com/nanlabs/devops-reference/tree/main/examples/docker/glue/)
+- [AWS Glue docker example](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-glue/)
- [VSCode DevContainer example](https://github.com/nanlabs/devops-reference/tree/main/examples/devcontainer/glue/)
## Local Development
diff --git a/examples/serverless-node-typescript-bundle/README.md b/examples/serverless-node-typescript-bundle/README.md
index 8e0a97e..6d2512a 100644
--- a/examples/serverless-node-typescript-bundle/README.md
+++ b/examples/serverless-node-typescript-bundle/README.md
@@ -52,4 +52,4 @@ npm run sls:deploy
We recommend the following resources to add local development tools to your project:
-- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/docker/localstack/)
+- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/)
diff --git a/examples/serverless-node-typescript-middy-custom-middleware/README.md b/examples/serverless-node-typescript-middy-custom-middleware/README.md
index cb1e627..91bf6ac 100644
--- a/examples/serverless-node-typescript-middy-custom-middleware/README.md
+++ b/examples/serverless-node-typescript-middy-custom-middleware/README.md
@@ -52,4 +52,4 @@ npm run sls:deploy
We recommend the following resources to add local development tools to your project:
-- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/docker/localstack/)
+- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/)
diff --git a/examples/serverless-node-typescript-middy/README.md b/examples/serverless-node-typescript-middy/README.md
index d6f9ebf..95288a9 100644
--- a/examples/serverless-node-typescript-middy/README.md
+++ b/examples/serverless-node-typescript-middy/README.md
@@ -52,4 +52,4 @@ npm run sls:deploy
We recommend the following resources to add local development tools to your project:
-- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/docker/localstack/)
+- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/)
diff --git a/examples/serverless-sqs-node-typescript-offline-with-elasticmq/package-lock.json b/examples/serverless-sqs-node-typescript-offline-with-elasticmq/package-lock.json
index e8504c9..0058dce 100644
--- a/examples/serverless-sqs-node-typescript-offline-with-elasticmq/package-lock.json
+++ b/examples/serverless-sqs-node-typescript-offline-with-elasticmq/package-lock.json
@@ -3776,18 +3776,34 @@
}
},
"node_modules/es5-ext": {
- "version": "0.10.62",
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
"hasInstallScript": true,
- "license": "ISC",
"dependencies": {
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
"next-tick": "^1.1.0"
},
"engines": {
"node": ">=0.10"
}
},
+ "node_modules/es5-ext/node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/es6-iterator": {
"version": "2.0.3",
"license": "MIT",
@@ -10037,11 +10053,27 @@
}
},
"es5-ext": {
- "version": "0.10.62",
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
"requires": {
"es6-iterator": "^2.0.3",
"es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
"next-tick": "^1.1.0"
+ },
+ "dependencies": {
+ "esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "requires": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ }
+ }
}
},
"es6-iterator": {
diff --git a/examples/serverless-sqs-python/compose-localstack/README.md b/examples/serverless-sqs-python/compose-localstack/README.md
index 25fbc4d..30ae759 100644
--- a/examples/serverless-sqs-python/compose-localstack/README.md
+++ b/examples/serverless-sqs-python/compose-localstack/README.md
@@ -8,7 +8,7 @@
```sh
git clone https://github.com/nanlabs/devops-reference.git
-cd devops-reference/examples/docker/localstack
+cd devops-reference/examples/compose-localstack
docker compose up
```
diff --git a/examples/serverless-start-stop-ec2-instance/README.md b/examples/serverless-start-stop-ec2-instance/README.md
index e3161bd..55668be 100644
--- a/examples/serverless-start-stop-ec2-instance/README.md
+++ b/examples/serverless-start-stop-ec2-instance/README.md
@@ -52,4 +52,4 @@ npm run sls:deploy
We recommend the following resources to add local development tools to your project:
-- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/docker/localstack/)
+- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/)
diff --git a/examples/serverless-twilio-aws-lambdas-typescript/README.md b/examples/serverless-twilio-aws-lambdas-typescript/README.md
index a7515dc..5a067e2 100644
--- a/examples/serverless-twilio-aws-lambdas-typescript/README.md
+++ b/examples/serverless-twilio-aws-lambdas-typescript/README.md
@@ -68,4 +68,4 @@ npm run sls:deploy
We recommend the following resources to add local development tools to your project:
-- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/docker/localstack/)
+- [LocalStack](https://github.com/nanlabs/devops-reference/tree/main/examples/compose-localstack/)
diff --git a/examples/the-ultimate-guide-to-code-review-tools/README.md b/examples/the-ultimate-guide-to-code-review-tools/README.md
new file mode 100644
index 0000000..f1cdd8d
--- /dev/null
+++ b/examples/the-ultimate-guide-to-code-review-tools/README.md
@@ -0,0 +1,112 @@
+# ๐ The Ultimate Code to Code Review Tools ๐
+
+In the fast-paced world of software development, **code reviews** stand as a cornerstone of quality and collaboration. They're not just about catching bugs; they're about sharing knowledge, improving code standards, and fostering a culture of collective responsibility. However, as crucial as they are, code reviews can be time-consuming and, at times, overwhelming.
+
+## Elevating the Art of Code Reviews
+
+The key to efficient code reviews lies in **optimization** and **automation**. Reducing the time spent on manual reviews not only accelerates the development cycle but also frees up valuable resources, allowing teams to focus on innovation and problem-solving. This is where specialized tools come in.
+
+In this guide, we present you with a curated selection of modern tools designed to revolutionize your code review process. These tools are not just about automating the mundane; they're about enhancing the entire experience, ensuring that teams can maintain high-quality standards without sacrificing speed and efficiency.
+
+Now, let's dive into these transformative tools and discover how they can reshape the way you approach code reviews.
+
+## โ ๏ธ Danger (DangerJS)
+
+> Transform Your Code Review with Automation
+
+Danger (DangerJS) is not just a tool; it's your automated code review partner. It's designed to take away the mundane tasks from your plate, letting you focus on what really matters.
+
+### Why You'll Love Danger
+
+- **Seamless Integration**: Works like a charm with major CI systems and supports GitHub, GitLab, Bitbucket.
+- **Custom Rules**: Tailor the review process to fit your team's unique needs.
+- **Multi-Platform Mastery**: A versatile player in a multi-platform world.
+
+### But Keep in Mind
+
+- **Setup Time**: It needs your touch to get started.
+- **Tech Know-How**: Some Ruby or JavaScript knowledge is a plus.
+
+### Danger in Action
+
+Check out our guide on [Automating Pull Request Review using DangerJS and GitHub Actions ๐๐](https://github.com/nanlabs/devops-reference/tree/main/examples/github-actions-with-dangerjs) to see how you can use DangerJS to automate your code review process.
+
+## ๐ Coderabbit.ai
+
+> AI-Powered Code Quality Analysis
+
+Enter the era of AI with Coderabbit.ai. This tool brings the power of artificial intelligence to your fingertips, analyzing code quality and offering insightful reviews.
+
+### Why Coderabbit.ai Stands Out
+
+- **Smart Insights**: AI-driven analysis for top-notch code quality.
+- **Developer-Friendly**: Easy to integrate, easy to use.
+- **Speedy Setup**: Get up and running in no time.
+
+### But Keep in Mind
+
+- **AI Limitations**: Sometimes, AI doesn't get the full picture.
+- **External Dependencies**: Relies on outside services for in-depth analysis.
+
+### Coderabbit.ai in Action
+
+We are already using Coderabbit.ai in our [Open Source projects](https://github.com/nanlabs). You can check the following Pull Requests to see how it works:
+
+- [feature: add Nest + NATS example](https://github.com/nanlabs/backend-reference/pull/55)
+- [feature: created README.md file for best security practices react](https://github.com/nanlabs/frontend-reference/pull/69)
+- [New AWS Multi Account ready setup with a better approach](https://github.com/nanlabs/terraform-aws-starter/pull/22)
+
+## ๐ CodeSee
+
+> Visualize to Realize - Understanding Code Changes Made Easy
+
+With CodeSee, you're not just reviewing code; you're visualizing the heart of your project. It's perfect for grasping complex changes in large codebases.
+
+### Why CodeSee is a Game Changer
+
+- **Visual Maps**: See your code like never before.
+- **GitHub Friendly**: Integrates smoothly with your GitHub repositories.
+- **Large Project Ally**: Especially useful for big, intricate codebases.
+
+### But Keep in Mind
+
+- **Might be Overkill**: For smaller projects, it could be too much.
+- **Graphical Dependency**: Needs a graphical interface to shine.
+
+## ๐ Graphite
+
+> Redefine Code Reviews with Stack-Based Workflows
+
+Graphite is the future of code review workflows. It's built to streamline your process, making collaborative reviews more effective and enjoyable.
+
+### Why Graphite Rocks
+
+- **Workflow Wizardry**: Customizable to the core.
+- **GitHub Harmony**: Integrates beautifully with GitHub.
+- **Teamwork Optimizer**: Makes collaboration a breeze.
+
+### But Keep in Mind
+
+- **New Approach**: It's a new way of working โ there's a learning curve.
+- **Team Size Matters**: Best suited for larger, more complex teams.
+
+## ๐ค GitHub Copilot for Code Reviews
+
+> AI Assistance for Your Code Reviews
+
+GitHub Copilot for Code Reviews isn't just an AI tool; it's your smart coding companion. It suggests, improves, and revolutionizes the way you handle code reviews.
+
+### Why GitHub Copilot is Essential
+
+- **AI Superpowers**: Get smart, AI-powered code suggestions.
+- **GitHub Synchronization**: Perfectly integrated within the GitHub ecosystem.
+- **Productivity Booster**: Enhances code quality and team efficiency.
+
+### But Keep in Mind
+
+- **AI Imperfections**: It's smart, but not perfect.
+- **Understanding AI**: Knowing its capabilities and limitations is key.
+
+---
+
+Feel the power of modern code review tools and choose the one that fits your team's needs. Dive in and revolutionize your code review process today!
diff --git a/examples/the-ultimate-guide-to-secrets-management-for-developers/README.md b/examples/the-ultimate-guide-to-secrets-management-for-developers/README.md
new file mode 100644
index 0000000..08af250
--- /dev/null
+++ b/examples/the-ultimate-guide-to-secrets-management-for-developers/README.md
@@ -0,0 +1,214 @@
+# The Ultimate Guide to Secrets Management for Developers ๐๐
+
+Hello, Developer Friend! Welcome to your exciting journey into the _mystical lands_ of Secrets Management. If you're the kind of person who thinks that `password123` is an unbreakable password, buckle up! We're about to revolutionize the way you handle secrets ๐
+
+## Table of Contents ๐
+
+- [The Ultimate Guide to Secrets Management for Developers ๐๐](#the-ultimate-guide-to-secrets-management-for-developers-)
+ - [Table of Contents ๐](#table-of-contents-)
+ - [Introduction to Secrets Management](#introduction-to-secrets-management)
+ - [Where to Store Your Secrets](#where-to-store-your-secrets)
+ - [Using Cloud Providers](#using-cloud-providers)
+ - [Encrypting Files for Non-Cloud Environments](#encrypting-files-for-non-cloud-environments)
+ - [Reading Secrets in Your Application](#reading-secrets-in-your-application)
+ - [Avoiding `.env` for Sensitive Data](#avoiding-env-for-sensitive-data)
+ - [Secure Alternatives](#secure-alternatives)
+ - [Using `direnv` for Local Development](#using-direnv-for-local-development)
+ - [Using `direnv` for Local Development](#using-direnv-for-local-development-1)
+ - [Managing Different Stages with `direnv`](#managing-different-stages-with-direnv)
+ - [Using `teller` for a Unified Approach](#using-teller-for-a-unified-approach)
+ - [Using SDKs for Dynamic Retrieval](#using-sdks-for-dynamic-retrieval)
+ - [Conclusion](#conclusion)
+
+## Introduction to Secrets Management
+
+Imagine your application's secrets as the precious ring from "The Lord of the Rings". You wouldn't just leave it lying around, would you? Secrets management is the art of storing, retrieving, and using these precious pieces of information securely. It's essential because the bad guys are always on the lookout, and you need to protect your treasure! ๐
+
+## Where to Store Your Secrets
+
+First things first, where do you keep these shiny trinkets of data? You could write them on a sticky note, but that's not very safe, is it? Here's the pro gamer move:
+
+### Using Cloud Providers
+
+If you're sailing in the cloud, each provider has its own secret chest:
+
+- **[AWS Parameters Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) & [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)**: AWS's own treasure chest, perfect for all your secret-stashing needs.
+- **[Google Cloud Secret Manager](https://cloud.google.com/security/products/secret-manager)**: Google's magic vault for keeping your spells and incantations safe.
+- **[HashiCorp Vault](https://www.vaultproject.io/)**: For those wandering in the open plains outside the cloud, this is your enchanted vault.
+
+### Encrypting Files for Non-Cloud Environments
+
+Not on the cloud? No sweat! Here's the stealth mode:
+
+1. **Encrypt config files**: Tools like [Secrets OPerationS (SOPS)](https://github.com/getsops/sops) are like your digital invisibility cloak, hiding your secrets in plain sight.
+ 
+
+2. **Key Management**: Keep the keys to your cloak in a vault like [LastPass](https://lastpass.com/) or [Bitwarden](https://bitwarden.com/), so only you know where and how to reveal the secrets.
+
+## Reading Secrets in Your Application
+
+Now that you've got your secrets stashed away like a dragon's hoard, how do you use them without exposing them to the prying eyes of the internet hobbits?
+
+### Avoiding `.env` for Sensitive Data
+
+`.env` files might seem convenient, but they're like leaving your front door key under the mat. Anyone who knows where to look can find it! So, let's move on to some magic spells for better security:
+
+### Secure Alternatives
+
+#### Using `direnv` for Local Development
+
+`direnv` is like your trusty sidekick that whispers secrets to you and only you when you enter your castle (or project directory).
+
+Instead of writing down your secrets, `direnv` can fetch them from AWS Parameter Store on the fly:
+
+```shell
+# .envrc example
+export SUPER_STRONG_AND_COMPLICATED_PASSWORD=$(aws ssm get-parameter --name "SUPER_STRONG_AND_COMPLICATED_PASSWORD" --with-decryption --query "Parameter.Value" --output text)
+```
+
+๐ To set this up, you'll need `direnv` and `aws-cli` armed and ready. The official scrolls for `direnv` are here: [Direnv Documentation](https://direnv.net/docs/installation.html).
+
+#### Using `direnv` for Local Development
+
+`direnv` is like your trusty sidekick that whispers secrets to you and only you when you enter your castle (or project directory).
+
+Instead of writing down your secrets, `direnv` can fetch them from AWS Parameter Store on the fly:
+
+```shell
+# .envrc example
+export SUPER_STRONG_AND_COMPLICATED_PASSWORD=$(aws ssm get-parameter --name "SUPER_STRONG_AND_COMPLICATED_PASSWORD" --with-decryption --query "Parameter.Value" --output text)
+```
+
+๐ To set this up, you'll need `direnv` and `aws-cli` armed and ready. The official scrolls for `direnv` are here: [Direnv Documentation](https://direnv.net/docs/installation.html).
+
+##### Managing Different Stages with `direnv`
+
+If youโre a wizard of multiple realms (stages like `dev`, `staging`, `prod`), `direnv` can still be your arcane tool. Here's a spell to conjure the right environment based on your current stage:
+
+
+๐ฎ Click to reveal the spell for managing different stages with `direnv`
+
+1. Create a sacred grove of directories, each an altar for a different stage within your magical domain (project).
+
+2. In each, place an `.envrc` script, inscribed with the incantations (variables) unique to that stage.
+
+3. At the heart of your domain (`my-awesome-project`), place a master `.envrc` that will determine which altar to draw power from based on your current quest (branch, command, etc.).
+
+Here's what your structure might look like:
+
+```txt
+my-awesome-project
+โโโ .envrc
+โโโ envs
+ โโโ dev
+ โ โโโ .envrc
+ โโโ staging
+ โ โโโ .envrc
+ โโโ prod
+ โโโ .envrc
+```
+
+And in your `my-awesome-project/.envrc`:
+
+```sh
+# .envrc in project root
+show_env() {
+ echo "Loading environment for $1..."
+}
+
+# Replace with a check or a command that determines the current stage.
+STAGE=$(git branch --show-current)
+
+case "$STAGE" in
+ "main")
+ source_env "envs/prod/.envrc"
+ show_env "production"
+ ;;
+ "develop")
+ source_env "envs/dev/.envrc"
+ show_env "development"
+ ;;
+ "staging")
+ source_env "envs/staging/.envrc"
+ show_env "staging"
+ ;;
+ *)
+ echo "Unknown environment. Not loading any .envrc files."
+ ;;
+esac
+```
+
+Cast `direnv allow` to let the magic flow whenever you update your scripts.
+
+But remember, the most powerful spells (production secrets) should never be stored in plain text. Use secure vaults and encryption to keep them safe from dark sorcery (threats).
+
+
+
+#### Using `teller` for a Unified Approach
+
+Meet `teller`, the wandering wizard of secret managers. It pulls secrets from different realms (providers) into your local spellbook (environment).
+
+
+
+To use `teller` for this example, you'd need to create a `teller.yml` file in your project directory with the following configuration:
+
+```yaml
+# teller.yml example
+project: my-awesome-project
+
+opts:
+ region: env:AWS_REGION
+ stage: development
+
+confirm: Are you sure you want to run for {{stage}}?
+
+providers:
+ # Other providers configuration...
+
+ aws_ssm:
+ # configures client from environment:
+ # https://docs.aws.amazon.com/sdk-for-go/api/service/secretsmanager/#SecretsManager.GetSecretValue
+ env:
+ SUPER_STRONG_AND_COMPLICATED_PASSWORD:
+ path: /{{stage}}/my-awesome-project/SUPER_STRONG_AND_COMPLICATED_PASSWORD
+ decrypt: true
+```
+
+๐งโโ๏ธ To conjure secrets with `teller`, you'll want to follow the ancient tomes: [Teller Documentation](https://github.com/tellerops/teller).
+
+#### Using SDKs for Dynamic Retrieval
+
+Most Cloud Providers offer SDKs for different languages, so you can weave your spells in your favorite tongue.
+
+In our example, we'll use the AWS SDK for JavaScript to fetch a secret from AWS Parameter Store.
+
+A snippet of incantation in Node.js:
+
+```javascript
+const AWS = require("aws-sdk");
+AWS.config.update({ region: "us-west-2" });
+const ssm = new AWS.SSM({ apiVersion: "2014-11-06" });
+
+const getSecret = async () => {
+ const params = {
+ Name: "SUPER_STRONG_AND_COMPLICATED_PASSWORD",
+ WithDecryption: true,
+ };
+ const { Parameter } = await ssm.getParameter(params).promise();
+ return Parameter.Value;
+};
+
+getSecret().then((password) => {
+ console.log("Secret Password:", password);
+});
+```
+
+๐ To learn this magic, visit the grand library here: [AWS SDK for JavaScript](https://docs.aws.amazon.com/sdk-for-javascript/index.html).
+
+## Conclusion
+
+Dear developer, keeping secrets isn't just for spies in movies. It's a critical part of our world. By using the right tools and spells, you can protect your application and sleep soundly, knowing your secrets are safe from the Dark Lords of the Web. ๐ก๏ธ
+
+May your code be secure and your coffee strong!
+
+Happy coding, and may the force of security be with you! ๐๐