Skip to content

Commit 91a358d

Browse files
Merge pull request #275 from CodeForPhilly/user-guide
Starter Site and Deployment GH Action for BDT User Guide
2 parents c289d0f + 13a83af commit 91a358d

File tree

8 files changed

+252
-7
lines changed

8 files changed

+252
-7
lines changed

.firebaserc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
"hosting": {
88
"builder-frontend": [
99
"bdt-builder"
10+
],
11+
"bdt-docs": [
12+
"bdt-docs"
1013
]
1114
}
1215
}

.github/workflows/deploy-docs.yml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: "Build and Deploy Docs to Firebase Hosting"
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- "docs/user-docs/**"
9+
10+
env:
11+
PROJECT_ID: "benefit-decision-toolkit-play"
12+
FIREBASE_TARGET: "bdt-docs"
13+
14+
jobs:
15+
build-and-deploy-docs:
16+
runs-on: ubuntu-latest
17+
18+
permissions:
19+
contents: read
20+
id-token: write
21+
22+
steps:
23+
- name: Checkout repository
24+
uses: actions/checkout@v4
25+
26+
# -------------------------
27+
# Install Python & MKDocs
28+
# -------------------------
29+
- name: Set up Python
30+
uses: actions/setup-python@v4
31+
with:
32+
python-version: "3.x"
33+
34+
- name: Cache Python dependencies
35+
uses: actions/cache@v4
36+
with:
37+
path: ~/.cache/pip
38+
key: ${{ runner.os }}-pip-${{ hashFiles('docs/user-docs/requirements.txt') }}
39+
restore-keys: |
40+
${{ runner.os }}-pip-
41+
42+
- name: Install Python dependencies
43+
run: |
44+
python -m pip install --upgrade pip
45+
pip install -r docs/user-docs/requirements.txt
46+
47+
- name: Build MKDocs site
48+
working-directory: docs/user-docs
49+
run: mkdocs build
50+
51+
# -------------------------
52+
# Install Node & Firebase CLI
53+
# -------------------------
54+
- name: Set up Node
55+
uses: actions/setup-node@v3
56+
with:
57+
node-version: "18"
58+
59+
- name: Install Firebase CLI
60+
run: npm install -g firebase-tools
61+
62+
# -------------------------
63+
# Authenticate to Firebase
64+
# -------------------------
65+
- id: auth
66+
uses: google-github-actions/auth@v2
67+
with:
68+
workload_identity_provider: projects/1034049717668/locations/global/workloadIdentityPools/github-actions-google-cloud/providers/github
69+
service_account: cicd-build-deploy-api@benefit-decision-toolkit-play.iam.gserviceaccount.com
70+
project_id: ${{ env.PROJECT_ID }}
71+
72+
- name: Deploy Docs to Firebase Hosting
73+
run: firebase deploy --only hosting:${{ env.FIREBASE_TARGET }}

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ node_modules/
7878
*.iws
7979

8080
.quarkus/
81-
8281
.devboxrc
83-
8482
.claude/settings.local.json
83+
docs/user-docs/site/

docs/user-docs/docs/index.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Introduction
2+
3+
## 1. What Is the Benefit Decision Toolkit?
4+
5+
The **Benefit Decision Toolkit (BDT)** is a low-code platform for building and publishing custom benefit eligibility screeners to the web.
6+
7+
Using BDT, organizations can quickly create screeners that help individuals determine whether they may qualify for specific benefits. The platform is designed to be simple, flexible, and accessible, enabling teams to:
8+
9+
- Build eligibility screeners without extensive engineering support
10+
- Configure eligibility logic using a guided interface
11+
- Deploy screeners for public or internal use
12+
- Provide users with clear, immediate eligibility results
13+
14+
BDT streamlines the process of translating policy rules into an interactive, user-friendly web experience.
15+
16+
---
17+
18+
## 2. What Is an Eligibility Screener?
19+
20+
An **eligibility screener** is a web-based form that:
21+
22+
1. Collects relevant information from a user
23+
2. Evaluates that information against defined eligibility rules
24+
3. Displays eligibility results based on the evaluation
25+
26+
Each screener consists of two primary components:
27+
28+
### User Interface (Frontend)
29+
30+
The user interface is the form that end users interact with. It:
31+
32+
- Collects required input data
33+
- Guides users through the screening questions
34+
- Displays eligibility results
35+
36+
### Eligibility Logic (Backend)
37+
38+
The eligibility logic defines how user inputs are evaluated. It:
39+
40+
- Applies benefit eligibility rules
41+
- Processes responses
42+
- Determines the final eligibility outcome
43+
44+
Together, these components allow organizations to convert benefit requirements into a structured, automated decision experience.
45+
46+
> TODO: Insert example screenshot of a screener
47+
48+
## Next Steps
49+
50+
The [User Guide](user-guide.md) walks through how to create, configure, and publish a screener using BDT. It provides step-by-step instructions and practical guidance to help you begin building and deploying your own eligibility screeners.

