Skip to content

elastic/opbeans-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

607f028 · Aug 12, 2024
Aug 9, 2024
Aug 12, 2024
Apr 12, 2021
Apr 13, 2021
Aug 5, 2024
Oct 18, 2019
May 25, 2022
Jun 10, 2019
Sep 11, 2018
Aug 12, 2024
Aug 31, 2018
May 2, 2024
Aug 5, 2024
Oct 24, 2023
Oct 24, 2023
Aug 6, 2019
Nov 6, 2018
Aug 12, 2024
Aug 12, 2024
Apr 12, 2021
Apr 12, 2021

Repository files navigation

Opbeans for Node.js

The Opbeans inventory management system is a demo app created and maintained by Elastic.

Build Status Lint status

Technology Stack

This application uses the following technologies:

Configuration

Setup the following environment variables:

  • NODE_ENV - The current Node environment (set to production to enable Elastic APM)
  • PORT - The port at which to run the Opbeans server (default: 3000)
  • PGHOST - PostgreSQL server host
  • PGPORT - PostgreSQL server port
  • PGUSER - PostgreSQL database username
  • PGPASSWORD - PostgreSQL database password
  • PGDATABASE - PostgreSQL database name (default: opbeans)
  • ELASTIC_APM_SERVICE_NAME - Elastic APM service name for the server app (default: opbeans-node)
  • ELASTIC_APM_SERVER_URL - APM Server URL (default: http://localhost:8200)
  • ELASTIC_APM_JS_SERVER_URL - Elastic APM Server URL for the client app (default: http://localhost:3000)
  • ELASTIC_APM_JS_SERVICE_NAME - Elastic APM App Name for the client app (defaults to name from opbeans-frontend package.json file
  • ELASTIC_APM_JS_SERVICE_VERSION - Elastic APM App Name for the client app (defaults to version from opbeans-frontend package.json file

For a complete list of Elastic APM agent environment variables, see the offical documentation

For a complete list of PostgreSQL environment variables see the official documentation.

Bootstrap

Populate the database with tables and basic data:

npm run db-setup

Generate random orders:

node db/generate_orders.js <num>

Where <num> is the amount of orders to create.

Start

npm start

Updating the client

If NODE_ENV isn't production, running npm install will also clone, install and build [opbeats-frontend]. If you ever want to update the opbeans-frontend, just run:

npm run client-update

Testing locally

The simplest way to test this demo is by running:

make test

Tests are written using bats under the tests dir

Publishing to dockerhub locally

Publish the docker image with

VERSION=1.2.3 make publish

NOTE: VERSION refers to the tag for the docker image which will be published in the registry

Demo notes

Trigger error

The app have a built-in bug that you can trigger by navigating to the path /is-it-coffee-time.

Trigger slowness

The app have two npm scripts for adding a new customer:

  • customer-add-ok, which will add a new customer
  • customer-add-redos, which fail adding a new customer and block the server from processing any other requests in the meantime.

Run either of the two scripts using npm run <name>.

If running inside docker, you can run it using docker compose, e.g:

docker compose exec opbeans-node npm run customer-add-redos

License

MIT


Made with ♥️ and ☕️ by Elastic.