Problem
A client’s approvals routed differently by request and moved through several stages, under rules like “everyone must approve” or “any one approver is enough”. The existing application had to be rebuilt to meet those requirements.
Constraints
- Multiple routes and multiple stages per request.
- Data lives in SharePoint lists, which bring scaling limits of their own.
- Built alongside Power Automate engineers working on the same process.
Decisions
- Domain models and an explicit workflow state machine: a request is always in exactly one named state.
- A decision-handler table — all approve, one approves, majority — so approval rules are data the workflow looks up, not branches scattered through it.
- Service seams between the interface, the workflow and data access.
- Batched data access, treating SharePoint-list scaling as an architectural concern from the start.
Outcome
Built from scratch (32 commits) as lead SPFx developer: a React and TypeScript front end on an Azure Functions back end.