Skip to content
An Electronic Filing / Case Management System.
JavaScript CSS Shell HCL HTML Dockerfile Smarty
Branch: staging
Clone or download
Latest commit 16f911c Oct 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci change resource classes back for e2e tests Oct 3, 2019
.github/PULL_REQUEST_TEMPLATE Change the merge-to-master template to a PR May 23, 2019
config add exp.yml files Sep 23, 2019
cypress 1171: removing case caption docket-record creation Aug 27, 2019
docs updated ZAP report, updated dep charts Oct 7, 2019
graph-generators adding image compression for generated dependency graph images Aug 16, 2019
shared added accurate test descriptions Oct 14, 2019
web-api Merge branch 'develop' of github.com:flexion/ef-cms into cleanup-time… Oct 7, 2019
web-client fixed inaccurate test description Oct 15, 2019
.dockerignore fixing elasticsearch in docker Oct 1, 2019
.eslintrc.js move slice into a util function Sep 4, 2019
.gitignore setup extraction & init of elasticsearch [skip ci] Sep 30, 2019
.prettierignore show ustaxcourt snyk badges Jun 17, 2019
.prettierrc.js initial commit Oct 11, 2018
CONTRIBUTING.md Add license, contributing, populate readme Sep 14, 2018
Dockerfile fixing elasticsearch in docker Oct 1, 2019
Dockerfile-CI no need for workdir Oct 2, 2019
LICENSE.md Add license, contributing, populate readme Sep 14, 2018
README.md Add some testing tips Aug 29, 2019
babel.config.js upgrade to corejs 3 Sep 9, 2019
build-all-local.sh exclude elements based on CI environment variable Aug 12, 2019
build-all.sh security fix in lock file Aug 28, 2019
cypress.json some possible cypress fixes Aug 9, 2019
docker-run.sh Enable websocket port for docker-run Oct 11, 2019
docker-zap.sh zap run Sep 23, 2019
generate-policy.sh Validate input when generating an IAM policy Aug 21, 2019
get-env.sh experimental env Sep 20, 2019
get-keys.sh experimental env Sep 20, 2019
options.prop trying to change cache Jan 30, 2019
package-lock.json verify that it's going to the orders-needed summary URL Oct 15, 2019
package.json added margin direction prop on button component Oct 7, 2019
policy.json.tpl adding missing commas Oct 14, 2019
reset-dependencies.sh disable sanitizer Sep 26, 2019
run-local.sh CI flag Oct 3, 2019
run-shellcheck.sh shellcheck updates Jul 26, 2019
setup-zap-auth.sh shellcheck updates Jul 26, 2019
verify-sonarqube-passed.sh removed debug mode Aug 12, 2019
wait-until-services.sh CI flag Oct 3, 2019
wait-until.sh fixing issue with download link Oct 1, 2019

README.md

Electronic Filing / Case Management System

An as-yet-unnamed project by the U.S. Tax Court, creating an open-source EF-CMS, which began in October 2018. All work can be seen in the staging branch. For background, see the RFQ to procure agile software development services.

develop

CircleCI

staging

CircleCI

API Front-End Shared Code
Coverage
Maintainability Rating
Security Rating
Coverage
Maintainability Rating
Security Rating
Coverage
Maintainability Rating
Security Rating

Known Vulnerabilities

The fork of this project in which the bulk of development is occurring is Flexion’s fork.

Artifacts for ongoing development such as designs, research data, user workflows etc. are located in the wiki.

Technical overview

This is a React-based JavaScript application. It’s housed in a monorepo that contains the front end (web-client/) and the back end (web-api/), with a third project housing resources that are shared between the front and back ends (shared/). It’s architected for Amazon Web Services, with a strong reliance on Lambda, scripted with Terraform. The project is heavily containerized, using Docker, and can be run locally, despite the serverless architecture. All CI/CD processes are found in management/. Deployment is done via CircleCI.

Documentation

For documentation about the CI/CD setup, API, style guide, UX, code review, etc., see docs/README.md.

AWS diagram

Dependency diagrams

Client:

Server:

Backlog

The backlog is stored in GitHub Issues in Flexion’s repository, not on this repository. Although they can be viewed like any other GitHub issues, they are managed on a scrum board that requires the ZenHub browser plugin to see.

Building everything

To exercise the CI/CD pipeline locally, run the following:

./build-all.sh

This will run the linter, Shellcheck, audit, build, test, Cypress, Cerebral tests, Pa11y, etc. over all the components.

Running / verifing the project via Docker

Assuming you have Docker installed, the following command will spin up a Docker container with the UI, API, local S3, local Dynamo, etc. all running inside it:

./docker-run.sh

Running this project locally without Docker

The EF-CMS is comprised of two components: the API and the UI. Both must be run in order to function.

