Sign inSign up

opbeans/opbeans-node

By opbeans

•Updated 4 months ago

The Node implementation of the Opbeans demo app for Elastic APM

Image
0

10K+

opbeans/opbeans-node repository overview

⁠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.

Tag summary

Content type

Image

Digest

sha256:574251bbc…

Size

86.5 MB

Last updated

4 months ago

docker pull opbeans/opbeans-node