A web dashboard for managing Cloud Foundry Apps
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.circleci Always run deploy, even if no-op Sep 14, 2018
controllers Log send email errors. Apr 13, 2018
deploy Always run deploy, even if no-op Sep 14, 2018
devtools Prettier Jan 3, 2018
helpers Drop unused cfenv variables. Apr 13, 2018
mailer fix up port for smtp Apr 17, 2018
manifests Remove offending end slash from URLs Apr 2, 2018
redirects/cg-deck Run prettier on codebase Dec 19, 2017
static_src Add "Error" to Not Found message to clarify Jan 4, 2018
templates Move Go templates into `templates dir for skinning Oct 12, 2017
.babelrc Start testing-server from within tests Jan 24, 2017
.cfignore Change from glide to dep Nov 16, 2017
.codeclimate.yml Merge pull request #1297 from 18F/pdb/cc2-step Dec 13, 2017
.eslintignore Update eslint so that prettier config can be used Dec 19, 2017
.eslintrc Remove react/jsx-indent=off from eslint Dec 19, 2017
.gitignore Rm opaqueToken conditionals Nov 16, 2017
.nvmrc Temporarily modify node version due to npm bug. Nov 14, 2016
.prettierignore Add package-lock.json to .prettierignore Dec 19, 2017
CONTRIBUTING.md Run prettier on codebase Dec 19, 2017
Gopkg.lock Remove redis setup and comments Nov 17, 2017
Gopkg.toml Change from glide to dep Nov 16, 2017
LICENSE.md Run prettier on codebase Dec 19, 2017
Procfile Change CF executable to dashboard Jul 21, 2016
README.md Upgrade prettier Dec 19, 2017
RELEASE.md Run prettier on codebase Dec 19, 2017
codecheck.sh Change from glide to dep Nov 16, 2017
docker-compose.yml Pull relict Session_Backend stuff Nov 16, 2017
env.sample Rename CF_SKIN to SKIN_NAME Nov 8, 2017
karma.conf.js Run prettier on codebase Dec 19, 2017
npm-shrinkwrap.json update npm to resolve codeclimate Dec 21, 2017
package.json update npm to resolve codeclimate Dec 21, 2017
server.go Drop unused cfenv variables. Apr 13, 2018
wdio.conf.js Run prettier on codebase Dec 19, 2017
webpack.config.js Run prettier on codebase Dec 19, 2017


18F Cloud Foundry Dashboard

CircleCI Code Climate

Environments: Production and Staging


This dashboard is a web application to manage cloud.gov organizations, spaces, services, and apps.

Learn more about cloud.gov.

Tech Stack

Backend Server

  • Go (version 1.9)

Front end application

  • Node (version 6.x.x)
  • React (version ^15.0.0)
  • Babel (version ^6.x.x)
  • Karma (version ^1.4.x)
  • Webpack (version ^1.x.x)

Setup Local Environment

There are two different ways to setup your local environment:

  1. Recommended Docker+PCFDev Instructions
  2. Manual Instructions


The cloud.gov dashboard is continuously deployed by CircleCI. To deploy manually:

Bootstrap Deployment Spaces

In each space that you plan on deploying, you need to create a user-provided-service.


# Create user provided service with config
# See https://github.com/18F/cg-dashboard/blob/master/helpers/env_vars.go for all env variables
cf create-user-provided-service dashboard-ups -p @<(cat <<EOF
  "CONSOLE_CLIENT_ID": "your-client-id",
  "CONSOLE_CLIENT_SECRET": "your-client-secret",
  "CSRF_KEY": "$(openssl rand -hex 32)",
  "SESSION_AUTHENTICATION_KEY": "$(openssl rand -hex 64)",
  "SESSION_ENCRYPTION_KEY": "$(openssl rand -hex 32)",
  "SMTP_HOST": "smtp.host.com",
  "SMTP_PORT": "25",
  "SMTP_USER": "username",
  "SMTP_PASS": "password",
  "SMTP_FROM": "from@address.com",

Create a Client with UAAC

  • Make sure UAAC is installed.
  • Target your UAA server. uaac target <uaa.your-domain.com>
  • Login with your current UAA account. uaac token client get <your admin account> -s <your uaa admin password>
  • Create client account:
uaac client add <your-client-id> \
 --authorities "uaa.none scim.invite cloud_controller.admin scim.read" \
 --authorized_grant_types authorization_code,client_credentials,refresh_token \
 --scope cloud_controller.admin,cloud_controller.read,cloud_controller.write,openid,scim.read \
 --autoapprove true \
-s <your-client-secret>
  • Unable to create an account still? Troubleshoot here


This project uses CircleCI.

  • You will need to set up the credentials to deploy to the dashboard-prod and dashboard-stage spaces.
    • In both spaces run: cf create-service cloud-gov-service-account space-deployer dashboard-deployer.
    • You will get the link for that space's credentials by running cf service dashboard-deployer.
    • You will need to set these secret variables in the CircleCI UI.
      • CF_USERNAME_PROD_SPACE - The username for the dashboard-prod deployer
      • CF_PASSWORD_PROD_SPACE - The password for the dashboard-prod deployer
      • CF_USERNAME_STAGE_SPACE - The username for the dashboard-stage deployer
      • CF_PASSWORD_STAGE_SPACE - The password for the dashboard-stage deployer
  • If you fork this project for your own use, you will need to use the CircleCI CLI UI to set the variables. (If you're forking just to make a pull request, there's no need to do this.)

Optional features

Some features can be enabled by supplying the right environment configuration.

New Relic Browser

If you have New Relic Browser, you can set your New Relic ID and Browser license key. These are public and can be set in your manifest file. Note that your Browser license key is different than your New Relic License Key (which should be treated as confidential).

# manifest.yml
  NEW_RELIC_ID: 12345

Google Analytics

If you have a GA site configured, specify your tracking ID as GA_TRACKING_ID in your environment.

# manifest.yml
  GA_TRACKING_ID: UA-123456-11