Skip to content

Commit e28db75

Browse files
Merge pull request #213 from CodeForPhilly/remove-screener-codebase
2 parents f4b168c + cb5c837 commit e28db75

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+9
-6716
lines changed

.firebaserc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
"targets": {
66
"benefit-decision-toolkit-play": {
77
"hosting": {
8-
"screener-frontend": [
9-
"bdt-screener"
10-
],
118
"builder-frontend": [
129
"bdt-builder"
1310
]

.github/workflows/deploy-screener-api.yml

Lines changed: 0 additions & 86 deletions
This file was deleted.

.github/workflows/deploy-screener-frontend.yml

Lines changed: 0 additions & 70 deletions
This file was deleted.

CLAUDE.md

Lines changed: 4 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
77
Benefit Decision Toolkit (BDT) is a platform for creating benefit eligibility screeners using Decision Model and Notation (DMN) and Form-JS. The project consists of four main applications:
88

99
- **library-api**: Standalone Quarkus API that generates REST endpoints from DMN files (Kogito-based)
10-
- **builder-api + builder-frontend**: Web application for creating and managing screeners (admin tool)
11-
- **screener-api + screener-frontend**: Public-facing screener evaluation interface (end-user tool)
10+
- **builder-api + builder-frontend**: Web application for creating and managing screeners (admin tool). Also deploys a public-facing screener evaluation interface (end-user tool).
1211

1312
The core concept: Subject matter experts can define eligibility rules using visual DMN decision tables, which automatically become REST APIs and interactive screeners without traditional software development.
1413

@@ -54,12 +53,10 @@ cd builder-frontend && npm run dev
5453
```bash
5554
# Build specific API
5655
cd builder-api && mvn clean package
57-
cd screener-api && mvn clean package
5856
cd library-api && mvn clean package
5957

6058
# Build frontend
6159
cd builder-frontend && npm run build
62-
cd screener-frontend && npm run build
6360

6461
# Clean rebuild (useful when DMN files change)
6562
mvn clean compile
@@ -70,7 +67,6 @@ mvn clean compile
7067
```bash
7168
# Run Java tests for an API
7269
cd builder-api && mvn test
73-
cd screener-api && mvn test
7470

7571
# Run library-api tests with Bruno (API testing tool)
7672
cd library-api/test/bdt && bru run
@@ -100,16 +96,6 @@ This is a monorepo containing four distinct applications that work together:
10096
- Features: Form editor, DMN decision editor, benefit configuration, preview, publish
10197
- Routes: `/` (home), `/project/:id` (editor), `/check/:id` (DMN editor)
10298

103-
4. **screener-api** (Lightweight Quarkus REST API, ~750 LOC)
104-
- Read-only runtime for serving published screeners
105-
- Executes pre-compiled DMN decisions against user input
106-
- Two endpoints: GET screener schema, POST evaluate decisions
107-
108-
5. **screener-frontend** (Solid.js, Form-JS Viewer)
109-
- Public-facing screener with real-time eligibility evaluation
110-
- Debounced auto-submission as user fills form
111-
- Displays nested results (benefits → eligibility checks)
112-
11399
### Data Flow Architecture
114100

115101
```
@@ -119,12 +105,6 @@ Admin → builder-frontend → builder-api → Firebase (Firestore + Storage)
119105
Compile DMN → Store compiled JAR
120106
121107
Publish screener
122-
123-
Screener Flow:
124-
User → screener-frontend → screener-api → Firestore (read metadata)
125-
→ Cloud Storage (read form schema + DMN JAR)
126-
→ KIE Runtime (evaluate DMN)
127-
→ Return results
128108
```
129109

130110
### Key Architectural Patterns
@@ -138,23 +118,20 @@ User → screener-frontend → screener-api → Firestore (read metadata)
138118
**DMN Processing Differences**:
139119
- **library-api**: Uses Kogito (automatic code generation at build time)
140120
- **builder-api**: Uses KIE DMN directly (runtime compilation from XML)
141-
- **screener-api**: Uses KIE DMN (loads pre-compiled JAR artifacts)
142121

143122
**Storage Strategy**:
144123
- **Metadata** (relationships, configs): Firestore NoSQL collections
145124
- **Large artifacts** (DMN files, form schemas, compiled JARs): Google Cloud Storage
146125
- **Reference data** (location lookups): Embedded SQLite databases
147126

148127
**Authentication**:
149-
- **builder-api/builder-frontend**: Firebase Auth required (user ownership model)
150-
- **screener-api/screener-frontend**: Public/anonymous access
128+
- **builder-api/builder-frontend**: Firebase Auth required (user ownership model). Specific endpoints starting with /published are publicly accessible.
151129
- **library-api**: No authentication (standalone utility)
152130

153131
### Technology Stack
154132

155133
**Backend (All APIs)**:
156134
- **builder-api**: Quarkus 3.23.0, Java 21, KIE DMN 10.0.0
157-
- **screener-api**: Quarkus 3.23.0, Java 21, KIE DMN 10.0.0
158135
- **library-api**: Quarkus 2.16.10, Java 17, Kogito 1.44.1
159136

160137
**Frontend**:
@@ -218,8 +195,6 @@ The project uses `.env` files for configuration:
218195
# Service-specific .env files
219196
builder-api/.env
220197
builder-frontend/.env
221-
screener-api/.env
222-
screener-frontend/.env
223198

224199
# Setup script copies .env.example → .env
225200
bin/setup
@@ -238,17 +213,6 @@ bin/setup
238213
- Key components: `ProjectEditor`, `KogitoDmnEditorView`, `FormEditor`
239214
- API client: `src/api/` (uses `authFetch` wrapper)
240215

241-
**screener-api**:
242-
- Port: Configured via `QUARKUS_HTTP_PORT` env var
243-
- Debug: Disabled by default in process-compose
244-
- Main classes: `ScreenerResource`, `DecisionResource`
245-
- Lightweight (minimal business logic)
246-
247-
**screener-frontend**:
248-
- Dev server: `npm run dev`
249-
- Main component: `Screener.tsx` (form + results)
250-
- No authentication required
251-
252216
### Common Development Scenarios
253217

254218
**Add a new benefit to library-api**:
@@ -262,7 +226,7 @@ bin/setup
262226
1. Start all services: `devbox services up`
263227
2. Open builder-frontend (typically http://localhost:5173)
264228
3. Create project → Edit form → Add/configure benefits → Preview → Publish
265-
4. Access published screener via screener-frontend
229+
4. Access published screener via Public URL
266230

267231
**Debug DMN evaluation issues**:
268232
1. Check DMN syntax in VS Code with DMN extension
@@ -368,7 +332,7 @@ This hook will:
368332
- Check `library-api/CLAUDE.md` for detailed DMN import hierarchy
369333

370334
**Firebase Dependency**:
371-
- builder-api and screener-api require Firebase configuration
335+
- builder-api requires Firebase configuration
372336
- Use emulators for local dev (no real Firebase project needed)
373337
- Production requires actual Firebase project setup
374338

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ If you are interested in getting involved with the project, check out [our page
3636

3737
## Navigating the Codebase
3838

39-
[builder-api](/builder-api) and [builder-frontend](/builder-frontend) comprise the web app used to build eligibility screeners.
40-
41-
[screener-api](/screener-api) and [screener-frontend](/screener-frontend) comprise the screener experience that the builder app deploys.
39+
[builder-api](/builder-api) and [builder-frontend](/builder-frontend) comprise the web app used to build eligibility screeners, and the screener experience that the builder app deploys.
4240

4341
[library-api](/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.
4442

benefit-decision-toolkit.code-workspace

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@
44
"name": "🏗️ Builder API",
55
"path": "./builder-api"
66
},
7-
{
8-
"name": "🔍 Screener API",
9-
"path": "./screener-api"
10-
},
117
{
128
"name": "📚 Library API",
139
"path": "./library-api"
@@ -16,10 +12,6 @@
1612
"name": "🎨 Builder Frontend",
1713
"path": "./builder-frontend"
1814
},
19-
{
20-
"name": "📱 Screener Frontend",
21-
"path": "./screener-frontend"
22-
},
2315
{
2416
"name": "📋 Project Root",
2517
"path": "."
@@ -101,7 +93,7 @@
10193
{
10294
"label": "🔨 Build All APIs",
10395
"type": "shell",
104-
"command": "for dir in builder-api screener-api library-api; do echo \"Building $dir...\"; cd $dir && mvn clean package -DskipTests && cd ..; done",
96+
"command": "for dir in builder-api library-api; do echo \"Building $dir...\"; cd $dir && mvn clean package -DskipTests && cd ..; done",
10597
"group": "build",
10698
"presentation": {
10799
"echo": true,
@@ -111,7 +103,7 @@
111103
{
112104
"label": "📦 Install All Frontend Dependencies",
113105
"type": "shell",
114-
"command": "cd builder-frontend && npm install && cd ../screener-frontend && npm install",
106+
"command": "cd builder-frontend && npm install",
115107
"group": "build"
116108
}
117109
]

bin/setup

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,6 @@ else
4949
fi
5050
cd ..
5151

52-
print_status "Installing screener-frontend dependencies..."
53-
cd screener-frontend
54-
if [ -f "package.json" ]; then
55-
npm install
56-
print_success "screener-frontend dependencies installed"
57-
else
58-
print_error "package.json not found in screener-frontend"
59-
exit 1
60-
fi
61-
cd ..
62-
6352
print_status "Finished installing frontend dependencies."
6453

6554
print_status "📦 Installing backend dependencies..."
@@ -82,12 +71,6 @@ mvn clean package -DskipTests
8271
print_success "builder-api dependencies installed"
8372
cd ..
8473

85-
print_status "Installing screener-api dependencies..."
86-
cd screener-api
87-
mvn clean package
88-
print_success "screener-api dependencies installed"
89-
cd ..
90-
9174
print_status "Finished installing backend dependencies."
9275

9376
echo ""
@@ -96,7 +79,7 @@ print_status "Setting up environment files..."
9679

9780
bin/ensure-root-env-file
9881

99-
SERVICES=("builder-frontend" "screener-frontend" "builder-api" "screener-api" "library-api")
82+
SERVICES=("builder-frontend" "builder-api" "library-api")
10083
for service in "${SERVICES[@]}"; do
10184
if [ -f "$service/.env.example" ] && [ ! -f "$service/.env" ]; then
10285
cp "$service/.env.example" "$service/.env"

0 commit comments

Comments
 (0)