An as-yet-unnamed project by the U.S. Tax Court, creating an open-source Electronic Filing / Case Management System (EF-CMS) — software that allows case documents to be filed with the court, and for the court to manage cases. Work is being done by Flexion, which began in October 2018. The output of the most recent biweekly sprint can be found in the staging
branch of this repository, with daily work performed in Flexion's fork of this repository. For background, see the RFQ to procure agile software development services, which was awarded to Flexion in September 2018.
The main fork of this project in which most development is occurring is located at flexion ef-cms. Zenhub can be used to view the project board to see the github issues.
Artifacts for on-going development such as designs, research data, user workflows etc. are located in the wiki.
This is a React-based Javascript application. It’s housed in a monorepo that contains the front end (web-client/
) and the back end (efcms-service/
), 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 a Jenkins server, and that process is documented in SETUP.md
.
- There is a style guide available at http://localhost:1234/style-guide.
- The Javascript is marked up with JSDoc comments, so documentation can be built by running
jsdoc -r .
locally. - The API is documented via Swagger, and can be reviewed at http://localhost:3000/v1/swagger.
- The deployment process is documented in
SETUP.md
. - The end-of-sprint code review process is documented in
CODE_REVIEW.md
. - A glossary of terminology is found on Flexion's wiki.
- Flexion maintains a collection of UX documentation, including initial onsite user research, system user flows, user roles and permissions, and a content document.
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.
To run the same checks that run in Jenkins (except SonarQube) locally, using Docker containers, run the following:
./build-all.sh
This will run the lint, Shellcheck, audit, build, test, Cypress, Cerebral tests, Pa11y, etc. over all the components.
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
You can access the UI at http://localhost:1234 You can access the API at http://localhost:3000 You can access the dynamodb shell at http://localhost:8000/shell You can access the dynamodb-admin ui at http://localhost:8001 You can access s3 local at http://localhost:9000 You can access the style guide at http://localhost:1234/style-guide
The EF-CMS is comprised of two components: the API and the UI. Both must be run in order to function.
- Node v8.10.0
- npm 6.4.1
Both the web-client and efcms-service share code that exists in the shared
directory; therefore, before you can run either, you need to run npm install
inside the shared
directory.
cd shared && npm i
cd ../web-client && npm i
cd ../efcms-service && npm i
cd web-client && npm start
cd efcms-service && npm start
There are two login mechanisms available — the legacy mock login system, and a new one that emulates AWS Cognito.
You can log in using these usernames:
taxpayer
petitionsclerk
docketclerk
intakeclerk
respondent
seniorattorney
No password is required.
To run 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
intakeclerk1@example.com – intakeclerk5@example.com
respondent1@example.com – respondent5@example.com
seniorattorney1@example.com – seniorattorney5@example.com
The password for all accounts is:
Testing1234$
For instructions on how to build the DevOps pipeline and deploy the software to AWS, see SETUP.md.
Install the following for best results:
- https://atom.io/packages/language-javascript-jsx
- https://atom.io/packages/language-groovy
- https://atom.io/packages/linter-eslint
- https://atom.io/packages/prettier-atom (enable ESLint and StyleLint integrations in settings)
If using Internet Explorer 11 with Windows 7, download the Adobe Reader application at https://get.adobe.com/reader/. Install as directed. This will permit PDFs to be viewed in-browser with Internet Explorer 11.
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.
See CONTRIBUTING for additional information.
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.
Follow these steps for creating the end of sprint PRs for the court.
- Create a PR from develop -> staging
- Verify PR passed
- Merge PR and verify staging deployed correctly in Jenkins
- Create a PR from staging -> master
- Verify PR passed
- Merge PR and verify prod deployed correctly in Jenkins
- Create a PR from flexion/ef-cms master -> ustaxcourt/ef-cms staging
- When PR comments come in, make changes to master to fix the comments
- After the court approves and merges PR, merge master into develop
- 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