Prerequisites

  • Node v10.15.3
  • npm v6.4.1
  • Ghostscript v9.23 (see Setup below)
  • ClamAV v0.101.2 (see Setup below)

Setup

Follow the installation prerequisites for Ghostscript4JS. macOS users can do the following:

  • brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e61385fb91ced20245d063f728401e9727293ce0/Formula/ghostscript.rb
  • echo 'export GS4JS_HOME="/usr/local/lib"' >> ~/.bash_profile
  • source ~/.bash_profile

For ClamAV, macOS users can do the following:

  • brew install clamav
  • cp /usr/local/etc/clamav/freshclam.conf.sample /usr/local/etc/clamav/freshclam.conf
  • sed -ie 's/^Example/#Example/g' /usr/local/etc/clamav/freshclam.conf (comments out Example in the freshclam.conf file)
  • echo 'export CLAMAV_CLAMSCAN_PATH="/usr/local/bin/clamscan"' >> ~/.bash_profile
  • source ~/.bash_profile
  • freshclam (installs virus definitions)

Both the front-end (/web-client) and API (/web-api) share code that exists in /shared. Before you can run either, you need to run npm install inside the top-level directory.

  • npm i

Terminal A

  • npm run start:api
Other Start Commands
  • Run cd web-client && npm start:client:no-scanner to start the UI without Dynamsoft (or if you don't have a scanner)

Terminal B

  • npm run start:client

Login and test users

There are two login mechanisms available — the legacy mock login system, and a new one that emulates AWS Cognito.

Mock login

You can log in using these usernames:

taxpayer
petitionsclerk
petitionsclerk1
docketclerk
docketclerk1
respondent
respondent1 - respondent4
practitioner
practitioner1 - practitioner4
seniorattorney
judgeArmen
judgeAshford
judgeBuch
judgeCarluzzo
judgeCohen

No password is required.

AWS Cognito

To use Cognito, start the web client with npm run dev:cognito (instead of npm start) You can then log in with:

petitioner1@example.com – petitioner5@example.com
petitionsclerk1@example.com – petitionsclerk5@example.com
docketclerk1@example.com – docketclerk5@example.com
respondent1@example.com – respondent10@example.com
practitioner1@example.com – practitioner10@example.com
seniorattorney1@example.com – seniorattorney5@example.com
judgeArmen@example.com
judgeAshford@example.com
judgeBuch@example.com
judgeCarluzzo@example.com
judgeCohen@example.com

The password for all accounts is:

Testing1234$

Editor configuration

Atom.io

Install the following for best results:

Using the application with Internet Explorer 11

If using Internet Explorer 11 with Windows 7, download and install Adobe Reader. This will permit PDFs to be viewed in-browser.

Forked dependencies

The software has several dependencies that required minor modifications to suit our needs. Rather than attempt to persuade their creators to adopt our modifications, those repositories have been forked within the U.S. Tax Court's GitHub organization, and the modifications made there. Those repositories are:

If these repositories are deleted, the build will fail. To verify that these repositories are still required, see each of the package.json files in the repo (e.g., find . -name package.json -exec grep "github:ustaxcourt" {} \; |awk 'BEGIN {FS=": ";}{print$2}' |uniq). Note that s3rver is a dependency of serverless-s3-local, and so it will not be found in our package.json files.

Contributing

See CONTRIBUTING for additional information.

Testing / Coverage Tips

  • Run all tests with npm run test
  • The web client, api, and shared code can be tested with npm run test:client, npm run test:api, and npm run test:shared, respectively.
  • TIP: When working through a single test, you can run a single test with jest /path/to/test/file.js (you may need to npm -i -g jest). Additionally, you can use --watch and --coverage flags to to continually run the specified test on save and provide a coverage report. For example: jest /path/to/test/file.js --watch --coverage

Example coverage output:

----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |        0 |        0 |        0 |        0 |                   |
----------|----------|----------|----------|----------|-------------------|
  • Stmts: % of statements executed in the code
  • Branch: % of control structures (for example, if statements) executed in the code
  • Funcs: % of functions executed in the code
  • Uncovered Line #s: lines not covered by tests

Public domain

This project is in the worldwide public domain. As stated in CONTRIBUTING:

This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.

All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.

Creating end-of-sprint pull requests

Follow these steps for creating the end of sprint PRs for the court.

  1. Create a PR from develop -> staging
  2. Verify PR passed
  3. Merge PR and verify staging deployed correctly in CircleCI
  4. Create a PR from staging -> master
  5. Verify PR passed
  6. Merge PR and verify prod deployed correctly in CircleCI
  7. Create a PR from flexion/ef-cms master -> ustaxcourt/ef-cms staging
  8. When PR comments come in, make changes to master to fix the comments
  9. After the court approves and merges PR, merge master into develop
  10. Create a release in GitHub as sprint_00x against master and put the same description planned to be in the PR description for the court
You can’t perform that action at this time.