Experimental software for powering the measure the future 'motherships'. These are devices that collect from the 'scouts' and generate web reports.
Installation Instructions for Measure The Future can be found here.
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 [email protected]: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 for the backend:
$ go test -p 1 github.com/MeasureTheFuture/mothership/...
Testing for the frontend:
$ npm run test
- 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
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/.