diff --git a/assets/img/docs/digitalocean-vars.png b/assets/img/docs/digitalocean-vars.png
new file mode 100644
index 00000000..fa1b6777
Binary files /dev/null and b/assets/img/docs/digitalocean-vars.png differ
diff --git a/assets/img/docs/hello-undefined.png b/assets/img/docs/hello-undefined.png
new file mode 100644
index 00000000..3b153f58
Binary files /dev/null and b/assets/img/docs/hello-undefined.png differ
diff --git a/docs/integrations/digital-ocean/nodejs.md b/docs/integrations/digital-ocean/nodejs.md
deleted file mode 100644
index 05bcdc1f..00000000
--- a/docs/integrations/digital-ocean/nodejs.md
+++ /dev/null
@@ -1,135 +0,0 @@
----
-layout: docs
-title: "Digital Ocean with Node.js - Integrations"
----
-
-{% include icons/digital-ocean.html width="50" color="#0080FF" %}
-{% include icons/nodejs.html width="50" color="#000000" %}
-
-# __Digital Ocean with Node.js__
-
-Learn how to make Digital Ocean, Node.js, and Dotenv Vault work together in a simple web app. This tutorial assumes you are already familiar with `.env` files and know [how to sync them](/docs/tutorials/sync).
-
-You can find a complete [example repo here](https://github.com/dotenv-org/integration-example-digital-ocean-nodejs).
-
-## Initial setup
-Create an `index.js` file, if you haven't done so already and process the environment variables in it and proceed with a standard Node.js `http-server` setup. Reference the module, indicate the port, and add some dynamic HTML with an environment variable to confirm it works beyond local.
-
-##### Node.js
-```js
-// index.js
-const PORT = process.env.PORT || 8080
-const http = require('http')
-const server = http.createServer((req, res) => {
- res.statusCode = 200;
- res.setHeader('Content-Type', 'text/plain');
- res.end(`Hello ${process.env.HELLO}`)
-});
-
-server.listen(PORT, () => {
- console.log(`Server running on port:${PORT}/`);
-});
-```
-[Example](https://github.com/dotenv-org/integration-example-digital-ocean-nodejs/blob/main/index.js).
-
-Remember to set an event listener running on the same port so your app knows when to serve its visitors. Commit that to code and push it to Digital Ocean.
-
-##### CLI
-Once it is deployed, your app will say `'Hello undefined'` as it doesn't have a way to access the environment variable from the HTML yet. That is why the next step for you to take is to connect them dynamically.
-
-## Package installation
-Start by installing the [`dotenv`](https://github.com/motdotla/dotenv) package with `npm`.
-
-##### CLI
-```shell
-npm install dotenv --save
-```
-
-Reference the Vault package as early as possible in your `index.js` code to prevent possible conflicts.
-
-##### Node.js
-```js
-// index.js
-require('dotenv').config()
-console.log(process.env) // for debugging purposes. remove when ready.
-```
-[Example](https://github.com/dotenv-org/integration-example-digital-ocean-nodejs/blob/main/index.js).
-
-With the `dotenv` package successfully taken care of, move forward by installing the `pm2` package. `pm2` replaces the functionality of the default `http-server` Node.js module and will help your app run successfully on Digital Ocean.
-
-Don't forget to call `pm2` in your `package.json` file to run the `index.js` app by entering `pm2 start index.js` as your build command.
-
-##### JSON
-```json
-// package.json
-"scripts": {
- "build": "pm2 start index.js"
-}
-```
-[Example](https://github.com/dotenv-org/integration-example-digital-ocean-nodejs/blob/main/package.json).
-
-## Vault setup
-Open your Vault project and insert the `HELLO` secret with value of your choice under `development` for local testing. For this tutorial it is `"user, your local test worked perfectly"` to complete the static text in the HTML. Once you are ready and confirmed you're logged in, sync your Dotenv Vault locally with `npx dotenv-vault pull`. Then, run locally for testing.
-
-##### Shell
-```shell
-# .env
-HELLO="user, your local test worked perfectly."
-```
-
-
-##### CLI
-```shell
-node index.js
-{
- HELLO: 'user, your local test worked perfectly.'
-}
-Running on port 8080
-```
-
-If you've set everything correctly, you will be faced with the message `"Hello user, your local test worked perfectly"` at [http://localhost:8080](http://localhost:8080).
-
-## Build the Vault
-Now that the local test is completed successfully, it is time for you to set a production value for when you deploy. Following the previous fashion, it is set to `HELLO="user, your production test worked perfectly."` Run `npx dotenv-vault open production` so you can start editing production values with the Vault interface.
-
-##### CLI
-```shell
-npx dotenv-vault open production
-```
-
-{% include helpers/screenshot.html url="/assets/img/cloudinary/dotenv_vault_environment_variable_interface_production_nh0bop.png" %}
-
-When you are done tinkering, pull the latest Vault version and build your encrypted local `.env.vault` file by running `npx dotenv-vault build`. Commit your `.env.vault` file to code without stress knowing it is both safe and necessary to do so, unlike `.env` files.
-
-##### CLI
-```shell
-npx dotenv-vault build
-```
-
-## Set deployment
-
-There is one last step to complete before you are ready - you must set the decryption `DOTENV_KEY` on Digital Ocean. To do that, first fetch your Vault production key by running `npx dotenv-vault keys production`.
-
-##### CLI
-```shell
-npx dotenv-vault keys production
-remote: Listing .env.vault decryption keys... done
-
-dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=production
-```
-
-Copy over the key and jump to your Digital Ocean project and your app in particular. Click on the Settings button, select your Web Service Component, and then click Edit on the Environment Variables section. Add a new environment variable by setting `DOTENV_KEY` as key and your decryption key `dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=production` as value.
-
-{% include helpers/screenshot.html url="/assets/img/cloudinary/dotenv_vault_digital_ocean_environment_variable_settings_mpklsx.png" %}
-
-## Commit and push
-
-That's it!
-
-Commit those changes safely to code and deploy to Digital Ocean.
-
-When the build runs, it will recognize the `DOTENV_KEY`, decrypt the .env.vault file, and load the `production` environment variables to `ENV`. If a `DOTENV_KEY` is not set when developing on local machine, for example, it will fall back to standard Dotenv functionality.
-
-You'll know things worked correctly when you see `'Loading .env from encrypted .env.vault'` in your Digital Ocean logs.
-
-{% include helpers/screenshot.html url="/assets/img/cloudinary/dotenv_vault_digital_ocean_logs_encrypted_loading_env_vault_qcx4yp.png" %}
diff --git a/docs/integrations/heroku/express.md b/docs/integrations/heroku/express.md
index 2c40a302..851fb7b1 100644
--- a/docs/integrations/heroku/express.md
+++ b/docs/integrations/heroku/express.md
@@ -1,6 +1,8 @@
---
layout: docs
+section: "Language Guides"
title: "Heroku with Express - Integrations"
+description: Load environment variables from encrypted .env.vault files, with NodeJS 🚀.
---
{% include icons/heroku.html width="50" color="#430098" %}
diff --git a/docs/integrations/heroku/nodejs.md b/docs/integrations/heroku/nodejs.md
deleted file mode 100644
index c9041025..00000000
--- a/docs/integrations/heroku/nodejs.md
+++ /dev/null
@@ -1,171 +0,0 @@
----
-layout: docs
-section: "Integration Guides"
-title: "Heroku with NodeJS"
-description: Deploy a NodeJS app to Heroku. Use an encrypted .env.vault file to secure and deploy your secrets to Heroku.
----
-
-
-
-You can find a complete [example here](https://github.com/dotenv-org/examples/tree/master/heroku-nodejs).
-
-## Initial setup
-
-Add a `Procfile` to run your NodeJS app.
-
-##### Procfile
-```yaml
-web: node index.js
-```
-[Example](https://github.com/dotenv-org/examples/blob/master/heroku-nodejs/Procfile)
-
-Your `index.js` file should look something like this.
-
-##### index.js
-```js
-// index.js
-const PORT = process.env.PORT || 3000
-const http = require('http')
-const server = http.createServer((req, res) => {
- res.statusCode = 200;
- res.setHeader('Content-Type', 'text/plain');
- res.end(`Hello ${process.env.HELLO}`)
-});
-
-server.listen(PORT, () => {
- console.log(`Server running on port:${PORT}/`);
-});
-```
-[Example](https://github.com/dotenv-org/examples/blob/master/heroku-nodejs/index.js)
-
-Commit that to code and push it to Heroku.
-
-##### CLI
-
-```shell
-heroku create
-git push heroku
-```
-
-Once deployed, your app will say `'Hello undefined'` as it doesn't have a way to access the environment variable yet. Let's do that next.
-
-## Install dotenv
-
-Install [`dotenv`](https://github.com/motdotla/dotenv).
-
-##### CLI
-```shell
-npm install dotenv --save # Requires dotenv >= 16.1.0
-```
-
-Create a `.env` file in the root of your project.
-
-##### .env
-```shell
-# .env
-HELLO="World"
-```
-
-As early as possible in your application, import and configure dotenv.
-
-##### index.js
-```js
-// index.js
-require('dotenv').config()
-console.log(process.env) // remove this after you've confirmed it is working
-
-const PORT = process.env.PORT || 3000
-const http = require('http')
-...
-```
-[Example](https://github.com/dotenv-org/examples/blob/master/heroku-nodejs/index.js#L2)
-
-Try running it locally.
-
-##### CLI
-```shell
-node index.js
-{
- ...
- HELLO: 'World'
-}
-Server running on port:3000/
-```
-
-Perfect. `process.env` now has the keys and values you defined in your `.env` file.
-
-That covers local development. Let's solve for Heroku production next.
-
-## Build .env.vault
-
-Push your latest `.env` file changes and edit your production secrets. [Learn more](/docs/tutorials/sync)
-
-##### CLI
-```shell
-npx dotenv-vault@latest push
-npx dotenv-vault@latest open production
-```
-
-Use the UI to configure those secrets per environment.
-
-##### UI
-{% include helpers/screenshot_browser.html url="/assets/img/docs/edit-production-value.gif" www="dotenv.org" %}
-
-Then build your encrypted `.env.vault` file.
-
-##### CLI
-```shell
-npx dotenv-vault@latest build
-```
-
-Its contents should look something like this.
-
-##### .env.vault
-```shell
-#/-------------------.env.vault---------------------/
-#/ cloud-agnostic vaulting standard /
-#/ [how it works](https://dotenv.org/env-vault) /
-#/--------------------------------------------------/
-
-# development
-DOTENV_VAULT_DEVELOPMENT="/HqNgQWsf6Oh6XB9pI/CGkdgCe6d4/vWZHgP50RRoDTzkzPQk/xOaQs="
-DOTENV_VAULT_DEVELOPMENT_VERSION=2
-
-# production
-DOTENV_VAULT_PRODUCTION="x26PuIKQ/xZ5eKrYomKngM+dO/9v1vxhwslE/zjHdg3l+H6q6PheB5GVDVIbZg=="
-DOTENV_VAULT_PRODUCTION_VERSION=2
-```
-
-## Set DOTENV_KEY
-
-Fetch your production `DOTENV_KEY`.
-
-##### CLI
-```shell
-npx dotenv-vault@latest keys production
-# outputs: dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=production
-```
-
-Set `DOTENV_KEY` on Heroku using the CLI.
-
-##### CLI
-```shell
-heroku config:set DOTENV_KEY=dotenv://:key_1234…@dotenv.org/vault/.env.vault?environment=production
-```
-
-Or use Heroku's UI.
-
-##### UI
-{% include helpers/screenshot_browser.html url="/assets/img/docs/heroku-config-vars.png" www="heroku.com" %}
-
-## Deploy
-
-Commit those changes safely to code and deploy.
-
-That's it! On deploy, your `.env.vault` file will be decrypted and its production secrets injected as environment variables – just in time.
-
-You'll know things worked correctly when you see `'Loading env from encrypted .env.vault'` in your logs. If a `DOTENV_KEY` is not set (for example when developing on your local machine) it will fall back to standard [dotenv](https://github.com/motdotla/dotenv) functionality.
-
-{% include helpers/screenshot_browser.html url="/assets/img/docs/heroku-logs-vault.png" www="heroku logs --tail" %}
-
-{% include docs/welldone.html %}
diff --git a/docs/languages/nodejs.md b/docs/languages/nodejs.md
index 59556b82..54407d39 100644
--- a/docs/languages/nodejs.md
+++ b/docs/languages/nodejs.md
@@ -1,8 +1,8 @@
---
layout: docs
section: "Language Guides"
-title: "NodeJS"
-description: Load environment variables from encrypted .env.vault files, with NodeJS 🚀.
+title: "Node.js"
+description: Load environment variables from an encrypted .env.vault file, with Node.js 🚀.
---
## 🌱 Install
diff --git a/docs/languages/nodejs/digital-ocean.md b/docs/languages/nodejs/digital-ocean.md
new file mode 100644
index 00000000..b889df9b
--- /dev/null
+++ b/docs/languages/nodejs/digital-ocean.md
@@ -0,0 +1,72 @@
+---
+layout: docs
+section: "Language Guides"
+title: "Deploy a Node.js App to Digital Ocean"
+description: Deploy a Node.js app with an encrypted .env.vault file to Digital Ocean.
+redirect_from:
+ - /docs/integrations/digital-ocean/nodejs
+---
+
+{% include docs/headsup.html %}
+{% include docs/example_link.html url="https://github.com/dotenv-org/examples/tree/master/nodejs/digital-ocean" %}
+
+## Initial setup
+
+Create an `index.js` file, if you haven't already done so.
+
+##### index.js
+```js
+// index.js
+const PORT = process.env.PORT || 3000
+const http = require('http')
+const server = http.createServer((req, res) => {
+ res.statusCode = 200
+ res.setHeader('Content-Type', 'text/plain')
+ res.end(`Hello ${process.env.HELLO}`)
+})
+
+server.listen(PORT, () => {
+ console.log(`Server running on port:${PORT}/`)
+})
+```
+
+Commit that to code and deploy it to Digital Ocean.
+
+
+
+##### Browser
+{% include helpers/screenshot_browser.html url="/assets/img/docs/hello-undefined.png" www="yourapp.com on digital ocean" %}
+
+Once deployed, your app will say `'Hello undefined'` as it doesn't have a way to access the environment variable yet. Let's do that next.
+
+{% include docs/step_install_dotenv.md %}
+{% include docs/step_build_env_vault.md %}
+
+## Set DOTENV_KEY
+
+Fetch your production `DOTENV_KEY`.
+
+##### CLI
+```shell
+npx dotenv-vault@latest keys production
+# outputs: dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=production
+```
+
+Set `DOTENV_KEY` on Digital Ocean.
+
+##### UI
+{% include helpers/screenshot_browser.html url="/assets/img/docs/digitalocean-vars.png" www="digitalocean.com" %}
+
+## Deploy
+
+Commit those changes safely to code and deploy.
+
+That's it! On deploy, your `.env.vault` file will be decrypted and its production secrets injected as environment variables – just in time.
+
+You'll know things worked correctly when you see `'Loading env from encrypted .env.vault'` in your logs. If a `DOTENV_KEY` is not set (for example when developing on your local machine) it will fall back to standard [dotenv](https://github.com/motdotla/dotenv) functionality.
+
+{% include helpers/screenshot_browser.html url="/assets/img/cloudinary/dotenv_vault_digital_ocean_logs_encrypted_loading_env_vault_qcx4yp.png" www="digitalocean.com logs"%}
+
+{% include docs/welldone.html %}
diff --git a/docs/languages/nodejs/heroku.md b/docs/languages/nodejs/heroku.md
new file mode 100644
index 00000000..b150530b
--- /dev/null
+++ b/docs/languages/nodejs/heroku.md
@@ -0,0 +1,86 @@
+---
+layout: docs
+section: "Language Guides"
+title: "Deploy a Node.js App to Heroku"
+description: Deploy a Node.js app with an encrypted .env.vault file to Heroku.
+redirect_from:
+ - /docs/integrations/heroku/nodejs
+---
+
+{% include docs/headsup.html %}
+{% include docs/example_link.html url="https://github.com/dotenv-org/examples/tree/master/nodejs/heroku" %}
+
+## Initial setup
+
+Add a `Procfile` to run your Node.js app.
+
+##### Procfile
+```yaml
+web: node index.js
+```
+
+Your `index.js` file should look something like this.
+
+##### index.js
+```js
+// index.js
+const PORT = process.env.PORT || 3000
+const http = require('http')
+const server = http.createServer((req, res) => {
+ res.statusCode = 200;
+ res.setHeader('Content-Type', 'text/plain');
+ res.end(`Hello ${process.env.HELLO}`)
+});
+
+server.listen(PORT, () => {
+ console.log(`Server running on port:${PORT}/`);
+});
+```
+
+Commit that to code and push it to Heroku.
+
+##### CLI
+
+```shell
+heroku create
+git push heroku
+```
+
+Once deployed, your app will say `'Hello undefined'` as it doesn't have a way to access the environment variable yet. Let's do that next.
+
+{% include docs/step_install_dotenv.md %}
+{% include docs/step_build_env_vault.md %}
+
+## Set DOTENV_KEY
+
+Fetch your production `DOTENV_KEY`.
+
+##### CLI
+```shell
+npx dotenv-vault@latest keys production
+# outputs: dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=production
+```
+
+Set `DOTENV_KEY` on Heroku using the CLI.
+
+##### CLI
+```shell
+heroku config:set DOTENV_KEY=dotenv://:key_1234…@dotenv.org/vault/.env.vault?environment=production
+```
+
+Or use Heroku's UI.
+
+##### UI
+{% include helpers/screenshot_browser.html url="/assets/img/docs/heroku-config-vars.png" www="heroku.com" %}
+
+## Deploy
+
+Commit those changes safely to code and deploy.
+
+That's it! On deploy, your `.env.vault` file will be decrypted and its production secrets injected as environment variables – just in time.
+
+You'll know things worked correctly when you see `'Loading env from encrypted .env.vault'` in your logs. If a `DOTENV_KEY` is not set (for example when developing on your local machine) it will fall back to standard [dotenv](https://github.com/motdotla/dotenv) functionality.
+
+{% include helpers/screenshot_browser.html url="/assets/img/docs/heroku-logs-vault.png" www="heroku logs --tail" %}
+
+{% include docs/welldone.html %}