Simplify Parse Server Cloud Code with Environment Variables in SashiDo
Tags: parseserver, environmentvariables, tutorial, development
Published: 2019-10-29 13:03:46

We are thrilled by all of the excitement that we see around Parse Server and Cloud Code development. We have seen many Cloud Code success stories, and at the same time challenges, for the Parse and SashiDo developers.

Today I would like to tell you about one significant addition to the SashiDo Platform,  the **Environment Variables**, and the new Cloud Code Development Model.

## Environment Variables

Every developer desires to build code that can be used in more than one environment. To do this in a clean and reusable fashion, the code should be able to accept configuration values at runtime. The configuration values customize the environment for the code: service credentials, custom URLs, file paths, and so forth. For example, many projects have distinct configurations for their development, test, and production environments.

In brief, using the Environment Variables is the best approach to design your code to work like an appliance. 

Check out the [12factor config](https://12factor.net/config) if you're interested in this field.

## Parse.Config vs Environment Variables

Many of you who have some experience with Parse would say: **"We have the `Parse.Config`, why we need another way to configure our apps?"**

Yes, this is almost correct, but not really. `Parse.Config` was built mainly for configuring the **Front-end** side of your applications, for things like feature flagging, changing the look and feel settings or managing some contact information.

`Parse.Config` is a fantastic way to configure your application on the fly, but there few issues that make the `Parse.Config` inappropriate for every case. For example, every setting in the `Parse.Config` is public readable, in other words, any sensitive data should not be stored there! 

All of this means that you need some secure way to store your credentials for `Twilio`, `Stripe`, `Mailgun` or any of the services you use in the Cloud Code.

In brief, the Environment Variables are the `Parse.Config` alternative for configuring the **Back-end** part of your application **securely**.

## How to use the Environment Variables in the app's Cloud Code

Well, since the Environment Variables are very popular and they are used almost everywhere, NodeJS supports them as well. Let me give you an example of how the Environment Variables change your code.

Configuring Mailgun `without Environment Variables`

```js
var mg = mailgun.client({
  username: 'api',
  key: "some_hardcoded_Key",
  public_key: "some_hardcoded_Public_Key"
});
```
And here is how the code will look like `with Environment Variables`.

```js
var mg = mailgun.client({
  username: 'api',
  key: process.env.MAILGUN_API_KEY,
  public_key: process.env.MAILGUN_PUBLIC_KEY
});
```

As you can see in the first example, the code has the hardcoded credentials which make it not portable and insecure.

## Setup your Environment Variables in the SashiDo's Dashboard

From the example above you already know how to use the Environment Variables in your application's Cloud Code. Adding them to the app environment is straightforward too. You only need to go to: `Application` -> `Runtime` -> `Environment Variables`

![environment-variables-in-sashido-dashboard](https://media-blog.sashido.io/content/images/2018/09/environment-variables-in-sashido-dashboard.png)

When you're done click on the **Save & Deploy** button, and that's it! :)

## Fin

Environment Variables bring a new level of simplicity to work with the Parse Server Cloud Code. I hope you'll enjoy it.

Happy Cloud Coding!