Environment Variables

Details for Backend Configuration

Assume most variables are required unless noted otherwise; see sample .env.example for sample usage in order to create a local .env file.

.env will need to be created for running backend locally (if not using local Docker workflow). Note that this will not be included in build or git history. You will need to configure EV in your host environment. If using Docker workflow for local development, you will want to make sure to set your local env vars in .env.local.docker

Application Level

Variable
Description
Allowed Values
Example

APP_NAME

Name for the application

string

"A/B Testing"

APP_SCHEMA

Protocol for local server

"http" or "https"

"http"

APP_PORT

Port number to the backend application

string

"3030"

APP_HOST

Domain to be used in Upgrade local codebase

string

"localhost"

APP_ROUTE_PREFIX

API route prefix

"/" + url safe string

"/api"

APP_BANNER

console log the basic info of the application as a banner log

boolean

TRUE

APP_DEMO

deploy as demo-supporting backend. Additionally, gives access to clear DB via "/clearDB"

boolean (default: false)

FALSE

CACHING_ENABLED

Enable cached query calls (current applies to GET /segments queries)

boolean (default: FALSE)

TRUE

Logging

Variable
Description
Allowed Values
Example

LOG_LEVEL

Log level for Winston logger

"error" | "warn" | "info" | "http" | "verbose" | "debug" | "silly"

"debug"

LOG_OUTPUT

log output

"dev" or empty

"dev"

TYPEORM + POSTGRES CONFIG

Variable
Description
Allowed Values
Example

TYPEORM_CONNECTION

Name for TypeORM connection to DB

string

"postgres"

TYPEORM_HOST (RDS_HOSTNAME)

TypeORM connection domain to be used in Upgrade local codebase Replace with RDS_HOSTNAME if deployed in AWS

string

"localhost"

TYPEORM_HOSTNAME_REPLICAS (RDS_HOSTNAME_REPLICAS)

TypeORM connection domains for any read-replica DB to be used in Upgrade local codebase Replace with RDS_HOSTNAME_REPLICAS if deployed in AWS

array of strings

[ "localhost1", "localhost2", "localhost3"]

TYPEORM_PORT (RDS_PORT)

Port to be used for connection

string

"5432"

TYPEORM_USERNAME (RDS_USERNAME)

Connection username

string

"postgres"

TYPEORM_PASSWORD (RDS_PASSWORD)

Connection password

string

"postgres"

TYPEORM_DATABASE (RDS_DB_NAME)

Name of database driver

string

"postgres"

TYPEORM_SYNCHRONIZE

Whether TypeORM models will synchronize with DB at startup

boolean

FALSE

TYPEORM_LOGGING

Log level for db queries

"query" | "schema" | "error" | "warn" | "info" | "log" | "migration"

"error"

TYPEORM_MAX_QUERY_EXECUTION_TIME

Number of milliseconds before TypeORM will log a "slow query" message. (Note: this does not timeout a query)

string

1000

TYPEORM_MAX_CONNECTION_POOL_SIZE

Maximum number of db connections to postgres

string

20 (defaults to 10)

PATH STRUCTURE FOR TYPEORM

Variable
Description
Allowed Values
Example

TYPEORM_MIGRATIONS

Path for all migration files to apply

string

src/database/migrations/**/*.ts

TYPEORM_MIGRATIONS_DIR

Path for migration root directory

string

src/database/migrations

TYPEORM_ENTITIES

Path for all entity models.

string

src/api/models/**/*.ts

TYPEORM_ENTITIES_DIR

Path for entities root directory

string

src/api/models

CONTROLLERS

Path for controllers

string

src/api/controllers/**/*Controller.ts

MIDDLEWARES

Path for middlewares

string

src/api/middlewares/**/*Middleware.ts

INTERCEPTORS

Path for interceptors.

string

src/api/interceptors/**/*Interceptor.ts

TYPEORM_SEED

Path for seeding data files

string

src/database/seeds/**/*.seed.ts

TYPEORM_FACTORY

Path for factories

string

src/database/factories/**/*.factory.ts

SWAGGER

Variable
Description
Allowed Values
Example

SWAGGER_ENABLED

Enables generation of swagger API docs output. (If not needed, build is faster when FALSE)

boolean

FALSE

SWAGGER_ROUTE

URL endpoint to access swagger docs (host + SWAGGER_ROUTE)

string

/swagger

SWAGGER_API

Code path for swagger API source

string

src/api/controllers/*.ts

Authorization Config

Variable
Description
Allowed Values
Example

GOOGLE_CLIENT_ID

Google Client Id credential provided from Google Cloud Console

string

<id>.apps.googleusercontent.com

DOMAIN_NAME

Limit Google-auth JWT credential token to be granted only user logins from a specific email domain (blank will allow all domains)

string

yourDomain.com

AUTH_CHECK

Enables Google-Auth credential Bearer token validation on public API requests

string

FALSE

AWS Configs

Variable
Description
Allowed Values
Example

SCHEDULER_STEP_FUNCTION

The arn value of the Schedular step function deployed in aws

string

arn:aws:states:us-east-1:781188149671:stateMachine:development-upgrade-experiment-schedular

AWS_REGION

AWS region for backend and frontend resource deployments

Valid AWS Region string

"us-east-1"

HOST_URL

AWS deployed backend endpoint url

string

"http://development-upgrade-experiment-app.eba-gp6psjut.us-east-1.elasticbeanstalk.com/api"

TOKEN_SECRET_KEY

Secret key shared with Scheduler Lambda function to decode JWT authorization token in request

string

carnegielearning

Email Config

Variable
Description
Allowed Values
Example

EMAIL_FROM

Addess that email will be sent from

string

dev@playpowerlabs.com

EMAIL_EXPIRE_AFTER_SECONDS

Milliseconds to retain availability of email

string

36000

EMAIL_BUCKET

S3 email bucket name deployed on aws

string

"upgrade-csv-upload"

Initialization

Variable
Description
Allowed Values
Example

ADMIN_USERS

Email addresses that will be inserted as users with "admin" or other role automatically in this environment

string list of email addresses, with ":" followed be "admin" or other role. delimited by "/\"

"user1@email.com:admin/\user2@email.com:admin/\user3@email.com:creator"

CLIENT_API_SECRET

Secret value shared with Client Library function to verify JWT authorization token payload in request

string

"api-token-secret"

CLIENT_API_KEY

Secret key shared with Client Library function to decode JWT authorization token in request

string

"api-token-key"

CONTEXT_METADATA

Variable
Description
Allowed Values
Example

CONTEXT_METADATA

Describes valid references to technical values from client platforms that will be connected to UpGrade experiments.

METRICS

Variable
Description
Allowed Values
Example

METRICS

Describes valid references to outcomes data from client platforms that will be connected to UpGrade experiments.