Skip to main content

Multiple Environments

Here's a guide on how to use Nhost with multiple environments and how to set up a workflow around them.

For this example, we'll set up one production environment and one staging environment.

Git

Create a new Git repo and use the CLI and the nhost init command to initialize a new project.

Also, create a new branch called staging.

You should now have a Git repo with a main branch and a staging branch.

Nhost Cloud

To have two environments, we need to create two projects on Nhost Cloud.

Both projects must be connected to the same Git repo, but using different deployment branches.

Set your production project to use the main branch as the Deployment Branch and your staging project to use the staging branch as the Deployment Branch. This way, the production project will only deploy new changes to the main branch and the staging project will only deploy new changes to the staging branch.

Development

Local

Now, use the CLI to do local development. And use a specific feature branch while doing development.

Staging

Once you're ready to test your changes to staging, create a pull request from your feature branch to the staging branch. Then, merge the pull request to staging.

This will automatically trigger a new deployment to the staging project on the Nhost platform.

Production

Once you've tested your changes in the staging environment, you can create a new pull request from the staging branch to the main branch. Then, merge the pull request to main.

This will automatically trigger a new deployment to the production project on the Nhost platform.

Configuration Overlays

While Nhost uses a single file to deploy all of the environments connected to the same repository and branch, overlays allow you to accommodate for minor differences in those environments by allowing you to define rules to modify the base configuration. For details on overlays head to Configuration Overlays

Summary

Now you have two environments, one for staging and one for production. You can use this workflow to do local development, and test your changes in a staging environment before deploying them to production.