You need Node.js installed and you'll need MongoDB installed and running.
on Mac, run:
$ brew install node
$ brew install mongodb
Ensure you have mongodb running (in a separate tab) with:
$ mongod
$ git clone [email protected]:johnstoecker/ironwagers.git
$ cd ironwagers
$ npm install
$ cp .env-sample .env
$ npm run first-time-setup
$ npm start
..and open up http://127.0.0.1:8000/
We use bcrypt
for hashing
secrets. If you have issues during installation related to bcrypt
then refer
to this wiki
page.
If the server crashes with 'unknow option: --inspect', your node version is out of date. Upgrade to at least v7.10.0
Open up Iterm2:
- In one tab:
sudo ~/Documents/personal/mongodb/bin/mongod
- In another tab (cmd+t):
cd ~/projects/ironwagers
git pull
npm start
- Open up Chrome and point to
localhost:8000
- Open up Sublime Text 2. CSS can be edited in client/stylesheets/components.less ...
- Once are happy with your changes, you can ctrl-c to shut down each tab. In the ironwagers folder, do a:
git status
git add client/stylesheets/components.less
git commit -m "CSS change -- giving tywin brown trousers"
git push
You can git add
whatever other files you like.
Having trouble with git push
? do:
git pull
hit the Esc button then type :wq
git push
IronWagers is built off of Aqua: Server side, Aqua is built with the hapi framework. We're using MongoDB as a data store.
The front-end is built with React. We use Redux as our state container. Client side routing is done with React Router. We're using Gulp for the build system.
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.
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
# > [email protected] first-time-setup /home/jedireza/projects/aqua
# > node first-time-setup.js
# MongoDB URL: (mongodb://localhost:27017/aqua)
# Root user email: [email protected]
# Root user password:
# Setup complete.
$ npm start
# > [email protected] start /Users/jedireza/projects/aqua
# > gulp react && gulp
# [23:41:44] Using gulpfile ~/projects/aqua/gulpfile.js
# ...
Now you should be able to point your browser to http://127.0.0.1:8000/ and see the welcome page.
nodemon
watches for changes in server code
and restarts the app automatically. gulp
and
webpack
watch the front-end files and
re-build those automatically too.
We also pass the --inspect
flag to Node so you have a debugger available.
Watch the output of $ npm start
and look for the debugging URL and open it in
Chrome. It looks something like this:
chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node
$ 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, both server-side and with the front-end build files.NPM_CONFIG_PRODUCTION=false
- This tells$ npm install
to not skip installingdevDependencies
, which we need to build the front-end files.
If you see something, say something!
Contributions are welcome.
Lab is part of the hapi ecosystem and what we use to write all of our tests.
$ npm test
# > [email protected] test /Users/jedireza/projects/aqua
# > lab -t 100 -S -T ./test/lab/transform -L --lint-options '{"extensions":[".js",".jsx"]}' ./test/lab/client-before.js ./test/client/ ./test/lab/client-after.js ./test/server/ ./test/lab/server-after.js ./test/misc/
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ..................................................
# ...............
# 865 tests complete
# Test duration: 6382 ms
# No global variable leaks detected
# Coverage: 100.00%
# Linting results: No issues
MIT
The Iron Bank will have its due.