Mothership
Experimental software for powering the measure the future 'motherships'. These are devices that collect from the 'scouts' and generate web reports.
Copmilation/installation (Edison)
Installation Instructions for Measure The Future can be found here.
Compilation/installation (OSX)
The following steps will configure an OSX machine as a development environment for the mothership:
- Download and Install Go 1.6.3
- Download and Install PostgreSQL
- Create SSL keys for PostgreSQL
$ cd ~/Library/Application\ Support/Postgres/var-9.4/
$ openssl req -new -text -out server.req
$ openssl rsa -in privkey.pem -out server.key
$ rm privkey.pem
$ openssl req -x509 -in server.req -text -key server.key -out server.crt
$ chmod og-rwx server.key
- Edit postgres config by uncommenting the line #sss = on (Remove the #)
$ vim postgresql.conf
- Restart Postgres.app
- Create Databases
$ psql
postgres=# create database mothership;
postgres=# create database mothership_test;
postgres=# create user mothership_user with password 'password';
postgres=# ALTER ROLE mothership_user SET client_encoding TO 'utf8';
postgres=# ALTER ROLE mothership_user SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE mothership_user SET timezone TO 'UTC';
postgres=# GRANT ALL PRIVILEGES ON DATABASE mothership TO mothership_user;
postgres=# GRANT ALL PRIVILEGES ON DATABASE mothershop_test TO mothership_user;
postgres=# \q
- Download and Install Node v4.4.7
- Update NPM
$ sudo npm install npm -g
- Create project folder and get source from Github
$ mkdir mtf
$ cd mtf
$ mkdir src
$ cd src
$ git clone git@github.com:MeasureTheFuture/mothership.git
$ cd ..
$ export GOPATH=`pwd`
$ go get github.com/labstack/echo
$ go get github.com/lib/pq
$ go get github.com/onsi/ginkgo
$ go get github.com/onsi/gomega
$ go get -u github.com/mattes/migrate
- Build the backend, create config file and migrate databases.
$ go build mothership
$ cp src/mothership/mothership.json_example mothership.json
$ ./bin/migrate -url postgres://mothership_test@localhost:5432/mothership -path ./src/mothership/migrations up
$ ./bin/migrate -url postgres://mothership_test@localhost:5432/mothership_test -path ./src/mothership/migrations up
- Run the front end. (ctrl-c stops the mothership)
$./mothership
- In a new terminal, build the frontend.
$ cd src/mothership/frontend
$ npm install
$ npm run build
- Visit localhost:1323 in your browser.
Testing
Testing for the backend:
$ go test -p 1 github.com/MeasureTheFuture/mothership/...
Testing for the frontend:
$ npm run test
TODO
- Implement summarise proccess - update scout summaries with unprocessed interaction data.
- Add control endpoint for getting scout summary data for the interface.
- Add 'measure' button to the interface.
- Update the interface to display visitor count from backend.
- Mothership generates internal server error (500) when no scouts are present.
- Ability to stop measuring from the UI
- Heatmap rendering
- Heatmap number crunching
- Finish pending scout interaction tests
- Need to render heatmap scale.
- Better identification that the UI is in measuring mode / working
- Need to generate histogram / timeline.
- Write tests for the frontend components
- Tidy up responsive design (for small screensizes)
- Need to calculate and store heatmap / statistics overtime.
- Write tests for summarise and heatmap generation. summarise_test
- Write tests for all the other cases when an AABB intersects a shaft (shaft_test)
- An easier way to tweak the OpenCV settings for best results
License
Copyright (C) 2016, Clinton Freeman
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.