1.0.1 • Published 3 years ago

taproop-app v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

Taproom

Subpar is an application that lets builds a community around your golf, tracks your rounds, plays with friends, and ulimately replaces the paper & pencil scorecards.

Features

  • Login system with forgot password and reset password
  • Abusive login attempt detection
  • User roles for accounts, owners and admins
  • Admin groups with shared permissions
  • Admin level permissions that override group permissions
  • public scorecards
  • private scorecards
  • add friends
  • group tournaments

Technology

subpar is built with the hapi subparwork. We're using MongoDB as a data store. On the Frontend it's built with vanilla js and @zuul scoped modules.

Requirements

You need Node.js >=8.x and you'll need a MongoDB >=2.6 server running.

Installation

$ git clone https://github.com/jedireza/subpar.git
$ cd subpar
$ npm install

Configuration

Simply edit config.js. The configuration uses confidence which makes it easy to manage configuration settings across environments. Don't store secrets in this file or commit them to your repository.

Instead, access secrets via environment variables. We use dotenv to help make setting local environment variables easy (not to be used in production).

Simply copy .env-sample to .env and edit as needed. Don't commit .env to your repository.

First time setup

WARNING: This will clear all data in the following MongoDB collections if they exist: accounts, adminGroups, admins, authAttempts, sessions, statuses, and users.

$ npm run first-time-setup

# > subpar@0.0.0 first-time-setup /home/jedireza/projects/subpar
# > node first-time-setup.js

# MongoDB URL: (mongodb://localhost:27017/subpar)
# Root user email: jedireza@gmail.com
# Root user password:
# Setup complete.

Running the app

You'll need to run two commands, the first

1. Start the server

$ yarn start

# > subpar@0.0.0 start /home/jedireza/projects/subpar
# > ./node_modules/nodemon/bin/nodemon.js -e js,md server

# 09 Sep 03:47:15 - [nodemon] v1.10.2
# ...

Now you should be able to point your browser to http://127.0.0.1:9000/ and see the welcome message.

nodemon watches for changes in server code and restarts the app automatically.

With the debugger

$ npm run inspect

# > subpar@0.0.0 inspect /home/jedireza/projects/subpar
# > nodemon --inspect -e js,md server.js

# [nodemon] 1.14.12
# [nodemon] to restart at any time, enter `rs`
# [nodemon] watching: *.*
# [nodemon] starting `node --inspect server.js`
# Debugger listening on ws://127.0.0.1:9229/3d706d9a-b3e0-4fc6-b64e-e7968b7f94d0
# For help see https://nodejs.org/en/docs/inspector
# 180203/193534.071, [log,info,mongodb] data: HapiMongoModels: successfully connected to the db.
# 180203/193534.127, [log,info,mongodb] data: HapiMongoModels: finished processing auto indexes.
# Server started on port 9000

Once started with the debuger you can open Google Chrome and go to chrome://inspect. See https://nodejs.org/en/docs/inspector/ for more details.

Running in production

$ node server.js

Unlike $ npm start this doesn't watch for file changes. Also be sure to set these environment variables in your production environment:

  • NODE_ENV=production - This is important for many different optimizations.
  • NPM_CONFIG_PRODUCTION=false - This tells $ npm install to not skip installing devDependencies, which we may need to run the first time setup script.

Have a question?

Any issues or questions (no matter how basic), open an issue. Please take the initiative to read relevant documentation and be pro-active with debugging.

Running tests

Lab is part of the hapi ecosystem and what we use to write all of our tests.

$ npm test

# > subpar@0.0.0 test /home/jedireza/projects/subpar
# > lab -c -L

#  ..................................................
#  ..................................................
#  ..................................................
#  ..............

# 164 tests complete
# Test duration: 14028 ms
# No global variable leaks detected
# Coverage: 100.00%
# Linting results: No issues

Targeted tests

If you'd like to run a specific test or subset of tests you can use the test-server npm script.

You specificy the path(s) via the TEST_TARGET environment variable like:

$ TEST_TARGET=test/server/web/main.js npm run test-server

License

MIT

Don't forget

What you build with subpar is more important than subpar.