# Chartbrew Docs

# Prerequisites

NodeJS v14+

NPM

MySQL (v5+) or PostgreSQL (12.5+)

# Getting Started

# Installation & Setup

TIP

The setup doesn't work in Windows PowerShell or cmd.exe. If you're using Windows, please use a bash command line like Git Bash (opens new window) or cygwin (opens new window)

# Create a Chartbrew database

Chartbrew works with both MySQL and PostgreSQL. You can use any of the two, but you need to create a database first.

Follow the instruction here >>

# Get and setup the project

git clone https://github.com/chartbrew/chartbrew.git
cd chartbrew && npm run setup

# Set up the environmental variables

All the environmental variables that need to be set are found in the .env-template file in the root folder of the project. If you ran the setup above, you should already have a .env file there as well. If not, copy the template file and rename it .env.

Make sure you fill out the production and development sections accordingly.

See the full list of variables here

# Run the project locally

Open two terminals, one for front-end and the other for back-end.

# frontend
cd client/
npm run start

# backend
cd server/
npm run start-dev

# Changing the docs

Chartbrew uses Vuepress (opens new window) and you can check their documentation to see how it works. You can start the documentation development using the command below:

cd chartbrew
npm run docs:dev

# Tech stack

Backend

Frontend

Docs

# Environmental variables

The table below shows the production variables. The development variables have the same naming, but they are appended with _DEV (example: CB_DB_NAME -> CB_DB_NAME_DEV)

Variable Default value Description
CB_DB_NAME

required
chartbrew The name of the database
CB_DB_USERNAME

required
No default The username of the user that has access to the database
CB_DB_PASSWORD No default The password associated with the database user
CB_DB_HOST

required
localhost The host address where the database is located
CB_DB_PORT 3306 The port of the hosting address
CB_DB_DIALECT

required
mysql Which database to use between mysql and postgres
CB_DB_CERT No default If your DB requires an SSL connection, use this variable to provide the string value of the certificate
CB_SECRET

required
change_to_random_string A secure string which is used to encrypt the data in the database
CB_API_HOST

required
localhost The address where the server app is running from. This variable is used internally by the server app.
This value is overwritten by the PORT variable (if set)
CB_API_PORT

required
4019 The port where the server app is running from. This variable is used internally by the server app
REACT_APP_CLIENT_HOST

required
http://localhost:4018 The full address where the client app is running from. This variable is used in the client app and it's populated during the building process.

Note The app needs to be restarted/rebuilt when this value is changed.
REACT_APP_API_HOST

required
http://localhost:4019 The full address where the server app is running. This variable is used by the client app.

Note The app needs to be restarted/rebuilt when this value is changed.
CB_MAIL_HOST smtp.gmail.com The server host of the email provider
CB_MAIL_USER No default The username used to log in on the email server
CB_MAIL_PASS No deafult The password used to log in on the email server
CB_MAIL_PORT 465 The port used to connect to the email server
CB_MAIL_SECURE true true - Use SSL to connect to the email server

false - Use TLS to connect to the email server
CB_ADMIN_MAIL [email protected] The email address used to send the emails from
CB_RESTRICT_TEAMS 0 0 - New users will have their own team created on sign-up.

1 - New users don't have a team on signup and can't create their own.
CB_RESTRICT_SIGNUP 0 0 - Anyone can create accounts from the signup page

1 - New users can only sign up using invite links
CB_GOOGLE_CLIENT_ID No default Google app Client ID generated from the Console

(Needed for Google integrations)
CB_GOOGLE_CLIENT_SECRET No default Google app Client Secret generated from the Console

(Needed for Google integrations)
CB_BACKEND_WORKERS 4 Some background tasks in Chartbrew will use workers to spread work on multiple threads. Still testing, but for best performance, set this to the number of threads your CPU has