📘 Part of the AD490 Capstone Project
Project hub / documentation: https://github.com/JesseCaddell/AD490-Capstone
This repository contains the backend API and GitHub App integration layer for the AD490 Workflow Automator.
- GitHub App webhook receiver + signature verification
- Normalization layer
- Deterministic rules engine (stub actions)
- Workflow Builder MVP (sequential execution, repo-scoped)
- Structured execution logging
- JSON → YAML workflow generation
- Commit workflow files via GitHub API
- Octokit-backed real action execution
- Persistent database storage
- Audit log persistence
The current MVP includes:
- GitHub webhook receiver (
/webhooks/github) - Signature verification
- Normalization layer →
RuleContext - Rules engine (deterministic evaluation)
- Workflow Builder API:
- Repository-scoped workflows
- Single-trigger workflows
- Sequential step execution
- Stub action execution (no live GitHub mutations)
- In-memory storage adapter (replaceable)
The MVP prioritizes:
- Determinism
- Strict scoping
- Clean architectural boundaries
- Safe demo execution
- Test coverage across engine + workflow layers
All architectural and behavioral contracts are documented in /docs.
See:
docs/architecture.mddocs/api-contract.mddocs/workflow-builder-mvp.mddocs/rules-engine.mddocs/normalization.mddocs/storage.md
These documents define:
- System architecture boundaries
- Workflow shape + constraints
- Supported trigger events
- Supported actions (stub vs real)
- Deterministic execution model
- Error behavior
- Explicit MVP limitations
- Node.js
- TypeScript
- Express
- Native Node test runner
- In-memory storage adapter (MVP)
Future milestones may introduce:
- Octokit (live GitHub mutations)
- Persistent database storage
- Authentication / RBAC
- Real workflow orchestration
npm install
npm run devServer default:
http://localhost:3001
Health check:
curl http://localhost:3001/healthExpected response:
{ "ok": true }To receive real GitHub webhook traffic locally:
ngrok http 3001Use the HTTPS URL provided.
Webhook URL:
https://<your-ngrok-url>/webhooks/github
Content type:
application/json
Webhook secret must match:
GITHUB_WEBHOOK_SECRET
in your .env file.
GitHub App → Advanced → Webhooks → Redeliver
Expected:
- GitHub returns 200
- API logs structured execution output
- Deterministic rule/workflow behavior
- Webhook route requires raw body access for signature verification.
- JSON middleware must remain scoped to non-webhook routes.
- In-memory storage does not persist across server restarts.
- Workflow actions are stubbed in the MVP (no live GitHub mutations).
- Project hub: https://github.com/JesseCaddell/AD490-Capstone
- Frontend UI: https://github.com/JesseCaddell/ad490-workflow-automator-web