Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

elastic/opbeans-node

Open more actions menu

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.

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 18

Morty Proxy This is a proxified and sanitized view of the page, visit original site.