Use DMN and FEEL to create APIs and Screeners for public benefit rules.
Why hire a team of software engineers to codify rules that your benefit experts already know inside and out?
Why design a screening tool from scratch when your goal is simply to deploy a functionally accurate service as quickly as possible?
Benefit Decision Toolkit simplifies the management of eligibility rules and screeners so motivated subject matter experts can create useful tools with less hand-holding from traditional software teams.
Try out an example elegibility screener that was built with BDT, and directly interact with the API of the screener
If you are interested in getting involved with the project, check out our page on the Code For Philly website
Decision Model and Notation (DMN) is used to define the logic of the screener forms.
Form JS is used to define the user interface of the screener forms.
Quarkus is used to serve APIs.
Solid JS is used to build the frontend of the web app.
builder-api and builder-frontend comprise the web app used to build eligibility screeners.
screener-api and screener-frontend comprise the screener experience that the builder app deploys.
library-api contains a library of pre-built benefits and eligibility rules, suitable for including in custom screeners and for standing up a standalone eligibility API.
Clone this repository:
git clone https://github.com/CodeForPhilly/benefit-decision-toolkit.git
Go to the project's root directory:
cd benefit-decision-toolkit
To setup using the pre-defined Devbox configuration: *Note that this installs Devbox and Nix (if they aren't already installed).
bin/install-devbox && devbox run setup
If you don't want to use devbox/nix, then you can install system dependencies (e.g. JDK, Node, Maven) manually (see devbox.json for the list) and run:
bin/setup
If using devbox, then run the shell to load dependencies:
devbox shell
# Consider using direnv and/or the VS Code extensions (Devbox and Direnv) to automate this step.
Then start apps as needed, e.g.:
cd builder-frontend && npm run dev
You can find additional instructions to work on each app within the project in their respective directories, which are linked above.
Note that for the frontend apps, you will need a .env file from a teammate. Please do not commit this file to the repo.