You are on page 1of 4

Sign up

smith / opbeans-node
forked from elastic/opbeans-node

The Opbeans inventory management system demo app for Node.js


MIT License
0 stars 28 forks

Star
Watch

Code
Pull requests
Actions
Projects
Security
Insights

master
Go to file

This branch is 7 commits behind elastic:master.


Pull request Compare

View code

README.md

build passing

Opbeans for Node.js


The Opbeans inventory management system is a demo app created and maintained by Elastic.
build passing code style standard

Technology Stack
This application uses the following technologies:
Node.js
Express
PostgreSQL
Redis
React (via opbeans-frontend)
React Router (via opbeans-frontend)
Redux (via opbeans-frontend)
Elastic APM

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.
In development, you can create a .env file in the root of the project containing all your secret environment variables.
See dotenv for details.

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.


Releases
No releases published

Languages

TSQL 88.4% JavaScript 9.4% Python 1.1% Shell 0.5% Makefile 0.5% Dockerfile 0.1%

© 2020 GitHub, Inc.


Terms
Privacy
Security
Status
Help
Contact GitHub
Pricing
API
Training
Blog
About

You might also like