docs/user-docs/docs/user-guide.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
# Building an Eligibility Screener
2+
3+
This section explains how to create, configure, test, and publish an eligibility screener using the Benefit Decision Toolkit (BDT).
4+
5+
---
6+
7+
## 1. Screener Projects
8+
9+
After signing in, you will land on the **Screeners** view. This page displays all of your existing screener projects and serves as your starting point for creating and managing screeners.
10+
11+
From here, you can:
12+
13+
- View existing screeners
14+
- Open and edit a screener
15+
- Create a new screener project
16+
17+
To begin building a new screener, select **Create New Screener** and provide a descriptive name. The name should clearly reflect the benefit or set of benefits being screened.
18+
19+
> TODO: Add image of Screeners view
20+
21+
---
22+
23+
## 2. The Screener Dashboard
24+
25+
When you open a screener project, you are taken to the **Screener Dashboard**.
26+
27+
The Dashboard is the central workspace for your screener. From here, you can:
28+
29+
- Define eligibility logic
30+
- Build and edit the frontend form
31+
- Test the screener
32+
- Publish the screener
33+
34+
At the top of the page, the navigation bar contains four primary workflow tabs:
35+
36+
- **Manage Benefits**
37+
- **Form Editor**
38+
- **Preview**
39+
- **Publish**
40+
41+
These tabs represent the main stages of screener development.
42+
43+
> TODO: Add image of Screener Dashboard
44+
45+
---
46+
47+
## 3. Defining Eligibility Logic (Manage Benefits)
48+
49+
The **Manage Benefits** tab is where you define the eligibility logic used by your screener.
50+
51+
A single screener can evaluate eligibility for one or multiple benefits. The evaluation logic for each benefit is configured separately. This design a single BDT screener to screens users for multiple related programs, while keeping management of each benefit seperate.
52+
53+
> TODO: Add image of Manage Benefits tab
54+
55+
### 3.1 Benefits Overview
56+
57+
When you open the **Manage Benefits** tab, you will see a list of benefits associated with the screener.
58+
59+
From this page, you can:
60+
61+
- Create a new benefit
62+
- Edit an existing benefit
63+
- Remove a benefit
64+
65+
Selecting a benefit opens the **Configure Benefit** page.
66+
67+
> TODO: Add image of Configure Benefit page
68+
69+
---
70+
71+
## 4. Configuring a Benefit
72+
73+
The **Configure Benefit** page is where you define the rules that determine eligibility.
74+
75+
Eligibility logic in BDT is built using **Eligibility Checks**.
76+
77+
### What Is an Eligibility Check?
78+
79+
An **Eligibility Check** is a reusable rule component that:
80+
81+
- Accepts one or more user inputs
82+
- Evaluates a defined condition
83+
- Returns a boolean result (True or False)
84+
85+
For example, a rule might require applicants to be at least 65 years old. You could add a _Person Minimum Age_ check and configure the minimum age parameter to `65`.
86+
87+
By combining multiple checks, you define the full set of eligibility rules for a benefit.
88+
89+
Currently, a benefit evaluates as **eligible** only if _all_ of its eligibility checks return `True`.
90+
91+
---
92+
93+
## 5. Adding and Managing Eligibility Checks
94+
95+
On the Configure Benefit page, you will see a list of available eligibility checks.
96+
97+
Checks are organized into two categories:
98+
99+
- **Public Checks** – Prebuilt checks available to all BDT users
100+
- **Your Checks** – Custom checks that you have created
101+
102+
To use a check:
103+
104+
1. Select the check from the list
105+
2. Click **Add**
106+
3. Configure its parameters
107+
108+
Once added, the check appears in the benefit’s list of configured checks.
109+
110+
> TODO: Add image of check list
111+
> TODO: Add image of check parameter configuration
112+
113+
For information about creating reusable custom checks, see **Creating Custom Checks**.

docs/user-docs/mkdocs.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
site_name: Benefits Decision Toolkit
2+
3+
theme:
4+
name: material

docs/user-docs/requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
mkdocs = "1.6.1"
2+
mkdocs-material = "9.7.1"

firebase.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,18 @@
33
{
44
"target": "builder-frontend",
55
"public": "./builder-frontend/dist",
6-
"ignore": [
7-
"firebase.json",
8-
"**/.*",
9-
"**/node_modules/**"
10-
],
6+
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
117
"rewrites": [
128
{
139
"source": "**",
1410
"destination": "/index.html"
1511
}
1612
]
13+
},
14+
{
15+
"target": "bdt-docs",
16+
"public": "./docs/user-docs/site",
17+
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"]
1718
}
1819
],
1920
"emulators": {

0 commit comments

Comments
 (0)