Basic Node API

Welcome to your Basic Node API Repository. Use this to start your own Greenfield Project using nodejs, express and common industry standards.

This repository assumes a handful of industry practices and standards. We strive to keep you up to date in the industry and as a result, we have made some opinions for you so that you don't have to; you're welcome.

The following working examples can be found in this project template.

  • CRUD routes for a single resource

  • A Knex model providing CRUD methods for DB operations

  • Okta authentication verification middleware

  • eslint setup and prettier formating.

  • Jest tests for routes with mocking of database calls

  • Inline Swagger docs with a live route at /api-docs

  • Github workflow config setup to run linting, tests and upload coverage to code climate

  • docker-compose file for spinning up postgresql db. (Win10 Home requires WSL)

API doc

The documentation can be viewed in the /api-docs route of your deploy (or locally). See example

Read more about the setup of config/jsdoc.md

Requirements

Labs teams must follow all Labs Engineering Standards.

Getting Started

Here's a brief walkthrough of setting up a Node API application:

Environment Variables

The following environment variables are required. The dotenv library is installed which will allow you to use a .env file.

  • PORT - API port (optional, but helpful with FE running as well)

    • The following ports are whitelisted for use with okta

      • 3000

      • 8000

      • 8080

  • DS_API_URL - URL to a data science api. (eg. https://ds-bw-test.herokuapp.com/)

  • DS_API_TOKEN - authorization header token for data science api (eg. SUPERSECRET)

  • DATABASE_URL - connection string for postgres database

  • OKTA_URL_ISSUER - The complete issuer URL for verifying okta access tokens. https://example.okta.com/oauth2/default

  • OKTA_CLIENT_ID - the okta client ID.

See .env.sample for example values.

Setup postgres

There are 3 options to get postgresql installed locally [Choose one]:

  1. Download and install postgresql directly from the main site

    • make note of the port, username and password you use to setup the database.

    • Connect your client to the server manually using the values previously mentioned

    • You will need to create a database manually using a client.

    • Make sure to update the DATABASE_URL connection string with the values for username/password, databasename and server port (if not 5432).

  2. Setup a free account at ElephantSQL

    • Sign up for a free Tiney Turtle plan

    • copy the URL to the DATABASE_URL .env variable

    • make sure to add ?ssl=true to the end of this url

  3. Use docker. Install for your platform

    • run: docker-compose up -d to start up the postgresql database and pgadmin.

    • Open a browser to pgadmin and you should see the Dev server already defined.

    • If you need to start over you will need to delete the folder $ rm -rf ./data/pg as this is where all of the server data is stored.

      • if the database api-dev was not created then start over.

Setup the application

From your project locally run the following commands:

  • run: npm install to download all dependencies.

  • run: cp .env.sample .env and update the enviornment variables to match your local setup.

  • run: npm run knex migrate:latest to create the starting schema.

  • run: npm run knex seed:run to populate your db with some data.

  • run: npm run tests to confirm all is setup and tests pass.

  • run: npm run watch:dev to start nodemon in local dev enviornment.

Make sure to update the details of the app name, description and version in the package.json and config/jsdoc.js files.

Contributing

See the contributing doc for more info.

Last updated

Was this helpful?