Explore the live demo · Read the portfolio case study · Run locally · Tests
RoleImpact is a deterministic access-change impact simulator that shows which business workflows would break before an employee is offboarded, a role is revoked, or access is reassigned.
Access reviews usually stop at the technical layer: which user has which role and which permissions that role grants. The business consequence is harder to see. Removing one apparently narrow permission can leave nobody able to approve a payment, release a deployment, or complete another critical process.
RoleImpact connects the full evidence path:
Employee → Role → Permission → Capability → Workflow step → Business workflow
Before a change is made, the impact engine evaluates that graph, identifies blocked or degraded workflows, explains exactly why they are affected, and tests whether a proposed replacement restores continuity without damaging the replacement's existing responsibilities.
Northstar Medical Supplies depends on a three-step Vendor Payment Run: validate the supplier invoice, approve the payment, and release the payment to the bank. Daniel Brooks is the only employee holding the critical Bank Payment Releaser role.
The demo asks a practical question: what happens if Daniel loses that role?
- RoleImpact removes the assignment in a simulation, without changing the organization baseline.
- The graph traces the lost
payment.releasepermission to the Release bank payment capability and workflow step. - The Vendor Payment Run becomes blocked because no eligible actor remains.
- RoleImpact recommends Nia Kapoor as the safest replacement because she is active, works in Treasury Operations, already has Bank Portal access, and does not create a new continuity gap elsewhere.
- A mitigation preview assigns the role to Nia and shows the workflow restored before the real access change is made.
This scenario demonstrates the product's core promise: move from “who has access?” to “what breaks if that access changes, and how do we fix it safely?”
The repository contains a deployed portfolio MVP with a complete simulation and mitigation vertical slice:
- React and TypeScript frontend
- Spring Boot and Java 21 API
- PostgreSQL 17 through Docker Compose
- Versioned, immutable
OrganizationSnapshotassembly - Organization dashboard API and UI
- Deterministic revoke-role impact analysis with stable result hashing
- Ranked, evidence-backed replacement recommendations
- Persisted parent/child mitigation simulations with idempotent replay
- Stateless impact and mitigation previews for user-built draft organizations
- Stable public organization IDs and refresh-safe links for reopening editable organization maps, inventories, and impact screens
- Draft recommendations that verify eligibility and workflow recovery after the proposed role assignment, even when the candidate does not already have the access that the new role would grant
- Before-and-after workflow comparison in the UI
- Interactive impact map where teams, members, roles, responsibilities, and workflows reveal their complete connected paths and contextual test actions
- Workflow-focused and full-organization views with removed, blocked, degraded, candidate, and restored relationship states
- Direct member selection for inspecting and testing recommended, alternative, or excluded replacements without changing the organization baseline
- Selectable graph nodes, original/mitigation toggling, and an accessible text representation of every relationship path
- Flyway-managed relational schema with published Northstar demo data
- Backend unit and real-PostgreSQL integration tests
- Frontend unit tests
The public version 1 snapshot contains six employees, two teams, four roles, two applications, four permissions, three capabilities, and the critical Vendor Payment Run. It is intentionally read-only so every visitor receives the same reproducible simulation. The older Harborline seed remains available for regression coverage but is no longer presented as the product demo.
- Java 21
- Node.js LTS and npm
- Docker Desktop
- Git
From the repository root, start PostgreSQL:
docker compose up -dIn a second terminal, start the API:
\.\backend\mvnw.cmd spring-boot:run -Dspring-boot.run.profiles=devWith the dev profile active, Boot UI is available at http://localhost:8080/bootui.
In a third terminal, install and start the frontend:
npm --prefix frontend install
npm --prefix frontend run devOpen http://localhost:5173. Choose Explore the live demo, inspect the Northstar dependency graph, test Daniel Brooks's access removal, and verify Nia Kapoor's mitigation to see the restored green relationship graph.
Editable organizations can be reopened from the homepage using their public ID with or without the displayed hyphen. Anyone with an organization ID or link can edit that organization in this portfolio MVP, so do not enter confidential or personal data.
/exampleopens the read-only, graph-first Northstar continuity demo./organizations/{publicCode}/mapopens an editable organization map./organizations/{publicCode}/inventoryopens its detailed inventory./organizations/{publicCode}/impactopens a fresh impact-testing screen.
Refreshing any of these routes keeps the same organization and screen. Impact
and mitigation results are intentionally temporary, so refreshing the impact
route clears the previous result while preserving the selected screen. Vite's
development and preview servers provide the required history fallback locally.
Production hosting must rewrite non-asset, non-API routes to
frontend/index.html so pasted organization links load correctly.
GET /api/v1/dashboardloads the default Northstar Medical Supplies dashboard.GET /api/v1/dashboard?organization={slug}loads another organization or returns404when the slug does not exist.POST /api/v1/simulationsruns and saves a revoke-role simulation.GET /api/v1/simulations/{simulationId}retrieves an immutable saved result.POST /api/v1/simulations/{simulationId}/branchestests and saves a recommendation as a child mitigation simulation.POST /api/v1/workspacescreates a blank editable organization and returns its stable public code.GET /api/v1/workspaces/by-code/{publicCode}resolves an editable organization. The Harborline example is intentionally excluded.GET /api/v1/workspaces/{workspaceId}/catalogloads the editable catalog after the public code has been resolved.POST /api/v1/workspaces/{workspaceId}/impact-previewstests a role removal against the current draft without changing it.POST /api/v1/workspaces/{workspaceId}/impact-previews/mitigationsverifies a user-selected replacement against the same draft snapshot and returns the original and mitigated outcomes for comparison.GET /api/v1/healthreports API availability.
.\backend\mvnw.cmd test
npm --prefix frontend test
npm --prefix frontend run lint
npm --prefix frontend run buildBackend integration tests use Testcontainers and therefore require Docker Desktop to be running.
The checked-in defaults are safe for local development. Copy .env.example to
.env only if you need to override them. Never commit .env or real database
credentials.