Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Eco Rewards Hub

Travis codecov David

API to ingest and process passenger travel transactions and calculate eco rewards.


Node +12 and a MySQL compatible database are required. The Ubuntu set up is:

curl -sL | sudo -E bash -
sudo apt-get install -y nodejs mariadb-server
# warning this will blank your root mysql password
sudo mysql -u root mysql -e "update user set authentication_string=password(''), plugin='mysql_native_password' where user='root'; flush privileges;"

Installing and running the service:

git clone
npm install --save eco-rewards-hub
npm run migrate
npm start

CLI commands

There are some CLI commands to help get set up:

npm run cli -- create-scheme [name]
npm run cli -- create-organisation [name] [schemeId]
npm run cli -- create-group [name] [organisationId]
npm run cli -- create-user [name] [email] [password] [role]
npm run cli -- export-all-members

Functional requirements

The scope of the API is defined by a number of user stories in cucumber format.

See features.

Non-functional requirements

  • Swagger documentation
  • Secure API access
  • Continuous integration with automated tests

Decision log

Date Decision Reasoning
2019-11-01 Implement with node.js Developers familiar with it, fast iteration speed
2019-11-01 Use a MySQL compatible database Developers familiar with it, widely used
2019-11-01 Use AWS It's convenient and widely used
2019-11-18 Do not use docker Unnecessary for a project this size
2019-11-18 Make the code open-source No need for private repository, cheaper tooling (Travis et al)
2019-11-18 Use travis CI It's free
2019-11-18 Use cucumber to capture functional requirements Track the evolution of requirements and use as a basis for functional tests
2019-11-18 Use use Koa Widely used and supports promises
2019-11-18 Use db-migrate Most widely used database migration tool
2019-11-18 Do not use an ORM Seems like overkill when there are so few models
2019-11-18 Bcrypt passwords Most secure, widely used method to salt passwords
2019-11-19 Basic auth for API access Simple, widely used and easy to implement
2019-11-21 Swagger documentation Comes with a slick UI and package to validate requests and responses
2019-11-21 Link based API responses Reduces duplication in API responses. See this post
2019-11-27 Travis deployment Simple, easy, as seen here
2019-11-27 PM2 process management Makes the travis deployment easier


This software is licensed under GNU GPLv3.


No description, website, or topics provided.






No packages published