Pinpoint is a membership application management service geared towards helping university clubs and hackathons decide on the best applicants out of their pool of candidates.
See the project outline and minimum viable product in our wiki.
The project is structured as follows:
clientis the JavaScript client for the user-facing Pinpoint API.coreis the primary Pinpoint gRPC-based service, and manages application logic and the database.frontendis the Pinpoint web application.gatewayis an HTTP server that exposes Pinpoint functionality via a RESTful API.protobufcontains protobuf definitions for Pinpoint Core's gRPC service as well as the generated Golang API.utilsis a Golang package that contains utility functions shared bycoreandgateway.
To get started, make sure you have the following installed:
- Golang 1.11+
- Node.js 8.12+
- protobuf v3.6+
- Docker CE and docker-compose
To fetch the codebase, use go get:
$> go get github.com/ubclaunchpad/pinpointYou will need dep and npm installed.
$> make depsThe Makefile offers a lot of useful commands for development. Run
make help to see the commands that are available.
$> make pinpoint-core
$> make pinpoint-gateway$> make webExternal dependencies, such as the database, can be started and stopped using docker-compose, which leverages available Docker containers:
$> make testenv # start up service containers
$> make testenv-stop # stop containers
$> make clean # remove containersPinpoint services can be started up using the following commands in two separate shell sessions:
$> make core
$> make gatewayBy default, provided certificates in dev/certs are used. These were generated using certstrap.
To run enable the local monitoring suite:
$> make monitoring
$> make core FLAGS=--logpath=tmp/core.log
$> make gateway FLAGS=--logpath=tmp/gateway.loggateway and core uses the Golang API within the protobuf directory to communicate. If you make changes to the protobuf definitions in the protobuf directories, you will need to update this API:
$> make proto # generate new Golang API
$> make check # ensure everything compilesYou will need protobuf v3.6+ and the Golang plugin installed.
The script also uses counterfeiter to generate mocks.