Downstream is actively built and maintained by the Technologies & International Development (T+ID) Lab at Georgia Tech to support the Aggie platform and other research initiatives. Outside contributions are welcome!
Downstream is written in TypeScript, and compiles to Node.js JavaScript.
Node.js 12.9 or higher is required to use Downstream in your project.
Both members of the T+ID Lab and outside contributors should follow the workflow below:
-
Create a fork of the Downstream repo.
-
Install dependencies & development dependencies with
npm install
. -
Make changes to your fork of the Downstream repo.
-
Write tests for changes in the
src/
folder, if necessary. -
Write documentation in the
docs/
folder, if necessary. -
Open a Pull Request between your fork and the
develop
branch.
-
Assign yourself as a Reviewer to new Pull Request.
-
Review the PR and request changes as many times as needed.
-
Downstream uses semantic versioning. If the PR is ready, merge it into
develop
. Determine whether the changes constitute aPATCH
,MINOR
, orMAJOR
version bump. -
Pull down
develop
to your local clone (not fork) of the Downstream repo. -
From
develop
, run thenpm version <bump>
command:- Run
npm version patch
forPATCH
-level changes. - Run
npm version minor
forMINOR
-level changes. - Run
npm version major
forMAJOR
-level changes.
- Run
The npm version
script will check out master
; merge the latest changes from develop
into master
; commit and tag the bumped version; push the tagged commit to the Downstream repo; check out develop
once again; rebase develop
to master
; and finally push rebased develop
to the new Downstream repo.
Meanwhile, Travis CI will pick up the new tag pushed to master
and publish the latest version of Downstream to NPM for you automatically. Voila! The PR has been successfully merged.
Downstream uses Mocha as a testing framework, and ts-mocha
for TypeScript integration.
Run the Mocha tests for Downstream with one command:
npm test
Note: Tests for built-in components are disabled by default.
Built-in components rely on external resources such as external APIs that may change or require special access that may eventually be revoked. Contributors should be able to work on the rest of the Downstream repo without having to worry about such problems.
Enable and add to tests for built-in components while working on those components, but make sure to disable them when you are done. If you're an outside contributor working on a built-in component but don't have the API keys to test it, you may request in your Pull Request for the reviewer to run tests on your behalf using their keys.