/website-backend

The backend code for all our website-related apps

Primary LanguageJavaScriptMIT LicenseMIT

GitHub Workflow Status GitHub issues JavaScript Style Guide

Real Dev Squad API

Table of Contents

About the Project

This Project serves the backend APIs required for Real Dev Squad web projects. This project is built in Express.js.

Prerequisites

  • The application uses node-config(documentation) for managing config.
  • Create a new file: config/local.js. Override the required config values from config/development.js and config/default.js into config/local.js.
  • Register the application for GitHub OAuth to get the clientId and clientSecret. Add the callback URL as http://<HOSTNAME>:<PORT>/auth/github/callback
  • Create an application on FireStore and generate a service file. Add the service file credentials in the local config (or your env variables) as a string. Make sure you convert all the escape sequence (newline) - \n with \\n in private_key field.
  • For running the project locally, Firebase Local Emulator Suite can also be used instead of using the remote DB. Steps for setting it up: CONTRIBUTING.md - Using Firebase Emulator Locally

Starting Local Development

Please install yarn and volta

Why Volta?

To install Volta, please follow the process

Local Development Setup

Install all the packages using the following command:

yarn

Confirm correct configuration setup

This command should be successful, before moving to development.

yarn validate-setup

TDD Local Development

Head over to TDD Tests Files List, and add the list of your new (or old) test files.

You can use wildcard '*' in the filepaths

Run TDD in watch mode. Exiting this command will print the coverage report. Try to achieve 100% coverage.

yarn tdd:watch

Running a server in Dev mode

yarn dev

What happens in production:

  • Install packages
yarn
  • Run tests
yarn run test
  • Prune dev dependencies
npm prune --production
  • Run start command (with port information)
yarn start

Note: These are handled automatically behind the scene when pushing to Heroku

Check out our video on how to setup the backend here: Wiki link

Read more about contributing to the project: CONTRIBUTING