* feat: show open boilerplate prs on dashboard fix: rest of boilerplate server changes fix: more fix: other * fix: update lib functions * fix: retrofitted one-off scripts * feat: added rateLimit for requests * fix: reduce time * fix: put limiter inside each route * fix: make client show when rated limited * fix: removed unused probot from app * fix: renamed folders * fix: consolidate config.js and constants.js * chore: update octokit to latest version * fix: remove invalid file * fix: refactored update-db.js * feat: add fcc logo * fix: logo url * fix: remove Home link * fix: change link colors * fix: added rate limiter to landing page * fix: ran npm install in client to create package-lock.json * fix: correct typo in doc Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com> * fix: Replace favicon, Gitter => Discord Signed-off-by: nhcarrigan <nhcarrigan@gmail.com> * fix: add extra linting guidance to package.json * Ignore contributor app Signed-off-by: nhcarrigan <nhcarrigan@gmail.com> * fix: revert linting rules for client * fix: add skip_preflight_check=true for tests Co-authored-by: Kristofer Koishigawa <scissorsneedfoodtoo@gmail.com> Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com> Co-authored-by: Kris Koishigawa <scissorsneedfoodtoo@gmail.com> Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const Joi = require('joi');
 | 
						|
const path = require('path');
 | 
						|
require('dotenv').config({ path: path.resolve(__dirname, '../.env') });
 | 
						|
 | 
						|
// define validation for all the env vars
 | 
						|
const envVarsSchema = Joi.object({
 | 
						|
  NODE_ENV: Joi.string()
 | 
						|
    .allow(['development', 'production', 'test', 'provision'])
 | 
						|
    .default('development'),
 | 
						|
  PORT: Joi.number().default(3001),
 | 
						|
  MONGO_HOST: Joi.string()
 | 
						|
    .required()
 | 
						|
    .description('Mongo DB host url'),
 | 
						|
  GITHUB_USERNAME: Joi.string().required(),
 | 
						|
  GITHUB_ACCESS_TOKEN: Joi.string().required(),
 | 
						|
  REPOSITORY_OWNER: Joi.string().required(),
 | 
						|
  REPOSITORY: Joi.string().required(),
 | 
						|
  DEFAULT_BASE: Joi.string().required(),
 | 
						|
  PRODUCTION_RUN: Joi.boolean().default(false)
 | 
						|
})
 | 
						|
  .unknown()
 | 
						|
  .required();
 | 
						|
 | 
						|
const { error, value: envVars } = Joi.validate(process.env, envVarsSchema);
 | 
						|
if (error) {
 | 
						|
  throw new Error(`Config validation error: ${error.message}`);
 | 
						|
}
 | 
						|
 | 
						|
const config = {
 | 
						|
  env: envVars.NODE_ENV,
 | 
						|
  mongo: {
 | 
						|
    host: envVars.MONGO_HOST
 | 
						|
  },
 | 
						|
  github: {
 | 
						|
    id: envVars.GITHUB_USERNAME,
 | 
						|
    secret: envVars.GITHUB_ACCESS_TOKEN,
 | 
						|
    owner: envVars.REPOSITORY_OWNER,
 | 
						|
    freeCodeCampRepo: envVars.REPOSITORY,
 | 
						|
    defaultBase: envVars.DEFAULT_BASE
 | 
						|
  },
 | 
						|
  oneoff: {
 | 
						|
    productionRun: envVars.PRODUCTION_RUN
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
module.exports = config;
 |