Node Go is a web application for playing the board game Go in real time
.circleci | ||
packages | ||
lerna.json | ||
package-lock.json | ||
package.json | ||
README.md |
Node Go
A browser application to play Go in real time.
Development Demo
The project in it's current state
Client only prototype
Setup
Local Repo
$ git clone https://github.com/sorrelbri/node-go.git
Install Deps
$ npm run bootstrap
Runs lerna bootstrap
command installing dependencies for project, development and package dependencies
Initialize Database
Download PostgreSQL
To verify PostgreSQL installation:
$ psql -V
Node Go API was built with version 11.4. See documentation for Postgres download.
Create Databases
$ psql
# psql(11.4)
CREATE DATABASE node-go;
CREATE DATABASE node-go-test; # testing database
Configure Environment
$ touch packages/server/.env
# .env
NODE_ENV=development
PORT=# set development port for API
REACT_ADDRESS=http://localhost:3000 # default
PG_CONNECTION_STRING=postgresql://localhost:5432/node-go
PG_CONNECTION_STRING_TEST=postgresql://localhost:5432/node-go-test
JWT_SECRET=# generate a secret key for JWT signing algorithm
TEST_SECRET=# same as above, for test environment
SALT_ROUNDS=# set number of salt rounds for bcrypt hashing function
DOMAIN=localhost
USER_ONE_PASSWORD=# credentials for testing with
USER_ONE_EMAIL=# same as above
Smoke test
$ lerna run test
Run Database Migrations
$ cd packages/server; npm run migrate; npm run seed
Running in development
$ cd packages/server
$ npm start # or if you have nodemon
$ nodemon
$ cd packages/play-node-go
$ npm start
Known Bugs
- server side move validation not complete, full game logic not implemented
- no authorization for game moves
- websocket connections may remain open, pooling prevents runaway leaks, but tests may hang
Roadmap 4/20
- Game logic module
- Game in progress caching
- Auth for games
- Game request creation
Features
- Realtime communications
- Multiple game settings
- Customizable board size
Built with
Management & Deployment
- Lerna
- CircleCI